Freigeben über


Angeben eines Zielnamespaces mit 'sql:target-namespace' (XDR-Schema)

Wichtiger HinweisWichtig

Dieses Thema ist als Referenz für ältere Anwendungen enthalten. Für dieses Feature wird künftig keine Entwicklungsarbeit mehr geleistet. Vermeiden Sie daher das Verwenden dieses Features bei neuen Entwicklungsarbeiten. Verwenden Sie stattdessen XSD-Schemas mit Anmerkungen zum Erstellen von XML-Sichten. Weitere Informationen finden Sie unter Einführung in XSD-Schemas mit Anmerkungen (SQLXML 4.0). Sie können vorhandene XDR-Schemas mit Anmerkungen in XSD-Schemas konvertieren. Weitere Informationen finden Sie unter Konvertieren von XDR-Schemas mit Anmerkungen in gleichbedeutende XSD-Schemas (SQLXML 4.0).

Mithilfe der sql:target-namespace-Anmerkung können Elemente und Attribute aus dem Standardnamespace in einen anderen Namespace platziert werden. Das sql:target-namespace-Attribut kann nur dem <Schema>-Tag im XDR-Schema hinzugefügt werden.

Der Wert von sql:target-namespace entspricht dem Namespace-URI (Uniform Resource Identifier), der zur Generierung von im Zuordnungsschema angegebenen Elementen und Attributen verwendet wird. Dieser URI wird im Standardnamespace für alle Elemente und Attribute übernommen. Die zu Abfragen für dieses Schema zurückgegebenen XML-Dokumente enthalten xmlns:prefix="uri"-Deklarationen und stellen den Element- und Attributnamen entsprechende Präfixe voran. Der verwendete URI stammt aus dem Wert der sql:target-namespace-Anmerkung. Das Präfix wird hingegen zufällig generiert und entspricht keinem Wert aus dem Schema (selbst dann, wenn die Präfixe im Schema verwendet werden).

Beispiele

Es müssen bestimmte Anforderungen erfüllt sein, damit aus den folgenden Beispielen funktionierende Beispiele erstellt werden können. Weitere Informationen finden Sie unter Anforderungen zum Ausführen von SQLXML-Beispielen.

A. Angeben eines Zielnamespaces

In diesem Beispiel wird die sql:target-namespace-Anmerkung verwendet, um den Zielnamespace anzugeben. Dies hat zur Folge, dass alle Elemente und Attribute, die ansonsten in den Standardnamespace aufgenommen worden wären, in den Zielnamespace (MyNamespace) umgeleitet werden.

<?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>

So testen Sie eine XPath-Beispielabfrage mit dem Schema

  1. Kopieren Sie den oben stehenden Schemacode, und fügen Sie ihn in eine Textdatei ein. Speichern Sie die Datei unter dem Dateinamen TargetNS-Xdr.xml.

  2. Kopieren Sie die folgende Vorlage, und fügen Sie sie in eine Textdatei ein. Speichern Sie die Datei unter dem Dateinamen TargetNS-XdrT.xml im gleichen Verzeichnis wie 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>
    

    Die XPath-Abfrage in der Vorlage fordert alle im Namespace MyNamespace definierten <Customer>-Elemente an. In der Vorlage wird ein Präfix (x) an den Namespace gebunden.

    Der für das Zuordnungsschema (TargetNS-Xdr.xml) angegebene Verzeichnispfad bezieht sich auf das Verzeichnis, in dem die Vorlage gespeichert ist. Es kann auch ein absoluter Pfad angegeben werden. Beispiel:

    mapping-schema="C:\MyDir\TargetNS-Xdr.xml"
    
  3. Erstellen und verwenden Sie das SQLXML 4.0-Testskript (Sqlxml4test.vbs), um die Vorlage auszuführen.

    Weitere Informationen finden Sie unter Verwenden von ADO zum Ausführen von SQLXML 4.0-Abfragen.

Im Folgenden wird das Resultset aufgeführt:

<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>

Beachten Sie, dass die generierten Präfixe zwar zufällig gewählt werden, jedoch dem gleichen Namespace zugeordnet sind.