Поделиться через


Указание теста узла в пути расположения (SQLXML 4.0)

Тест узла указывает тип узла, выбранный на шаге расположения. Каждая ось (child, илиattributeparentself) имеет тип основного узла. Для оси тип основного attribute узла является <атрибутом>. parentДля осей и child осей selfосновной узел является <элементом>.

Замечание

Тест узла подстановочных знаков * (например, child::*) не поддерживается.

Тест узла: пример 1

Путь child::Customer расположения выбирает <дочерние элементы Customer> узла контекста.

В этом примере child используется ось и Customer является тестом узла. Основной тип узла для child оси — <элемент>. Поэтому тест узла имеет значение TRUE, если <узел Customer> является <узлом элемента> . Если у узла контекста нет <дочерних элементов customer> , возвращается пустой набор узлов.

Тест узла: пример 2

Путь attribute::CustomerID к расположению выбирает атрибут CustomerID узла контекста.

В этом примере attribute используется ось и CustomerID является тестом узла. Основной attribute тип узла оси — атрибут<>. Поэтому тест узла имеет значение TRUE, если CustomerID является <узлом атрибута> . Если у узла контекста нет CustomerID, возвращается пустой набор узлов.

Замечание

В этой реализации XPath, если шаг расположения ссылается на <элемент> или <тип атрибута> , который не объявлен в схеме, создается ошибка. Это отличается от реализации XPath в MSXML, которая возвращает пустой набор узлов.

Сокращенный синтаксис для осей

Поддерживается следующий сокращенный синтаксис для пути расположения:

  • attribute:: может быть сокращено до @.

    Путь Customer[@CustomerID="ALFKI"] к расположению совпадает с child::Customer[attribute::CustomerID="ALFKI"].

  • child:: может быть опущен из шага расположения.

    Таким образом, child это ось по умолчанию. Путь Customer/Order к расположению совпадает с child::Customer/child::Order.

  • self::node() может быть сокращено до одного периода (.) и parent::node() может быть сокращено до двух периодов (.).