Introduktion till annoterade XSD-scheman (SQLXML 4.0)

gäller för:SQL ServerAzure SQL Database

Du kan skapa XML-vyer av relationsdata genom att använda XML Schema Definition (XSD)-språket. Dessa vyer kan sedan förfrågas med hjälp av XML Path language (XPath)-frågor. Detta liknar att skapa vyer genom att använda CREATE VIEW-satser och sedan specificera SQL-frågor mot vyn.

Ett XML-schema beskriver strukturen i ett XML-dokument och beskriver även de olika begränsningarna på datan i dokumentet. När du specificerar XPath-frågor mot schemat bestäms strukturen i det returnerade XML-dokumentet av schemat mot vilket XPath-frågan körs.

I ett XSD-schema< omsluter xsd:schema-elementet> hela schemat; alla elementdeklarationer måste finnas inom <xsd:schema-elementet>. Du kan beskriva attribut som definierar namnrymden där schemat finns och namnrymden som används i schemat som egenskaper för <xsd:schema-elementet> .

Ett giltigt XSD-schema måste innehålla xsd:schema-elementet<> definierat enligt följande:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"   
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">  
<!-- additional schema definitions here -->  
</xsd:schema>  

<xsd:schema-elementet> härstammar från XML Schema-namnrymdspecifikationen vid http://www.w3.org/2001/XMLSchema.

Annotationer till XSD-schemat

Du kan använda ett XSD-schema med annotationer som beskriver mappningen till en databas, fråga databasen och returnera resultaten i form av ett XML-dokument. Annotationer tillhandahålls för att mappa ett XSD-schema till databastabeller och kolumner. XPath-frågor kan specificeras mot XML-vyn som skapas av XSD-schemat för att söka databasen och få resultat som XML.

Anmärkning

I Microsoft SQLXML 4.0 stöder XSD-schemaspråket de annotationer som introducerades med annotated XML-Data Reduced (XDR) schema language i SQL Server 2000 (8.x). Annoterad XDR är föråldrad i SQLXML 4.0.

I relationsdatabasens kontext är det användbart att mappa det godtyckliga XSD-schemat till en relationell lagring. Ett sätt att uppnå detta är att annotera XSD-schemat. Ett XSD-schema med anteckningarna kallas ett mappningsschema, vilket ger information om hur XML-data ska mappas till relationslagringen. Ett mappningsschema är i praktiken en XML-vy av relationsdata. Dessa mappningar kan användas för att hämta relationsdata som ett XML-dokument.

Namnrymd för annoteringar

I ett XSD-schema specificeras annotationer genom att använda namnrymden urn:schemas-microsoft-com:mapping-schema. Som visas i följande exempel är det enklaste sättet att specificera namnrymden att ange den i taggen< xsd:schema>.

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"   
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">  
...  
</xsd:schema>  

Prefixet i namnrymden som används är godtyckligt. I denna dokumentation används sql-prefixet för att beteckna annoteringsnamnrymden och för att skilja annotationer i detta namnrymd från de i andra namnrymder.

Exempel på ett annoterat XSD-schema

I följande exempel består XSD-schemat av ett <Person.Contact-element> . Employee-elementet <> har ett ContactID-attribut samt <FirstName> och <Efternamn-barn>:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">  
  <xsd:element name="Contact" >  
   <xsd:complexType>  
     <xsd:sequence>  
        <xsd:element name="FName"    
                     type="xsd:string" />   
        <xsd:element name="LName"  
                     type="xsd:string" />  
     </xsd:sequence>  
        <xsd:attribute name="ConID" type="xsd:integer" />  
    </xsd:complexType>  
  </xsd:element>  
</xsd:schema>  

Annotationer läggs till i detta XSD-schema för att mappa dess element och attribut till databasens tabeller och kolumner:

<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="ConID"   
                       sql:field="ContactID"   
                       type="xsd:integer" />  
    </xsd:complexType>  
  </xsd:element>  
</xsd:schema>  

I mappningsschemat mappas Contact-elementet<> till Person.Contact-tabellen i exempeldatabasen AdventureWorks2025 med hjälp av sql:relation-annotationen. Attributen ConID, FName och LName mappas till kolumnerna ContactID, FirstName och LastName i Person.Contact-tabellen genom att använda sql: field-annotationerna.

Detta annoterade XSD-schema tillhandahåller XML-vyn av relationsdatan. Denna XML-vy kan förfrågas med XPath-språket. En XPath-fråga returnerar ett XML-dokument som resultat, istället för raduppsättningen som returneras av SQL-frågor.

Anmärkning

I mappningsschemat beror kasuskänsligheten för de angivna relationsvärdena (såsom tabellnamn och kolumnnamn) på om SQL Server använder kasuskänsliga sorteringsinställningar. Mer information finns i Collation och Unicode Support.

Andra resurser

Du kan hitta mer information om XML Schema Definition language (XSD), XML Path-språket (XPath) och Extensible Stylesheet Language Transformations (XSLT) på följande webbplatser:

Se även

Annoterade schemasäkerhetsöverväganden (SQLXML 4.0)
Annoterade XDR-scheman (föråldrade i SQLXML 4.0)