Função local-name (XQuery)
Retorna a parte local do nome de $arg como xs:string que ou será a cadeia de caracteres de comprimento zero ou terá a forma léxica de um xs:NCName. Se o argumento não for fornecido, o padrão será o nó de contexto.
Sintaxe
fn:local-name() as xs:string
fn:local-name($arg as node()?) as xs:string
Argumentos
- $arg
Nome de nó cuja parte local-name será recuperada.
Comentários
No SQL Server, o fn:local-name() sem um argumento pode ser usado só no contexto de um predicado dependente de contexto. Mais precisamente, ele só pode ser usado entre parênteses ([ ]).
Se o argumento for fornecido e a sequência for vazia, a função retornará a cadeia de caracteres de comprimento zero.
Se o nó designado não tiver nome, por ser um nó de documento, um comentário ou um nó de texto, a função retornará a cadeia de caracteres de comprimento zero.
Exemplos
Este tópico fornece exemplos de XQuery em instâncias XML armazenadas em várias colunas do tipo xml no banco de dados AdventureWorks.
A.Recuperar o nome local de um nó específico
A consulta a seguir é especificada em uma instância XML não digitada. A expressão de consulta, local-name(/ROOT[1]), recupera a parte do nome local do nó especificado.
declare @x xml
set @x='<ROOT><a>111</a></ROOT>'
SELECT @x.query('local-name(/ROOT[1])')
-- result = ROOT
A consulta a seguir é especificada contra a coluna Instructions, uma coluna xml digitada, da tabela ProductModel. A expressão, local-name(/AWMI:root[1]/AWMI:Location[1]), retorna o nome local, Location, do nó especificado.
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
B.Usando o local-name sem argumento em um predicado
A consulta a seguir é especificada contra a coluna Instructions, uma coluna xml digitada, da tabela ProductModel. A expressão retorna todos os filhos do elemento do elemento <root> cuja parte do nome local do QName é "Location". A função local-name() é especificada no predicado e não tem argumentos. O nó de contexto é usado pela função.
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
A consulta retorna todos os filhos do elemento <Location> do elemento <root>.