Partager via


Fonctions sur les nœuds - nom local

S'applique à :SQL Server

Renvoie la partie locale du nom de $arg sous la forme d’une xs:string chaîne de longueur nulle ou qui a la forme lexicale d’un xs:NCName. Si l’argument n’est pas fourni, la valeur par défaut est le nœud de contexte.

Syntaxe

fn:local-name() as xs:string
fn:local-name($arg as node()?) as xs:string

Arguments

$arg

Nom du nœud dont le composant nom local est récupéré.

Notes

  • Dans SQL Server, fn:local-name() sans argument ne peut être utilisé que dans le contexte d’un prédicat dépendant du contexte. Autrement dit, elle ne peut être utilisée qu'à l'intérieur de crochets ([ ]).

  • Si l'argument est fourni et qu'il correspond à la séquence vide, la fonction retourne la chaîne de longueur zéro.

  • Si le nœud cible n’a aucun nom, car il s’agit d’un nœud de document, d’un commentaire ou d’un nœud de texte, la fonction retourne la chaîne de longueur nulle.

Exemples

Cet article fournit des exemples XQuery sur des instances XML stockées dans différentes colonnes de type XML dans la base de données AdventureWorks.

R : Extraction du nom local d'un nœud spécifique

La requête suivante est spécifiée sur une instance XML non typée. L'expression de requête, local-name(/ROOT[1]), extrait la partie locale du nom du nœud spécifié.

DECLARE @x AS XML;

SET @x = '<ROOT><a>111</a></ROOT>';

SELECT @x.query('local-name(/ROOT[1])');
-- result = ROOT

La requête suivante est définie sur la colonne Instructions, une colonne xml typée, de la table ProductModel. L'expression local-name(/AWMI:root[1]/AWMI:Location[1]) retourne le nom local, Location, du nœud spécifié.

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. Utiliser le nom local sans argument dans un prédicat

La requête suivante est spécifiée par rapport à la colonne Instructions, colonne xml typée, de la table ProductModel. L’expression retourne tous les enfants d’élément de l’élément <>rootdont le nom local fait partie du QName est "Location". La local-name() fonction est spécifiée dans le prédicat et n’a aucun argument Le nœud de contexte est utilisé par la fonction.

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 requête retourne tous les <Location> enfants d’élément de l’élément <root> .