Spécification de fonctions booléennes dans des requêtes XPath (SQLXML 4.0)
Les exemples suivants montrent comment spécifier des fonctions booléennes dans des 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).
A. Spécifier la fonction booléenne not()
La requête suivante retourne tous les éléments enfants <Customer> du nœud de contexte qui n'ont pas d'élément enfant <Order> :
/child::Customer[not(child::Order)]
L'axe child est la valeur par défaut. Par conséquent, la requête peut être spécifiée sous la forme :
/Customer[not(Order)]
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 le fichier sous le nom SampleSchema1.xml.
Créez le modèle ci-dessous (BooleanFunctionsA.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[not(Order)] </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 partiel 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="32" SalesPersonID="289" TerritoryID="8" AccountNumber="32" CustomerType="S" />
<Customer CustomerID="35" SalesPersonID="275" TerritoryID="2" AccountNumber="35" CustomerType="S" />
...
</ROOT>
B. Spécifier les fonctions booléennes true() et false()
La requête suivante retourne tous les enfants <Customer> du nœud de contexte qui n'ont pas d'élément enfant <Order> : En termes relationnels, cette requête retourne tous les clients qui n'ont pas passé de commandes.
/child::Customer[child::Order=false()]
L'axe child est la valeur par défaut. Par conséquent, la requête peut être spécifiée sous la forme :
/Customer[Order=false()]
Cette requête est équivalente à la requête suivante :
/Customer[not(Order)]
La requête ci-dessous retourne tous les clients qui ont passé au moins une commande :
/Customer[Order=true()]
Cette requête est équivalente à la requête suivante :
/Customer[Order]
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 le fichier sous le nom SampleSchema1.xml.
Créez le modèle ci-dessous (BooleanFunctionsB.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[Order=false()] </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 partiel 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="32" SalesPersonID="289" TerritoryID="8" AccountNumber="32" CustomerType="S" />
<Customer CustomerID="35" SalesPersonID="275" TerritoryID="2" AccountNumber="35" CustomerType="S" />
...
</ROOT>