Teilen über


Benutzerdefinierte XSD-Zuordnungen zu Tabellen/Spalten (SQLXML)

Gilt für: SQL Server Azure SQL-Datenbank

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 derselbe Name wie der Tabellen-/Ansichts- oder Spaltenname ist, dem es zugeordnet ist, werden die sql:relation - und sql:field-Anmerkungen verwendet, um die Zuordnung zwischen einem Element oder Attribut in einem XML-Dokument und der Tabelle (Ansicht) oder Spalte 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 (Ansicht) 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 dieses Elements beschrieben werden, wodurch eine Verknüpfung zum Schreiben von Anmerkungen bereitgestellt wird.

Die sql:relation-Anmerkung ist auch hilfreich, wenn in Microsoft SQL Server gültige Bezeichner in XML ungültig sind. Beispielsweise ist "Bestelldetails" ein gültiger Tabellenname in SQL Server, aber nicht in XML. In solchen Fällen kann die sql:relation-Anmerkung verwendet werden, um die Zuordnung anzugeben, z. B.:

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

sql-Feld

Die SQL-Feld-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 leeres Inhaltselement nicht angeben.

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 für das Ausführen von SQLXML-Beispielen.

A. Angeben der Anmerkungen sql:relation und sql:field

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

Die sql:relation-Anmerkung ordnet das <Contact-Element> der Tabelle "Person.Contact" in der AdventureWorks-Datenbank zu. Die sql:field-Anmerkung ordnet das< FName-Element> der Spalte "FirstName" und dem< LName-Element> der Spalte "LastName" 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 für das 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>