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 BusinessEntityID est non numérique, la requête suivante convertit BusinessEntityID 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 BusinessEntityID ayant une valeur numérique de 4 :

/child::Person[number(attribute::BusinessEntityID)= 4]

Il est possible de spécifier un raccourci vers l'axe attribute (@), et comme l'axe child est la valeur par défaut, il peut être absent de la requête :

/Person[number(@BusinessEntityID) = 4]

En termes relationnels, la requête retourne un employé avec un BusinessEntityID de 4.

Pour tester la requête XPath par rapport au schéma de mappage

  1. Copiez le code de l'exemple de schéma et collez-le dans un fichier texte. Enregistrez le fichier sous le nom SampleSchema1.xml.

  2. 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(@BusinessEntityID)=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"
    
  3. 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">
  <Person BusinessEntityID="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 BusinessEntityID 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 BusinessEntityID ayant une valeur de chaîne de « 4 » :

/child::Contact[string(attribute::BusinessEntityID)="4"]

Il est possible de spécifier un raccourci vers l'axe attribute (@), et comme l'axe child est la valeur par défaut, il peut être absent de la requête :

/Contact[string(@BusinessEntityID)="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

  1. Copiez l'exemple de code de schéma et collez-le dans un fichier texte. Enregistrez le fichier sous le nom SampleSchema1.xml.

  2. 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">
        Person[string(@BusinessEntityID)="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"
    
  3. 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">
  <Person BusinessEntityID="4" LastName="Acevedo" FirstName="Humberto" Title="Sr." /> 
</ROOT>