Partager via


Spécification d'un espace de noms cible à l'aide de sql:target-namespace (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).

L'annotation sql:target-namespace peut être utilisée pour placer des éléments et des attributs de l'espace de noms par défaut dans un autre espace de noms. L'attribut sql:target-namespace peut être ajouté uniquement à la balise <Schema> dans le schéma XDR.

La valeur de sql:target-namespace est l'URI (Uniform Resource Identifier) d'espace de noms à utiliser pour générer les éléments et les attributs spécifiés dans le schéma de mappage. Cet URI est appliqué à tous les éléments et attributs de l'espace de noms par défaut. Le document XML retourné par les requêtes sur ce schéma contient des déclarations xmlns:prefix="uri" et spécifie le préfixe des noms d'élément et d'attribut en conséquence. L'URI utilisé est extrait de la valeur de l'annotation sql:target-namespace. Toutefois, le préfixe est généré de manière arbitraire et ne correspond à aucune valeur du schéma (même si les préfixes sont utilisés dans le schéma).

Exemples

Pour créer des exemples fonctionnels à l'aide des exemples suivants, vous devez respecter certaines conditions requises. Pour plus d'informations, consultez Configuration requise pour l'exécution des exemples SQLXML.

A. Spécifier un espace de noms cible

Dans cet exemple, l'annotation sql:target-namespace est utilisée pour spécifier l'espace de noms cible. Par conséquent, tous les éléments et attributs qui auraient dû être dirigés vers l'espace de noms par défaut sont redirigés vers l'espace de noms cible (MyNamespace).

<?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"
        sql:target-namespace="urn:MyNamespace">
<ElementType name="Sales.SalesOrderHeader" >
   <AttributeType name="SalesOrderID" />
   <attribute type="SalesOrderID"/>
</ElementType>
<ElementType name="Sales.Customer" >
   <AttributeType name="CustomerID" />
   <attribute type="CustomerID" />
   <element type="Sales.SalesOrderHeader" >
      <sql:relationship 
            key="CustomerID" 
            foreign-key="CustomerID" 
            key-relation="Sales.Customer" 
            foreign-relation="Sales.SalesOrderHeader" />
   </element>
</ElementType>
</Schema>

Pour tester un exemple de requête XPath sur le schéma

  1. Copiez le code de schéma ci-dessus et collez-le dans un fichier texte. Enregistrez ce fichier sous le nom TargetNS-Xdr.xml.

  2. Copiez le modèle suivant et collez-le dans un fichier texte. Enregistrez ce fichier sous le nom TargetNS-XdrT.xml dans le répertoire où vous avez enregistré TargetNS-Xdr.xml.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
      <sql:xpath-query mapping-schema="TargetNS-Xdr.xml" 
                       xmlns:x="urn:MyNamespace" >
        x:Sales.Customer[@CustomerID=1]
      </sql:xpath-query>
    </ROOT>
    

    La requête XPath du modèle demande tous les éléments <Customer> définis dans l'espace de noms « MyNamespace ». Dans le modèle, un préfixe (x) est lié à l'espace de noms.

    Le chemin d'accès au répertoire spécifié pour le schéma de mappage (TargetNS-Xdr.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\TargetNS-Xdr.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 obtenu est le suivant :

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
  <y0:Sales.Customer xmlns:y0="urn:MyNamespace" CustomerID="1">
    <y0:Sales.SalesOrderHeader SalesOrderID="43860" /> 
    <y0:Sales.SalesOrderHeader SalesOrderID="44501" /> 
    <y0:Sales.SalesOrderHeader SalesOrderID="45283" /> 
    <y0:Sales.SalesOrderHeader SalesOrderID="46042" /> 
  </y0:Sales.Customer>
</ROOT>

Notez que les préfixes générés sont arbitraires, mais sont mappés au même espace de noms.