Delen via


Standaardmapping van XSD-elementen en attributen naar tabellen en kolommen (SQLXML 4.0)

Van toepassing op:SQL ServerAzure SQL Database

Standaard wordt een element van complex type in een XSD-geannoteerd schema gekoppeld aan de tabel (weergave) met dezelfde naam in de gespecificeerde database, en een element of attribuut van eenvoudig type wordt toegewezen aan de kolom met dezelfde naam in de tabel.

Voorbeelden

Om werkmonsters te maken met de volgende voorbeelden, moet je aan bepaalde eisen voldoen. Voor meer informatie, zie Vereisten voor het uitvoeren van SQLXML-voorbeelden.

Eén. Specificatie van standaardmapping

In dit voorbeeld zijn er geen annotaties gespecificeerd in het XSD-schema. Het <Person.Contact-element> is van complex type en wordt daarom standaard gekoppeld aan de Person.Contact-tabel in de AdventureWorks-database. Alle attributen (ContactID, Voornaam, Achternaam) van het <element Person.Contact> zijn van eenvoudig type en worden standaard gekoppeld aan kolommen met dezelfde namen in de Person.Contact-tabel.

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"   
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">  
  <xsd:element name="Person.Contact" >  
     <xsd:complexType>  
       <xsd:attribute name="ContactID"  type="xsd:string" />   
       <xsd:attribute name="FirstName"   type="xsd:string" />   
       <xsd:attribute name="LastName"    type="xsd:string" />   
     </xsd:complexType>  
  </xsd:element>  
</xsd:schema>  
Om een voorbeeld van een XPath-query te testen tegen het schema
  1. Kopieer de bovenstaande schemacode en plak deze in een tekstbestand. Sla het bestand op als MySchema.xml.

  2. Kopieer het volgende sjabloon en plak het in een tekstbestand. Sla het bestand op als MySchemaT.xml in dezelfde map waar je MySchema.xmlhebt opgeslagen.

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

    Het directorypad dat voor het mappingschema (MySchema.xml) is gespecificeerd is relatief tot de map waar het sjabloon wordt opgeslagen. Een absoluut pad kan ook worden gespecificeerd, bijvoorbeeld:

    mapping-schema="C:\SqlXmlTest\MySchema.xml"  
    
  3. Maak het SQLXML 4.0 Test Script (Sqlxml4test.vbs) aan en gebruik het om het sjabloon uit te voeren.

    Zie ADO gebruiken om SQLXML 4.0-query's uit te voeren voor meer informatie.

Dit is de gedeeltelijke resultatenset:

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

B. Een XML-element mappen naar een databasekolom

In dit voorbeeld vindt ook standaardmapping plaats omdat er geen annotaties worden gebruikt. Het <Person.Contact-element> is van complex type en wordt gekoppeld aan de tabel met dezelfde naam in de database. De elementen <FirstName> en <EtterName> en het attribuut EmployeeID zijn van eenvoudig type en worden daarom gekoppeld aan de kolommen met dezelfde namen. Het enige verschil tussen dit en het vorige voorbeeld is dat elementen worden gebruikt voor het mappen van de velden FirstName en LastName.

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"   
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">  
  <xsd:element name="Person.Contact">  
    <xsd:complexType>  
      <xsd:sequence>  
        <xsd:element name="FirstName" type="xsd:string" />   
        <xsd:element name="LastName" type="xsd:string" />   
      </xsd:sequence>  
      <xsd:attribute name="ContactID" type="xsd:integer" />   
    </xsd:complexType>  
  </xsd:element>  
</xsd:schema>  
Om een voorbeeld van een XPath-query te testen tegen het schema
  1. Kopieer de bovenstaande schemacode en plak deze in een tekstbestand. Sla het bestand op als MySchemaElements.xml.

  2. Maak het volgende sjabloon aan (MySchemaElementsT.xml), en sla deze op in dezelfde map als in de vorige stap.

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

    Het directorypad dat voor het mappingschema is gespecificeerd, is relatief aan de map waar het sjabloon is opgeslagen. Een absoluut pad kan ook worden gespecificeerd, bijvoorbeeld:

    mapping-schema="C:\SqlXmlTest\MySchemaElements.xml"  
    
  3. Maak het SQLXML 4.0 Test Script (Sqlxml4test.vbs) aan en gebruik het om het sjabloon uit te voeren.

    Zie ADO gebruiken om SQLXML 4.0-query's uit te voeren voor meer informatie.

Dit is de gedeeltelijke resultatenset:

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

C. Een XML-element toewijzen aan een XML-datatypekolom

In dit voorbeeld vindt ook standaardmapping plaats omdat er geen annotaties worden gebruikt. Het <Production.ProductModel-element> is van complex type en wordt gekoppeld aan de tabel met dezelfde naam in de database. Het ProductModelID-attribuut is van eenvoudig type en wordt daarom gekoppeld aan de kolommen met dezelfde namen. Het enige verschil tussen dit en de vorige voorbeelden is dat het <Instructions-element> wordt toegewezen aan een kolom die het xml-datatype gebruikt door het xsd:anyType-type te gebruiken.

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

Het xml-datatype werd geïntroduceerd in SQL Server 2005 (9.x).

Om een voorbeeld van een XPath-query te testen tegen het schema
  1. Kopieer de bovenstaande schemacode en plak deze in een tekstbestand. Sla het bestand op als MySchemaXmlAnyElements.xml.

  2. Maak het volgende sjabloon aan (MySchemaXmlAnyElementsT.xml), en sla deze op in dezelfde map als in de vorige stap.

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

    Het directorypad dat voor het mappingschema is gespecificeerd, is relatief aan de map waar het sjabloon is opgeslagen. Een absoluut pad kan ook worden gespecificeerd, bijvoorbeeld:

    mapping-schema="C:\SqlXmlTest\MySchemaXmlAnyElements.xml"  
    
  3. Maak het SQLXML 4.0 Test Script (Sqlxml4test.vbs) aan en gebruik het om het sjabloon uit te voeren.

    Zie ADO gebruiken om SQLXML 4.0-query's uit te voeren voor meer informatie.

Dit is de gedeeltelijke resultatenset:

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

Zie ook

Overwegingen voor geannoteerde schemabeveiliging (SQLXML 4.0)
XML-gegevens (SQL Server)
xml Data Type ondersteuning in SQLXML 4.0