Spécification d'opérateurs booléens dans les requêtes XPath (SQLXML 4.0)
L'exemple suivant montre comment les opérateurs booléens sont spécifiés dans les requêtes XPath. La requête XPath de cet exemple est spécifiée 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. Spécifier l'opérateur booléen OR
Cette requête XPath retourne les enfants de l'élément <Customer> du nœud de contexte avec la valeur d'attribut CustomerID 13 ou 31 :
/child::Customer[attribute::CustomerID="13" or attribute::CustomerID="31"]
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 omis :
/Customer[@CustomerID="13" or @CustomerID="31"]
Dans le prédicat, attribute est l'axe et CustomerID est le test de nœud (TRUE si CustomerID est un nœud <attribute>, car le nœud <attribute> est le nœud principal de l'axe attribute). Le prédicat filtre les éléments <Customer> et retourne uniquement ceux qui satisfont la condition spécifiée dans le prédicat.
Pour tester les requêtes XPath par rapport au schéma de mappage
Copiez le code de l'exemple de schéma et collez-le dans un fichier texte. Enregistrez le fichier sous le nom SampleSchema1.xml.
Créez le modèle ci-après (BooleanOperatorsA.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"> /Customer[@CustomerID="13" or @CustomerID="31"] </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">
<Customer CustomerID="13" SalesPersonID="286" TerritoryID="7" AccountNumber="13" CustomerType="S" />
<Customer CustomerID="31" SalesPersonID="286" TerritoryID="7" AccountNumber="31" CustomerType="S" Orders="Ord-51803 Ord-69427">
<Order SalesOrderID="Ord-51803" SalesPersonID="286" OrderDate="2003-08-01T00:00:00" DueDate="2003-08-13T00:00:00" ShipDate="2003-08-08T00:00:00">
<OrderDetail ProductID="Prod-718" UnitPrice="1059.31" OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-838" UnitPrice="1059.31" OrderQty="1" UnitPriceDiscount="0" />
</Order>
<Order SalesOrderID="Ord-69427" SalesPersonID="286" OrderDate="2004-05-01T00:00:00" DueDate="2004-05-13T00:00:00" ShipDate="2004-05-08T00:00:00">
<OrderDetail ProductID="Prod-835" UnitPrice="440.1742" OrderQty="1" UnitPriceDiscount="0" />
</Order>
</Customer>
</ROOT>