Fonctions sur les nœuds - local-name

 

S’applique à : SQL Server

THIS TOPIC APPLIES TO: yesSQL Server (starting with 2012)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Retourne la partie locale du nom de $arg en tant que xs : String qui sera la chaîne de longueur nulle ou aura la forme lexicale de xs : NCName. Si l'argument n'est pas spécifié, la valeur par défaut est le nœud du contexte.

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

$arg
Nom du nœud dont la partie local-name sera extraite.

  • Dans SQL Server, fn :local-name() sans argument peut uniquement être utilisé 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.

Cette rubrique fournit des exemples de XQuery relatifs à des instances XML stockés dans différentes xml colonnes de type dans la base de données AdventureWorks.

A. 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="http://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 sur la colonne Instructions, tapée xml colonne, de la table ProductModel. L'expression retourne tous les enfants de l'élément <root> dont la partie locale de QName est « Location ». Le dépourvue fonction est spécifiée dans le prédicat et il n’a aucun argument, le nœud de contexte est utilisé par la fonction.

SELECT Instructions.query('  
declare namespace AWMI="http://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 enfants <Location> de l'élément <root>.

Fonctions sur les nœuds
Fonction namespace-uri (XQuery)

Ajouts de la communauté

AJOUTER
Afficher: