Condividi tramite


Introduzione agli schemi XSD con annotazioni (SQLXML 4.0)

È possibile creare viste XML di dati relazionali usando il linguaggio XSD (XML Schema Definition). È quindi possibile eseguire query su queste viste usando query XPath (XML Path Language). Questa operazione è simile alla creazione di viste usando istruzioni CREATE VIEW e quindi specificando query SQL sulla vista.

Un XML Schema descrive la struttura di un documento XML e descrive anche i vari vincoli sui dati nel documento. Quando si specificano query XPath sullo schema, la struttura del documento XML restituito viene determinata dallo schema in base al quale viene eseguita la query XPath.

In uno schema XSD, l'elemento <xsd:schema> racchiude l'intero schema. Tutte le dichiarazioni di elemento devono essere contenute all'interno dell'elemento <xsd:schema> . È possibile descrivere gli attributi che definiscono lo spazio dei nomi in cui risiede lo schema e gli spazi dei nomi usati nello schema come proprietà dell'elemento <xsd:schema> .

Uno schema XSD valido deve contenere l'elemento <xsd:schema> definito come segue:

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

L'elemento <xsd:schema> è derivato dalla specifica dello spazio dei nomi XML Schema in http://www.w3.org/2001/XMLSchema.

Annotazioni allo schema XSD

È possibile utilizzare uno schema XSD con annotazioni che descrivono il mapping a un database, eseguire una query sul database e restituire i risultati sotto forma di documento XML. Le annotazioni vengono fornite per eseguire il mapping di uno schema XSD a tabelle e colonne di database. È possibile specificare query XPath sulla vista XML creata dallo schema XSD per eseguire query sul database e ottenere risultati come XML.

Annotazioni

In Microsoft SQLXML 4.0 il linguaggio dello schema XSD supporta le annotazioni introdotte con il linguaggio di schema ridotto (XDR) XML-Data in SQL Server 2000. XDR con annotazioni è deprecato in SQLXML 4.0.

Nel contesto del database relazionale, è utile eseguire il mapping dello schema XSD arbitrario a un archivio relazionale. Un modo per ottenere questo risultato consiste nell'annotare lo schema XSD. Uno schema XSD con le annotazioni viene definito schema di mapping, che fornisce informazioni relative al mapping dei dati XML da mappare all'archivio relazionale. Uno schema di mapping è, in effetti, una visualizzazione XML dei dati relazionali. Questi mapping possono essere usati per recuperare dati relazionali come documento XML.

Spazio dei nomi per le annotazioni

In uno schema XSD le annotazioni vengono specificate usando lo spazio dei nomi urn:schemas-microsoft-com:mapping-schema. Come illustrato nell'esempio seguente, il modo più semplice per specificare lo spazio dei nomi consiste nel specificarlo nel <tag xsd:schema> .

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

Il prefisso dello spazio dei nomi usato è arbitrario. In questa documentazione il prefisso sql viene usato per indicare lo spazio dei nomi delle annotazioni e per distinguere le annotazioni in questo spazio dei nomi da quelle in altri spazi dei nomi.

Esempio di schema XSD con annotazioni

Nell'esempio seguente lo schema XSD è costituito da un <elemento Person.Contact> . L'elemento <Employee> ha un attributo ContactID e <gli elementi figlio FirstName e LastName>>:<

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

Le annotazioni vengono aggiunte a questo schema XSD per eseguire il mapping degli elementi e degli attributi alle tabelle e alle colonne del database:

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

Nello schema di mapping, l'elemento <Contact> viene mappato alla tabella Person.Contact del database AdventureWorks di esempio usando l'annotazione sql:relation . Gli attributi ConID, FName e LName vengono mappati alle colonne ContactID, FirstName e LastName nella tabella Person.Contact usando le sql:field annotazioni.

Questo schema XSD con annotazioni fornisce la visualizzazione XML dei dati relazionali. È possibile eseguire query su questa vista XML usando il linguaggio XPath. Una query XPath restituisce un documento XML come risultato, anziché il set di righe restituito dalle query SQL.

Annotazioni

Nello schema di mapping, la distinzione tra maiuscole e minuscole per i valori relazionali specificati(ad esempio nome tabella e nome di colonna) dipende dall'uso di impostazioni delle regole di confronto con distinzione tra maiuscole e minuscole in SQL Server. Per ulteriori informazioni, vedere Collazione e supporto Unicode.

Altre risorse

Altre informazioni sul linguaggio XSD (XML Schema Definition Language), sul linguaggio XPath (XML Path Language) e sulle trasformazioni XSLT (Extensible Stylesheet Language Transformations) sono disponibili nei siti Web seguenti:

Vedere anche

Considerazioni sulla sicurezza dello schema con annotazioni (SQLXML 4.0)
Schemi XDR con annotazioni (deprecato in SQLXML 4.0)