Freigeben über


Erstellen von 'constant'-Elementen mithilfe von sql:is-constant (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).

Aufgrund der Standardzuordnung werden alle Elemente und Attribute im XDR-Schema einer Datenbanktabelle und -spalte zugeordnet. Es kann vorkommen, dass Sie ein Element im XDR-Schema erstellen möchten, das keiner Datenbanktabelle oder -spalte zugeordnet ist, aber dennoch im XML-Dokument angezeigt wird. Diese werden als constant-Elemente bezeichnet. Legen Sie die sql:is-constant-Anmerkung fest, um ein constant-Element zu erstellen. sql:is-constant nimmt einen Boole'schen Wert an (0 = FALSE, 1 = TRUE).

Diese Anmerkung wird auf <ElementType> festgelegt, das keiner Datenbanktabelle zugeordnet wird, sodass es zu einem constant-Element wird. Die sql:is-constant-Anmerkung kann verwendet werden für:

  • Hinzufügen eines Elements der obersten Ebene zum XML-Dokument XML erfordert ein einzelnes Element der obersten Ebene (<root>-Element) für das Dokument.

  • Erstellen von Containerelementen, z. B. ein <Orders>-Element, das alle Reihenfolgen umschließt.

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 von sql:is-constant zum Hinzufügen eines Containerelements

In diesem XDR-Schema mit Anmerkungen wird <OrderList> als constant-Element definiert, das alle <Orders>-Unterelemente enthält. Die sql:is-constant-Anmerkung wird auf dem OrderList<ElementType> festgelegt, sodass es zu einer Konstanten wird und keine Zuordnung zu einer Datenbanktabelle stattfindet. Obwohl sich das <CustomerOrders>-Element keiner Datenbanktabelle oder -spalte zuordnen lässt, wird es im XML-Ergebnis als Containerelement mit den <Order>-Unterelementen angezeigt.

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

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 isConstant-xdr.xml.

  2. Kopieren Sie die folgende Vorlage, und fügen Sie sie in eine Textdatei ein. Speichern Sie die Datei unter dem Namen isConstant-xdrT.xml im gleichen Verzeichnis, in dem Sie isConstant-xdr.xml gespeichert haben. Die XPath-Abfrage in der Vorlage wählt alle <Sales.Customer>-Elemente mit einem CustomerID-Attributwert 1 aus.

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

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

    mapping-schema="C:\MyDir\isConstant-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">
  <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>