Partager via


Spécification d’opérateurs relationnels dans les requêtes XPath (SQLXML 4.0)

Les exemples suivants montrent comment les opérateurs relationnels sont spécifiés 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

Un. Spécifier un opérateur relationnel

Cette requête XPath retourne les éléments enfants de l’élément <Customer> où la valeur d’attribut CustomerID est « 1 » et où tous les éléments Order> enfants< contiennent un <enfant OrderDetail> avec un attribut OrderQty avec une valeur supérieure à 3 :

/child::Customer[@CustomerID="1"]/Order/OrderDetail[@OrderQty > 3]  

Le prédicat spécifié entre crochets filtre les <éléments Customer> . Seuls les <éléments Customer> qui ont au moins un <petit-enfant OrderDetail> avec une valeur d’attribut OrderQty supérieure à 3 sont retournés.

L’axe child est la valeur par défaut. Par conséquent, la requête peut être spécifiée comme suit :

/Customer[@CustomerID="1"]/Order/OrderDetail[@OrderQty > 3]  
Pour tester la requête XPath sur le schéma de mappage
  1. Copiez l’exemple de code de schéma et collez-le dans un fichier texte. Enregistrez le fichier en tant que SampleSchema1.xml.

  2. Créez le modèle suivant (SpecifyRelationalA.xml) et enregistrez-le dans le répertoire où SampleSchema1.xml est enregistré.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
      <sql:xpath-query mapping-schema="SampleSchema1.xml">  
        /Customer[@CustomerID="1"]/Order/OrderDetail[@OrderQty > 3]  
      </sql:xpath-query>  
    </ROOT>  
    

    Le chemin d’accès au répertoire spécifié pour le schéma de mappage (SampleSchema1.xml) est relatif au répertoire dans lequel 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, 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">  
  <OrderDetail ProductID="Prod-760" UnitPrice="503.3507" OrderQty="4" UnitPriceDiscount="0" />   
  <OrderDetail ProductID="Prod-763" UnitPrice="503.3507" OrderQty="4" UnitPriceDiscount="0" />   
  <OrderDetail ProductID="Prod-766" UnitPrice="503.3507" OrderQty="4" UnitPriceDiscount="0" />   
  <OrderDetail ProductID="Prod-732" UnitPrice="440.1742" OrderQty="4" UnitPriceDiscount="0" />   
  <OrderDetail ProductID="Prod-757" UnitPrice="1049.7528" OrderQty="4" UnitPriceDiscount="0" />   
</ROOT>  

B. Spécifier l’opérateur relationnel dans la requête XPath et utiliser la fonction booléenne pour comparer le résultat

Cette requête retourne tous les enfants de l’élément <Order> du nœud de contexte qui ont une valeur d’attribut SalesPersonID inférieure à 270 :

/child::Customer/child::Order[(attribute::SalesPersonID < 270)=true()]  

Un raccourci vers l’axe attribute (@) peut être spécifié et, étant donné que l’axe child est la valeur par défaut, il peut être omis à partir de la requête :

/Customer/Order[(@SalesPersonID < 270)=true()]  

Remarque

Lorsque cette requête est spécifiée dans un modèle, le < caractère doit être encodé en entité, car le < caractère a une signification particulière dans un document XML. Dans un modèle, utilisez cette option < pour spécifier le < caractère.

Pour tester la requête XPath sur le schéma de mappage
  1. Copiez l’exemple de code de schéma et collez-le dans un fichier texte. Enregistrez le fichier en tant que SampleSchema1.xml.

  2. Créez le modèle suivant (SpecifyRelationalB.xml) et enregistrez-le dans le répertoire où SampleSchema1.xml est enregistré.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
        <sql:xpath-query mapping-schema="SampleSchema1.xml">  
            /Customer/Order[(@SalesPersonID<270)=true()]  
        </sql:xpath-query>  
    </ROOT>  
    

    Le chemin d’accès au répertoire spécifié pour le schéma de mappage (SampleSchema1.xml) est relatif au répertoire dans lequel 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, voir Utilisation d'ADO pour exécuter des requêtes SQLXML 4.0.

Voici le jeu de résultats partiel de l’exécution du modèle :

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
  <Order SalesOrderID="Ord-46613" SalesPersonID="268"   
         OrderDate="2002-07-01T00:00:00"   
         DueDate="2002-07-13T00:00:00"   
         ShipDate="2002-07-08T00:00:00">  
    <OrderDetail ProductID="Prod-739" UnitPrice="917.9363"   
                 OrderQty="2" UnitPriceDiscount="0" />   
    <OrderDetail ProductID="Prod-779" UnitPrice="1491.4221"   
                 OrderQty="1" UnitPriceDiscount="0" />   
    <OrderDetail ProductID="Prod-825" UnitPrice="242.1391"   
                 OrderQty="1" UnitPriceDiscount="0" />   
  </Order>  
  <Order SalesOrderID="Ord-71919" SalesPersonID="268"  
         OrderDate="2004-06-01T00:00:00"   
         DueDate="2004-06-13T00:00:00"   
         ShipDate="2004-06-08T00:00:00">  
    <OrderDetail ProductID="Prod-961" UnitPrice="534.492"   
                 OrderQty="1" UnitPriceDiscount="0" />   
    <OrderDetail ProductID="Prod-965" UnitPrice="534.492"   
                 OrderQty="1" UnitPriceDiscount="0" />   
    <OrderDetail ProductID="Prod-966" UnitPrice="1716.5304"   
                 OrderQty="1" UnitPriceDiscount="0" />   
  </Order>  
  ...  
</ROOT>