local-name (función de XQuery)
Devuelve la parte local del nombre de $arg como un xs:string que será la cadena de longitud cero o tendrá la forma léxica de un xs:NCName. Si no se proporciona el argumento, el valor predeterminado será el nodo de contexto.
Sintaxis
fn:local-name() as xs:string
fn:local-name($arg as node()?) as xs:string
Argumentos
- $arg
Nombre del nodo cuya parte de nombre local se recuperará.
Notas
En SQL Server, fn:local-name() sin un argumento sólo se puede utilizar en el contexto de un predicado dependiente del contexto. En concreto, sólo se puede utilizar entre corchetes ([ ]).
Si se proporciona el argumento y es la secuencia vacía, la función devolverá la cadena de longitud cero.
Si el nodo de destino no tiene nombre porque es un nodo de documento, un comentario o un nodo de texto, la función devolverá la cadena de longitud cero.
Ejemplos
En este tema se ofrecen ejemplos de consultas XQuery con instancias XML almacenadas en varias columnas de tipo xml en la base de datos AdventureWorks. Para obtener información general de cada una de estas columnas, consulte Representación de tipo de datos xml en la base de datos AdventureWorks.
A. Recuperar el nombre local de un nodo específico
La consulta siguiente se especifica en una instancia XML sin tipo. La expresión de consulta, local-name(/ROOT[1]), recupera la parte de nombre local del nodo especificado.
declare @x xml
set @x='<ROOT><a>111</a></ROOT>'
SELECT @x.query('local-name(/ROOT[1])')
-- result = ROOT
La consulta siguiente se especifica en la columna Instructions, una columna xml con tipo, de la tabla ProductModel. La expresión, local-name(/AWMI:root[1]/AWMI:Location[1]), devuelve el nombre local, Location, del nodo 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. Usar local-name sin argumento en un predicado
La consulta siguiente se especifica en la columna Instructions, una columna xml con tipo, de la tabla ProductModel. La expresión devuelve todos los elementos secundarios del elemento <root> cuya parte de nombre local de QName es "Location". La función local-name() se especifica en el predicado y no tiene ningún argumento. La función utiliza el nodo de contexto.
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
La consulta devuelve todos los elementos secundarios <Location> del elemento <root>.