Introduzione agli schemi XSD con annotazioni (SQLXML 4.0)

È possibile creare viste XML di dati relazionali mediante il linguaggio di definizione dello schema XML (XSD). In tali viste è possibile eseguire query utilizzando le query XPath (XML Path language). La procedura è simile a quella utilizzata per creare viste mediante le istruzioni CREATE VIEW e quindi specificare query SQL in tali viste.

Uno schema XML descrive la struttura di un documento XML e i vari vincoli presenti sui dati del documento. Quando si specificano query XPath nello schema, la struttura del documento XML restituita è determinata dallo schema nel quale viene eseguita la query XPath.

In un schema XSD l'elemento <xsd:schema> racchiude l'intero schema, ovvero tutte le dichiarazioni dell'elemento devono essere contenute all'interno dell'elemento <xsd:schema>. È possibile descrivere attributi che definiscono lo spazio dei nomi nel quale si trova lo schema e gli spazi dei nomi utilizzati nello schema come proprietà dell'elemento <xsd:schema>.

Un 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> viene derivato dalla specifica dello spazio dei nomi dello schema XML all'indirizzo http://www.w3.org/2001/XMLSchema.

Annotazioni dello schema XSD

È possibile utilizzare un schema XSD con annotazioni che descrivono il mapping a un database, eseguire query nel database e restituire i risultati nel formato di un documento XML. Le annotazioni vengono fornite per eseguire il mapping di un schema XSD a colonne e tabelle di database. È possibile specificare le query XPath nella vista XML creata dallo schema XSD per eseguire query nel database e ottenere risultati in formato XML.

[!NOTA]

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

Nel contesto del database relazionale risulta utile per eseguire il mapping dello schema XSD arbitrario a un archivio relazionale. Un modo per ottenere questo risultato è annotare lo schema XSD. Un schema XSD con annotazioni viene definito schema di mapping, ovvero si tratta di uno schema che fornisce informazioni su come i dati XML devono essere mappati all'archivio relazionale. Un schema di mapping è, di fatto, una vista XML dei dati relazionali. I mapping possono essere utilizzati per recuperare dati relazionali come documento XML.

Spazio dei nomi per le annotazioni

In un schema XSD le annotazioni vengono specificate mediante lo spazio dei nomi urn:schemas-microsoft-com:mapping-schema. Come mostrato nell'esempio seguente, il modo più semplice per specificare lo spazio dei nomi è 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 utilizzato è arbitrario. In questa documentazione il prefisso sql viene utilizzato per indicare lo spazio dei nomi di annotazione e per distinguere le annotazioni di questo spazio dei nomi da quelle degli 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> presenta un attributo ContactID ed elementi <FirstName> e <LastName> figlio:

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

A questo schema XSD vengono aggiunte annotazioni per eseguire il mapping degli elementi e degli attributi alle colonne e alle tabelle di 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> è mappato alla tabella Person.Contact nel database AdventureWorks di esempio mediante l'annotazione sql:relation. Gli attributi ConID, il FName e LName vengono mappati alle colonne ContactID, FirstName e LastName nella tabella Person.Contact mediante le annotazioni sql:field.

Questo schema XSD con annotazioni fornisce la vista XML dei dati relazionali. In questa vista XML possono essere eseguite query mediante il linguaggio XPath. Una query XPath restituisce come risultato un documento XML anziché il set di righe restituito dalle query SQL.

[!NOTA]

Nello schema di mapping la distinzione tra maiuscole e minuscole per i valori relazionali specificati (ad esempio il nome di tabella e il nome di colonna) dipende dall'eventuale utilizzo delle impostazioni delle regole di confronto con distinzione tra maiuscole e minuscole da parte di SQL Server. Per ulteriori informazioni, vedere Utilizzo di regole di confronto di SQL Server.

Altre risorse

Ulteriori informazioni sul linguaggio di definizione dello schema XML (XSD), sul linguaggio XML Path (XPath) e su Extensible Stylesheet Language Transformations (XSLT) sono disponibili nei siti Web seguenti: