Delen via


Inleiding tot geannoteerde XSD-schema's (SQLXML 4.0)

Van toepassing op:SQL ServerAzure SQL Database

Je kunt XML-weergaven van relationele data maken met behulp van de XML Schema Definition (XSD) taal. Deze weergaven kunnen vervolgens worden bevraagd met behulp van XML Path Language (XPath)-query's. Dit lijkt op het creëren van views door CREATE VIEW-statements te gebruiken en vervolgens SQL-queries te specificeren tegen de view.

Een XML-schema beschrijft de structuur van een XML-document en beschrijft ook de verschillende beperkingen op de gegevens in het document. Wanneer je XPath-queries specificeert tegen het schema, wordt de structuur van het teruggegeven XML-document bepaald door het schema waarop de XPath-query wordt uitgevoerd.

In een XSD-schema omsluit het <xsd:schema-element> het volledige schema; alle elementdeclaraties moeten binnen het <xsd:schema-element> worden opgenomen. Je kunt attributen beschrijven die de naamruimte definiëren waarin het schema zich bevindt en de naamruimtes die in het schema worden gebruikt als eigenschappen van het <xsd:schema-element> .

Een geldig XSD-schema moet het <xsd:schema-element> bevatten dat als volgt is gedefinieerd:

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

Het <xsd:schema-element> is afgeleid van de XML Schema-namespace-specificatie op .http://www.w3.org/2001/XMLSchema

Annotaties bij het XSD-schema

Je kunt een XSD-schema gebruiken met annotaties die de mapping naar een database beschrijven, de database opvragen en de resultaten teruggeven in de vorm van een XML-document. Annotaties worden geleverd om een XSD-schema toe te wijzen op databasetabellen en -kolommen. XPath-queries kunnen worden gespecificeerd tegen de XML-weergave die door het XSD-schema is aangemaakt om de database te bevragen en resultaten als XML te verkrijgen.

Opmerking

In Microsoft SQLXML 4.0 ondersteunt de XSD-schemataal de annotaties die zijn geïntroduceerd met de geannoteerde XML-Data Reduced (XDR) schemataal in SQL Server 2000 (8.x). Geannoteerde XDR is verouderd in SQLXML 4.0.

In de context van de relationele database is het nuttig om het willekeurige XSD-schema te mappen naar een relationele opslag. Een manier om dit te bereiken is door het XSD-schema te annoteren. Een XSD-schema met de annotaties wordt een mapping schema genoemd, dat informatie geeft over hoe XML-data naar de relationele opslag moet worden gemapt. Een mappingschema is in feite een XML-weergave van de relationele data. Deze mappings kunnen worden gebruikt om relationele data als een XML-document op te halen.

Naamruimte voor annotaties

In een XSD-schema worden annotaties gespecificeerd door gebruik te maken van de namespace urn:schemas-microsoft-com:mapping-schema. Zoals in het volgende voorbeeld wordt getoond, is de eenvoudigste manier om de naamruimte te specificeren door deze op te geven in de <xsd:schema-tag> .

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

Het namespace-voorvoegsel dat wordt gebruikt is willekeurig. In deze documentatie wordt het sql-prefix gebruikt om de annotatienaamruimte aan te duiden en om annotaties in deze naamruimte te onderscheiden van die in andere naamruimtes.

Voorbeeld van een geannoteerd XSD-schema

In het volgende voorbeeld bestaat het XSD-schema uit een <Person.Contact-element> . Het <Employee-element> heeft een ContactID-attribuut en <FirstName> en <Achternaam-onderelementen> :

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

Annotaties worden toegevoegd aan dit XSD-schema om de elementen en attributen ervan toe te wijzen op de databasetabellen en -kolommen:

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

In het mappingschema wordt het <Contact-element> gekoppeld aan de Person.Contact-tabel in de voorbeelddatabase AdventureWorks2025 door gebruik te maken van de sql:relation-annotatie . De attributen ConID, FName en LName worden gekoppeld aan de kolommen ContactID, FirstName en EtterName in de Person.Contact-tabel door gebruik te maken van de sql: field-annotaties.

Dit geannoteerde XSD-schema biedt de XML-weergave van de relationele gegevens. Deze XML-weergave kan worden bevraagd met de XPath-taal. Een XPath-query levert als gevolg hiervan een XML-document terug, in plaats van de rijset die door SQL-queries wordt teruggegeven.

Opmerking

In het mappingschema hangt de naamvalsgevoeligheid voor de gespecificeerde relationele waarden (zoals tabelnaam en kolomnaam) af van of SQL Server hoofdlettergevoelige rangatie-instellingen gebruikt. Zie Sortering en Unicode-ondersteuningvoor meer informatie.

Andere hulpbronnen

Meer informatie over XML Schema Definition language (XSD), XML Path language (XPath) en Extensible Stylesheet Language Transformations (XSLT) vindt u op de volgende websites:

Zie ook

Overwegingen voor geannoteerde schemabeveiliging (SQLXML 4.0)
Geannoteerde XDR-schema's (verouderd in SQLXML 4.0)