Язык XML


Сокращенный синтаксис - часть 2


  • chapter[title] находит непосредственный потомок chapter текущего узла контекста, который имеет один или несколько непосредственных потомков title

  • employee[@secretary and @assistant] находит все непосредственные потомки employee данного узла контекста, которые имеют оба атрибута secretary и assistant

    Самой важной является аббревиатура child::, которую при записи шага адресации всегда можно опустить. Фактически, child используется как ось по умолчанию. Например, путь адресации div/para становится сокращением для child::div/child::para.

    Аналогичные аббревиатуры имеются и для атрибутов: attribute:: может быть сокращен до @. Например, путь адресации para[@type="warning"] является сокращением для child::para[attribute::type="warning"], а следовательно, находит непосредственные потомки para, имеющие атрибут type, значение которого равно warning.

    // является сокращением для /descendant-or-self::node()/. Например, //para - это сокращение для /descendant-or-self::node()/child::para, а потому будет находить в документе все элементы para (путь //para найдет элемент para, даже если последний является элементом документа, поскольку узел элемента документа является непосредственным потомком корневого узла). div//para - это сокращение для div/descendant-or-self::node()/child::para, а потому находит все потомки para для непосредственного потомка div. Замечание: Путь адресации //para[1] имеет иное значение, чем путь адресации /descendant::para[1]. Последний отыскивает первый элемент-потомок para, а предыдущий находит все элементы-потомки para, являющиеся для своего родителя первым непосредственным потомком para.

    Шаг адресации . является сокращением для self::node(). Особенно эта запись полезна в сочетании с //. Например, путь адресации .//para является сокращением для self::node()/descendant-or-self::node()/child::para

    а потому будет находить все элементы para, являющиеся потомками текущего узла контекста.

    Точно так же, шаг адресации .. является сокращением для parent::node(). Например, ../title - это сокращенная запись для parent::node()/child::title, а потому для родителя текущего узла контекста будет находить непосредственные потомки title.




    - Начало -  - Назад -  - Вперед -