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


Функция local-name (XQuery)

Возвращает локальную часть имени $arg типа xs:string, которая является либо строкой нулевой длины, либо имеет лексическую форму xs:NCName. Если аргумент не указан, по умолчанию используется узел контекста.

Синтаксис

fn:local-name() as xs:string
fn:local-name($arg as node()?) as xs:string

Аргументы

  • $arg
    Имя узла, локальную часть имени которого нужно получить.

Замечания

  • В SQL Server функцию fn:local-name() можно использовать без аргумента только в контекстно-зависимом предикате. Точнее, ее использование возможно только внутри квадратных скобок . ([ ]).

  • Если аргумент указан и представляет собой пустую последовательность, функция возвращает строку нулевой длины.

  • Если целевой узел не имеет имени (например, узел документа, комментарий или текстовый узел), функция возвращает строку нулевой длины.

Примеры

В этом разделе приведены примеры запросов XQuery к экземплярам XML, которые хранятся в различных столбцах типа xml в базе данных AdventureWorks.

А.Получение локального имени конкретного узла

Следующий запрос обращается к нетипизированному экземпляру XML. Выражение запроса local-name(/ROOT[1]) получает локальную часть имени указанного узла.

declare @x xml
set @x='<ROOT><a>111</a></ROOT>'
SELECT @x.query('local-name(/ROOT[1])')
-- result = ROOT

Следующий запрос обращается к столбцу «Instructions» типа xml таблицы ProductModel. Выражение local-name(/AWMI:root[1]/AWMI:Location[1]) возвращает локальное имя Location указанного узла.

SELECT Instructions.query('
declare namespace AWMI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions" ;
     local-name(/AWMI:root[1]/AWMI:Location[1])') as Result
FROM Production.ProductModel
WHERE ProductModelID=7
-- result = Location

Б.Использование локального имени без аргумента в предикате

Следующий запрос обращается к столбцу «Instructions» типа xml таблицы ProductModel. Выражение возвращает все дочерние элементы, узла <root>, у которого локальная часть имени QName равна «Location». Функция local-name() указана в предикате и не имеет аргументов. Функция использует узел контекста.

SELECT Instructions.query('
declare namespace AWMI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions" ;
  /AWMI:root//*[local-name() = "Location"]') as Result
FROM Production.ProductModel
WHERE ProductModelID=7

Запрос возвращает все дочерние элементы <Location> узла <root>.

См. также

Справочник

Функции на узлах

Основные понятия

Функция namespace-uri (XQuery)