Share via


Standardzuordnung von XSD-Elementen und -Attributen zu Tabellen und Spalten (SQLXML 4.0)

Standardmäßig wird ein Element des komplexen Typs in einem mit Anmerkungen versehenen Schema der Tabelle (Sicht) mit dem gleichen Namen in der angegebenen Datenbank zugeordnet, und ein Element oder Attribut des einfachen Typs wird der Spalte mit demselben Namen in der Tabelle zugeordnet.

Beispiele

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

A. Angeben der Standardzuordnung

In diesem Beispiel werden keine Anmerkungen im XSD-Schema angegeben. Das <Person.Person>-Element weist einen komplexen Typ auf und wird daher standardmäßig der Person.Person-Tabelle in der AdventureWorks2008R2-Datenbank zugeordnet. Alle diese Attribute (BusinessEntityID, FirstName, LastName) des <Person.Person>-Elements weisen einen einfachen Typ auf und werden standardmäßig den gleichnamigen Spalten in der Person.Person-Tabelle zugeordnet.

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
  <xsd:element name="Person.Person" >
     <xsd:complexType>
       <xsd:attribute name="BusinessEntityID"  type="xsd:string" /> 
       <xsd:attribute name="FirstName"   type="xsd:string" /> 
       <xsd:attribute name="LastName"    type="xsd:string" /> 
     </xsd:complexType>
  </xsd:element>
</xsd: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 MySchema.xml.

  2. Kopieren Sie die folgende Vorlage, und fügen Sie sie in eine Textdatei ein. Speichern Sie die Datei unter dem Namen MySchemaT im gleichen Verzeichnis, in dem Sie MySchema.xml gespeichert haben.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
        <sql:xpath-query mapping-schema="MySchema.xml">
            /Person.Person
        </sql:xpath-query>
    </ROOT>
    

    Der für das Zuordnungsschema (MySchema.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:\SqlXmlTest\MySchema.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 ein Teil des Resultsets aufgeführt:

<?xml version="1.0" encoding="UTF-8" ?>
<ROOT>
  <Person.Person BusinessEntityID="1" FirstName="Gustavo" LastName="Achong"/>
  <Person.Person BusinessEntityID="2" FirstName="Catherine" LastName="Abel"/>
   ...
</ROOT>

B. Zuordnen eines XML-Elements zu einer Datenbankspalte

In diesem Beispiel findet die Standardzuordnung ebenfalls statt, da keine Anmerkungen verwendet werden. Das <Person.Person>-Element weist einen komplexen Typ auf und wird daher der gleichnamigen Tabelle in der Datenbank zugeordnet. Die Elemente <FirstName> und <LastName> und das EmployeeID-Attribut sind vom einfachen Typ und werden daher den gleichnamigen Spalten zugeordnet. Der einzige Unterschied zwischen diesem und dem vorherigen Beispiel besteht darin, dass für die Zuordnung der Felder FirstName und LastName Elemente verwendet werden.

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
  <xsd:element name="Person.Person">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="FirstName" type="xsd:string" /> 
        <xsd:element name="LastName" type="xsd:string" /> 
      </xsd:sequence>
      <xsd:attribute name="BusinessEntityID" type="xsd:integer" /> 
    </xsd:complexType>
  </xsd:element>
</xsd: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 MySchemaElements.xml.

  2. Erstellen Sie die folgende Vorlage (MySchemaElementsT.xml), und speichern Sie sie im gleichen Verzeichnis wie im vorherigen Schritt.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
        <sql:xpath-query mapping-schema="MySchemaElements.xml">
            /Person.Person
        </sql:xpath-query>
    </ROOT>
    

    Der für das Zuordnungsschema 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:\SqlXmlTest\MySchemaElements.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 ein Teil des Resultsets aufgeführt:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
  <Person.Person BusinessEntityID="1">
    <FirstName>Gustavo</FirstName>
    <LastName>Achong</LastName>
  </Person.Person>
   ...
</ROOT>

C. Zuordnen eines XML-Elements zu einer XML-Datentypspalte

In diesem Beispiel findet die Standardzuordnung auch statt, da keine Anmerkungen verwendet werden. Das <Production.ProductModel>-Element ist von einem komplexen Typ und wird daher der gleichnamigen Tabelle in der Datenbank zugeordnet. Das ProductModelID-Attribut ist von einem einfachen Typ und wird daher den gleichnamigen Spalten zugeordnet. Der einzige Unterschied zwischen diesem und den vorherigen Beispielen liegt darin, dass das <Instructions>-Element einer Spalte zugeordnet wird, die den xml-Datentyp mit dem xsd:anyType-Typ verwendet.

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
  <xsd:element name="Production.ProductModel">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="Instructions" type="xsd:anyType" /> 
      </xsd:sequence>
      <xsd:attribute name="ProductModelID" type="xsd:integer" /> 
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

Der xml-Datentyp wurde in SQL Server 2005 eingeführt.

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 MySchemaXmlAnyElements.xml.

  2. Erstellen Sie die folgende Vorlage (MySchemaXmlAnyElementsT.xml), und speichern Sie sie im gleichen Verzeichnis wie im vorherigen Schritt.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
        <sql:xpath-query mapping-schema="MySchemaXmlAnyElements.xml">
            /Production.ProductModel[@ProductModelID=7]
        </sql:xpath-query>
    </ROOT>
    

    Der für das Zuordnungsschema 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:\SqlXmlTest\MySchemaXmlAnyElements.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 ein Teil des Resultsets aufgeführt:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
  <Production.ProductModel ProductModelID="7">
    <Instructions>
      <root xmlns="http:
//schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstru
ctions">
...
      </root>
    <Instructions>
  </Production.ProductModel>
</ROOT>