Задание проверки узла в пути доступа (SQLXML 4.0)
Проверка узла задает тип узла, выбранного на шаге доступа. Каждая ось (child
, parent
, attribute
или self
) имеет тип узла участника. Для оси attribute
типом основного узла является <атрибут>. Для осей parent
, child
и self
типом основного узла является <element>.
Примечание
Шаблон проверки узла * (например child::*
) не поддерживается.
Тест узла: пример 1
Путь к child::Customer
расположению выбирает дочерние <элементы customer> узла контекста.
В следующем примере элемент child
является осью, а Customer
является проверкой узла. Тип основного узла для оси child
— element<>. Таким образом, проверка узла имеет значение TRUE, если <узел Customer> является <узлом элемента> . Если узел контекста не <имеет дочерних элементов Customer> , возвращается пустой набор узлов.
Тест узла: пример 2
Путь к attribute::CustomerID
расположению выбирает атрибут CustomerID узла контекста.
В этом примере элемент attribute
является осью, а CustomerID
является проверкой узла. Тип основного узла оси attribute
— <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()
можно сократить до двух точек (..).