Freigeben über


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 finden Sie unter 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.