Funções em Nós – local-name
Aplica-se a:SQL Server
Retorna a parte local do nome de $arg como uma xs:string que será a cadeia de caracteres de comprimento zero ou terá a forma lexical 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
Em SQL Server, fn:local-name() sem um argumento só pode ser usado 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 XQuery em instâncias XML armazenadas em várias colunas de 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 na coluna Instruções, coluna xml digitada, da tabela ProductModel. A expressão retorna todos os filhos do <root
> elemento cujo nome local parte 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 <Location
> filhos do <root
> elemento.