Spécification de fonctions de conversion explicite dans les requêtes XPath (SQLXML 4.0)
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
A. Utiliser la fonction de conversion explicite number()
La fonction number() convertit un argument en un nombre.
En supposant que la valeur de ContactID est non numérique, la requête suivante convertit ContactID en nombre et le compare à la valeur 4. La requête retourne ensuite tous les éléments enfants <Employee> du nœud de contexte avec l'attribut ContactID ayant une valeur numérique de 4 :
/child::Contact[number(attribute::ContactID)= 4]
Il est possible de spécifier un raccourci vers l'axe attribute (@), et l'axe child étant l'axe par défaut, il peut être absent 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 ms172719(v=sql.100).md et collez-le dans un fichier texte. Enregistrez le 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, consultez 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 une chaîne.
La requête suivante convertit ContactID en une chaîne et le compare à la valeur de chaîne « 4 ». La requête retourne tous les éléments enfants <Employee> du nœud de contexte avec un ContactID ayant une valeur de chaîne de « 4 » :
/child::Contact[string(attribute::ContactID)="4"]
Il est possible de spécifier un raccourci vers l'axe attribute (@), et l'axe child étant l'axe par défaut, il peut être absent 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 ms172719(v=sql.100).md et collez-le dans un fichier texte. Enregistrez le 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, consultez 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>