Freigeben über


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

Wenn ein XSD-Schema zur Bereitstellung einer XML-Sicht der relationalen Datenbank verwendet wird, müssen die Elemente und Attribute des Schemas den Tabellen und Spalten der Datenbank zugeordnet werden. Die Zeilen in der Datenbanktabelle/-sicht werden den Elementen im XML-Dokument zugeordnet. Die Spaltenwerte in der Datenbank werden Attributen oder Elementen zugeordnet.

Wenn Xpath-Abfragen für das mit Anmerkungen versehene XSD-Schema angegeben werden, werden die Daten für die Elemente und Attribute im Schema aus den Tabellen und Spalten abgerufen, denen sie zugeordnet sind. Um einen einzelnen Wert aus der Datenbank abrufen zu können, muss die im XSD-Schema angegebene Zuordnung sowohl über eine Beziehungs- als auch eine Feldangabe verfügen. Wenn der Name eines Elements/Attributs nicht mit dem Namen der zugeordneten Tabelle/Sicht oder Spalte identisch ist, werden die sql:relation-Anmerkung und die sql:field-Anmerkung verwendet, um die Zuordnung zwischen einem Element oder Attribut in einem XML-Dokument und der Tabelle (Sicht) oder Spalten in einer Datenbank anzugeben.

sql-Beziehung

Die sql:relation-Anmerkung wird hinzugefügt, um einen XML-Knoten im XSD-Schema einer Datenbanktabelle zuzuordnen. Der Name einer Tabelle (Sicht) wird als Wert der sql:relation-Anmerkung angegeben.

Wenn sql:relation für ein Element angegeben wird, gilt der Bereich dieser Anmerkung für alle Attribute und untergeordneten Elemente, die in der komplexen Typdefinition des Elements beschrieben sind. Dadurch wird das Schreiben von Anmerkungen vereinfacht.

Die sql:relation-Anmerkung ist ebenfalls nützlich, wenn Bezeichner, die in MicrosoftSQL Server gültig sind, es in XML nicht sind. Zum Beispiel ist "Order Details" ein gültiger Tabellenname in SQL Server, jedoch nicht in XML. In solchen Fällen kann die sql:relation-Anmerkung verwendet werden, um die Zuordnung anzugeben. Beispiel:

<xsd:element name="OD" sql:relation="[Order Details]">

sql-Feld

Die sql-field-Anmerkung ordnet ein Element oder Attribut einer Datenbankspalte zu. Die sql:field-Anmerkung wird hinzugefügt, um einen XML-Knoten im Schema einer Datenbankspalte zuzuordnen. Sie können sql:field für ein Element ohne Inhalt angeben.

Beispiele

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

A. Angeben der sql:relation-Anmerkung und der sql:field-Anmerkung

In diesem Beispiel besteht das XSD-Schema aus einem <Contact>-Element komplexen Typs mit den untergeordneten Elementen <FName> und <LName> und dem ContactID-Attribut.

Die sql:relation-Anmerkung ordnet das <Contact>-Element der Person.Contact-Tabelle in der AdventureWorks-Datenbank zu. Die sql:field-Anmerkung ordnet das <FName>-Element der FirstName-Spalte und das <LName>-Element der LastName-Spalte zu.

Für das ContactID-Attribut wird keine Anmerkung angegeben. Dies führt zu einer Standardzuordnung des Attributs zur Spalte mit dem gleichen Namen.

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

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

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

    Der für das Zuordnungsschema (MySchema-annotated.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-annotated.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-Abfragen.

Im Folgenden wird ein Teil des Resultsets aufgeführt:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> 
 <Contact ContactID="1"> 
    <FName>Gustavo</FName> 
    <LName>Achong</LName> 
 </Contact> 
  .....
</ROOT>