Язык XML


Пути адресации


Хотя пути адресации (location path) и не являются самой главной грамматической конструкцией языка ( - это частный случай ), они имеют самое большое значение, а потому будут описаны в первую очередь.

Каждый путь адресации может быть описан с помощью простого, но довольно громоздкого синтаксиса. Существует также ряд синтаксических аббревиатур для краткого обозначения основных случаев. Сперва в этой главе с помощью развернутого синтаксиса будет дано разъяснение семантики путей адресации. Затем будет показано, каким образом сокращенный синтаксис приводится к развернутому (см. ).

Ниже приводятся некоторые примеры путей адресации, использующих развернутый синтаксис:

  • child::para находит элемент para, являющийся непосредственным потомком узла контекста

  • child::* собирает все элементы, являющиеся непосредственными потомками узла контекста

  • child::text() собирает все текстовые узлы, являющиеся непосредственными потомками узла контекста

  • child::node() собирает все непосредственные потомки текущего узла контекста независимо от типа этих узлов

  • attribute::name в текущем узле контекста находит атрибут name

  • attribute::* собирает все атрибуты в текущем узле контекста

  • descendant::para среди потомков узла контекста находит элементы para

  • ancestor::div собирает все предки div текущего узла контекста

  • ancestor-or-self::div собирает предки div текущего узла контекста и также, если сам узел контекста тоже является элементом div, включает в набор и его

  • descendant-or-self::para среди потомков узла контекста выбирает элементы para а также, если сам узел контекста является элементом para, то включает в набор и его

  • self::para выбирает текущий узел контекста, если это элемент para, либо в противном случае не выбирает ничего

  • child::chapter/descendant::para выбирает элементы para среди потомков элемента chapter, являющегося непосредственным потомком текущего узла контекста

  • child::*/child::para собирает все para, являющиеся потомками текущего узла контекста во втором поколении

  • / находит корень документа (который всегда является родителем элемента документа)

  • /descendant::para в документе, которому принадлежит узел контекста, находит все элементы para




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