Fonctions sur les nœuds : local-name
S’applique à :SQL Server
Retourne la partie locale du nom de $arg sous la forme d’une chaîne xs:string qui sera la chaîne de longueur nulle ou aura la forme lexicale d’un xs:NCName. Si l'argument n'est pas spécifié, la valeur par défaut est le nœud du contexte.
Syntaxe
fn:local-name() as xs:string
fn:local-name($arg as node()?) as xs:string
Arguments
$arg
Nom du nœud dont la partie local-name sera extraite.
Remarques
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 pas de nom car il s'agit d'un nœud de document, de commentaire ou de texte, la fonction retourne la chaîne de longueur zéro.
Exemples
Cette rubrique 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 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. Utilisation de local-name sans argument dans un prédicat
La requête suivante est spécifiée dans la colonne Instructions, colonne xml typée, de la table ProductModel. L’expression retourne tous les enfants d’élément de l’élément <root
> dont la partie de nom local du QName est « Location ». La fonction local-name() est spécifiée dans le prédicat et elle 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
> .