Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения:SQL Server
Все примеры в выражениях пути (XQuery) используют небрежимированный синтаксис для выражений путей. включающий в себя имя оси и элемент проверки узла, которые разделены двойным двоеточием, за которыми могут следовать квалификаторы шага.
Например:
child::ProductDescription[attribute::ProductModelID=19]
Запрос XQuery поддерживает в выражениях пути следующие сокращения.
childОсь — это ось по умолчанию. Таким образом,child::ось может быть опущена из шага в выражении. Например,/child::ProductDescription/child::Summaryможет быть записано как/ProductDescription/Summary.attributeОсь может быть сокращена как @. Например,/child::ProductDescription[attribute::ProductModelID=10]может быть записано как/ProductDescription[@ProductModelID=10].Может
/descendant-or-self::node()/быть сокращено как //. Например,/descendant-or-self::node()/child::act:telephoneNumberможет быть записано как//act:telephoneNumber.Предыдущий запрос получает все телефонные номера, хранящиеся в столбце AdditionalContactInfo таблицы Contact. Схема для AdditionalContactInfo определяется таким образом, что <элемент telephoneNumber> может отображаться в любом месте документа. Поэтому для получения всех телефонных номеров необходимо просмотреть каждый узел в документе. Поиск начинается от корня документа и проходит по всем узлам, являющимся его потомками.
Следующий запрос получает все контактные телефонные номера для указанного клиента:
SELECT AdditionalContactInfo.query(' declare namespace act="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ContactTypes"; declare namespace crm="https://schemas.adventure-works.com/Contact/Record"; declare namespace ci="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ContactInfo"; /descendant-or-self::node()/child::act:telephoneNumber ') AS result FROM Person.Contact WHERE ContactID = 1;Если выражение пути заменяется сокращенным синтаксическим выражением,
//act:telephoneNumberобеспечивает тот же самый результат.На
self::node()шаге можно сокращено до одной точки (.). Однако точка не эквивалентна или взаимозаменяема.self::node()Например, в следующем запросе точка представляет значение, а не узел:
("abc", "cde")[. > "b"]На
parent::node()шаге можно сократить до двойной точки (..).