Spécification de fonctions de conversion explicite dans les requêtes XPath (SQLXML 4.0)
S’applique à : SQL Server Azure SQL Database
Les exemples suivants montrent comment les fonctions de conversion explicite sont spécifiées dans les requêtes XPath. Les requêtes XPath de ces exemples sont spécifiées par rapport au schéma de mappage contenu dans SampleSchema1.xml. Pour plus d’informations sur cet exemple de schéma, consultez Exemple de schéma XSD annoté pour les exemples XPath (SQLXML 4.0).
Exemples
R. Utiliser la fonction de conversion explicite number()
La fonction number() convertit un argument en nombre.
En supposant que la valeur de ContactID n’est pas numérique, la requête suivante convertit ContactID en nombre et la compare à la valeur 4. La requête retourne ensuite tous les <enfants d’élément Employee> du nœud de contexte avec l’attribut ContactID dont la valeur numérique est 4 :
/child::Contact[number(attribute::ContactID)= 4]
Un raccourci vers l’axe d’attribut (@) peut être spécifié et, étant donné que l’axe enfant est la valeur par défaut, il peut être omis à partir de la requête :
/Contact[number(@ContactID) = 4]
En termes relationnels, la requête retourne un employé avec un ContactID de 4.
Pour tester la requête XPath par rapport au schéma de mappage
Copiez l’exemple de code de schéma et collez-le dans un fichier texte. Enregistrez ce fichier sous le nom SampleSchema1.xml.
Créez le modèle suivant (ExplicitConversionA.xml) et enregistrez-le dans le même répertoire que SampleSchema1.xml.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="SampleSchema1.xml"> /Contact[number(@ContactID)=4] </sql:xpath-query> </ROOT>
Le chemin d'accès au répertoire spécifié pour le schéma de mappage (SampleSchema1.xml) varie en fonction du répertoire où le modèle est enregistré. Vous pouvez également spécifier un chemin d'accès absolu, par exemple :
mapping-schema="C:\MyDir\SampleSchema1.xml"
Créez et utilisez le script de test SQLXML 4.0 (Sqlxml4test.vbs) pour exécuter le modèle.
Pour plus d'informations, voir Utilisation d'ADO pour exécuter des requêtes SQLXML 4.0.
Le jeu de résultats pour cette exécution de modèle est :
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Contact ContactID="4" LastName="Acevedo" FirstName="Humberto" Title="Sr." />
</ROOT>
B. Utiliser la fonction de conversion explicite string()
La fonction string() convertit un argument en chaîne.
La requête suivante convertit ContactID en chaîne et la compare à la valeur de chaîne « 4 ». La requête retourne tous les <enfants d’élément Employee> du nœud de contexte avec un ContactID avec une valeur de chaîne « 4 » :
/child::Contact[string(attribute::ContactID)="4"]
Un raccourci vers l’axe d’attribut (@) peut être spécifié et, étant donné que l’axe enfant est la valeur par défaut, il peut être omis à partir de la requête :
/Contact[string(@ContactID)="4"]
Fonctionnellement, cette requête retourne les mêmes résultats que l'exemple de requête précédent, bien que l'évaluation soit effectuée contre une valeur de chaîne et non la valeur numérique (autrement dit, le nombre 4).
Pour tester la requête XPath par rapport au schéma de mappage
Copiez l’exemple de code de schéma et collez-le dans un fichier texte. Enregistrez ce fichier sous le nom SampleSchema1.xml.
Créez le modèle suivant (ExplicitConversionB.xml) et enregistrez-le dans le même répertoire que SampleSchema1.xml.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="SampleSchema1.xml"> Contact[string(@ContactID)="4"] </sql:xpath-query> </ROOT>
Le chemin d'accès au répertoire spécifié pour le schéma de mappage (SampleSchema1.xml) varie en fonction du répertoire où le modèle est enregistré. Vous pouvez également spécifier un chemin d'accès absolu, par exemple :
mapping-schema="C:\MyDir\SampleSchema1.xml"
Créez et utilisez le script de test SQLXML 4.0 (Sqlxml4test.vbs) pour exécuter le modèle.
Pour plus d'informations, voir Utilisation d'ADO pour exécuter des requêtes SQLXML 4.0.
Voici le jeu de résultats de l'exécution du modèle :
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Contact ContactID="4" LastName="Acevedo" FirstName="Humberto" Title="Sr." />
</ROOT>