Création d'éléments constants à l'aide de sql:is-constant (schéma XDR)
Important
Cette rubrique est fournie à titre de référence pour les applications héritées. Cette fonctionnalité ne fera plus l'objet d'aucun travail de développement. Évitez de l'utiliser dans vos nouveaux travaux de développement. Utilisez à la place des schémas XSD annotés pour créer des vues XML. Pour plus d'informations, consultez Introduction aux schémas XSD annotés (SQLXML 4.0). Vous pouvez convertir des schémas XDR annotés existants en schémas XSD. Pour plus d'informations, consultez Conversion de schémas XDR annotés en schémas XSD équivalents (SQLXML 4.0).
En raison du mappage par défaut, chaque élément et attribut du schéma XDR est mappé à une table et une colonne de la base de données. Vous voudrez parfois créer dans le schéma XDR un élément qui ne soit mappé à aucune table ni aucune colonne de la base de données, mais qui continue d'apparaître dans le document XML. Ces éléments sont appelés des éléments constants. Pour créer un élément constant, spécifiez l'annotation sql:is-constant. sql:is-constant prend une valeur booléenne (0 = FALSE, 1 = TRUE).
Cette annotation est spécifiée sur <ElementType>, qui n'est mappé à aucune table de base de données, ce qui en fait un élément constant. L'annotation sql:is-constant peut être utilisée pour :
Ajouter un élément de niveau supérieur au document XML. XML requiert un seul élément de niveau supérieur (élément <root>) pour le document.
Créer des éléments conteneurs, par exemple, un élément <Commandes> qui encapsule toutes les Commandes.
Exemples
Pour créer des exemples fonctionnels à l'aide des exemples suivants, vous devez répondre à certaines conditions requises. Pour plus d'informations, consultez Configuration requise pour l'exécution des exemples SQLXML.
A. Spécifier sql:is-constant pour ajouter un élément conteneur
Dans ce schéma XDR annoté, <OrderList> est défini comme élément constant qui contient tous les sous-éléments < Orders>. L'annotation sql:is-constant est spécifiée sur l' <ElementType>OrderList ce qui en fait un élément constant sans mappage à aucune table de base de données. Bien que l'élément <OrderList> ne soit mappé à aucune table/colonne de base de données, il continue d'apparaître dans le XML résultant comme élément conteneur contenant des sous-éléments <Orders>.
<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:datatypes"
xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<ElementType name="Sales.SalesOrderHeader" >
<AttributeType name="SalesOrderID" />
<attribute type="SalesOrderID" />
</ElementType>
<ElementType name="OrderList" sql:is-constant="1">
<element type="Orders">
<sql:relationship
key-relation="Sales.Customer"
foreign-relation="Sales.SalesOrderHeader"
key="CustomerID"
foreign-key="CustomerID" />
</element>
</ElementType>
<ElementType name="Sales.Customer" >
<AttributeType name="CustomerID" />
<attribute type="CustomerID" />
<element type="OrderList" />
</ElementType>
</Schema>
Pour tester un exemple de requête XPath sur le schéma
Copiez le code de schéma ci-dessus et collez-le dans un fichier texte. Enregistrez ce fichier sous le nom isConstant-xdr.xml.
Copiez le modèle suivant et collez-le dans un fichier texte. Enregistrez ce fichier sous le nom isConstant-xdrT dans le répertoire où vous avez enregistré le fichier isConstant-xdr.xml. La requête XPath dans le modèle sélectionne tous les éléments <Sales.Customer> dont l'attribut CustomerID a la valeur 1.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql" > <sql:xpath-query mapping-schema="isConstant-xdr.xml" > /Sales.Customer[@CustomerID=1] </sql:xpath-query> </ROOT>
Le chemin d'accès au répertoire spécifié pour le schéma de mappage (isConstant-xdr.xml) est relatif au 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\isConstant-xdr.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 obtenu est le suivant :
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Sales.Customer CustomerID="1">
<OrderList>
<Sales.SalesOrderHeader SalesOrderID="43860" />
<Sales.SalesOrderHeader SalesOrderID="44501" />
<Sales.SalesOrderHeader SalesOrderID="45283" />
<Sales.SalesOrderHeader SalesOrderID="46042" />
</OrderList>
</Sales.Customer>
</ROOT>