local-name-Funktion (XQuery)
Gibt den lokalen Anteil des Namens von $arg als xs:string zurück. Dabei handelt es sich um eine Zeichenfolge mit der Länge null oder die lexikalische Form eines xs:NCName-Elements. Wenn das Argument nicht bereitgestellt wird, ist der Standardwert der Kontextknoten.
Syntax
fn:local-name() as xs:string
fn:local-name($arg as node()?) as xs:string
Argumente
- $arg
Knotenname, dessen lokaler Namensanteil abgerufen wird.
Hinweise
- In SQL Server kann fn:local-name() ohne Argument nur im Kontext eines kontextabhängigen Prädikats verwendet werden. Insbesondere kann die Funktion nur innerhalb von Klammern (
[ ]
) verwendet werden. - Wenn das Argument angegeben wird und wenn es die leere Sequenz ist, gibt die Funktion die Zeichenfolge mit der Länge null zurück.
- Wenn der Zielknoten keinen Namen besitzt, weil es sich um einen Dokumentknoten, einen Kommentar oder einen Textknoten handelt, gibt die Funktion die Zeichenfolge mit der Länge null zurück.
Beispiele:
Diese Thema stellt XQuery-Beispiele für XML-Instanzen bereit, die in verschiedenen Spalten des xml-Typs in der AdventureWorks-Datenbank gespeichert werden. Einen Überblick über diese Spalten bietet Darstellung des xml-Datentyps in der AdventureWorks-Datenbank.
A. Abrufen des lokalen Namens eines bestimmten Knotens
Die folgende Abfrage wird für eine nicht typisierte XML-Instanz angegeben. Der Abfrageausdruck local-name(/ROOT[1])
ruft den lokalen Namensanteil des angegebenen Knotens ab.
declare @x xml
set @x='<ROOT><a>111</a></ROOT>'
SELECT @x.query('local-name(/ROOT[1])')
-- result = ROOT
Die folgende Abfrage wird für die Instructions-Spalte, eine typisierte xml-Spalte, der ProductModel-Tabelle angegeben. Der Ausdruck local-name(/AWMI:root[1]/AWMI:Location[1])
gibt den lokalen Namen (Location
) des angegebenen Knotens zurück.
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. Verwenden von local-name ohne Argument in einem Prädikat
Die folgende Abfrage wird für die Instructions-Spalte, eine typisierte xml-Spalte, der ProductModel-Tabelle angegeben. Der Ausdruck gibt alle untergeordneten Elemente des <root
>-Elements zurück, dessen lokaler Namensanteil von QName "Location" lautet. Die local-name()-Funktion wird im Prädikat angegeben und besitzt keine Argumente. Der Kontextknoten wird von der Funktion verwendet.
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
Die Abfrage gibt alle untergeordneten <Location
>-Elemente des <root
>-Elements zurück.
Siehe auch
Verweis
Konzepte
namespace-uri-Funktion (XQuery)