Erstellen von 'constant'-Elementen unter Verwendung von sql:is-constant (SQLXML 4.0)
Zum Festlegen eines constant-Elements, d. h. eines Elements im XSS-Schema, das keiner Datenbanktabelle oder –spalte zugeordnet werden kann, können Sie die Anmerkung sql:is-constant verwenden. Diese Anmerkung akzeptiert einen booleschen Wert (0 = false, 1 = true). Zulässig sind die Werte 0, 1, true und false. Die sql:is-constant-Anmerkung kann für ein Element angegeben werden, das über keine Attribute verfügt. Wenn sie für ein Element mit dem Wert true (oder 1) festgelegt ist, wird dieses Element nicht der Datenbank zugeordnet, aber dennoch im XML-Dokument angezeigt.
Die sql:is-constant-Anmerkung kann zu folgenden Zwecken verwendet werden:
Hinzufügen eines Elements der obersten Ebene zum XML-Dokument. XML erfordert ein einzelnes Element (Stammelement) der obersten Ebene für das Dokument.
Erstellen von Containerelementen, z. B. ein <Orders>-Element, das alle Reihenfolgen umschließt.
Die sql:is-constant-Anmerkung kann einem <complexType>-Element hinzugefügt werden.
Beispiele
Bestimmte Anforderungen müssen erfüllt werden, um aus den folgenden Beispielen funktionierende Codebeispiele zu erstellen. Weitere Informationen finden Sie unter Anforderungen zum Ausführen von SQLXML-Beispielen.
A. Angeben von 'sql:is-constant'-Konstante zum Hinzufügen eines Containerelements
In diesem mit Anmerkungen versehenen XSD-Schema wird <CustomerOrders> durch Festlegen des sql:is-constant-Attributs mit einem Wert von 1 als constant-Element definiert. Deshalb wird <CustomerOrders> keiner Datenbanktabelle oder –spalte zugeordnet. Dieses constant-Element besteht aus den untergeordneten <Order>-Elementen.
Obwohl <CustomerOrders> keiner Datenbanktabelle oder –spalte zugeordnet ist, wird es im XML-Ergebnis als Containerelement mit den untergeordneten <Order>-Elementen angezeigt.
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:annotation>
<xsd:appinfo>
<sql:relationship name="CustOrders"
parent="Sales.Customer"
parent-key="CustomerID"
child="Sales.SalesOrderHeader"
child-key="CustomerID" />
</xsd:appinfo>
</xsd:annotation>
<xsd:element name="Customer" sql:relation="Sales.Customer" >
<xsd:complexType>
<xsd:sequence>
<xsd:element name="CustomerOrders" sql:is-constant="1" >
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Order" sql:relation="Sales.SalesOrderHeader"
sql:relationship="CustOrders"
maxOccurs="unbounded" >
<xsd:complexType>
<xsd:attribute name="SalesOrderID" type="xsd:integer" />
<xsd:attribute name="OrderDate" type="xsd:date" />
<xsd:attribute name="CustomerID" type="xsd:string" />
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="CustomerID" type="xsd:string" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
So testen Sie eine XPath-Beispielabfrage mit dem Schema
Kopieren Sie den oben stehenden Schemacode, und fügen Sie ihn in eine Textdatei ein. Speichern Sie die Datei unter dem Dateinamen isConstant.xml.
Kopieren Sie die folgende Vorlage, und fügen Sie sie in eine Textdatei ein. Speichern Sie die Datei unter dem Namen isConstantT.xml im gleichen Verzeichnis, in dem Sie isConstant.xml gespeichert haben.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="isConstant.xml"> Customer[@CustomerID=1] </sql:xpath-query> </ROOT>
Der für das Zuordnungsschema (isConstant.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.xml"
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-Abfragen.
Im Folgenden wird ein Teil des Resultsets aufgeführt:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Customer CustomerID="1">
<CustomerOrders>
<Order SalesOrderID="43860" OrderDate="2001-08-01" CustomerID="1" />
<Order SalesOrderID="44501" OrderDate="2001-11-01" CustomerID="1" />
<Order SalesOrderID="45283" OrderDate="2002-02-01" CustomerID="1" />
<Order SalesOrderID="46042" OrderDate="2002-05-01" CustomerID="1" />
...
</CustomerOrders>
</Customer>
</ROOT>