Condividi tramite


Mapping XSD personalizzati a tabelle/colonne (SQLXML)

Si applica a: SQL Server database SQL di Azure

Quando si utilizza uno schema XSD per fornire una vista XML del database relazionale, è necessario eseguire il mapping degli elementi e degli attributi dello schema a tabelle e colonne del database. Le righe della tabella/vista di database vengono mappate agli elementi del documento XML. I valori di colonna del database vengono mappati agli attributi o agli elementi.

Quando vengono specificate query XPath nello schema XSD con annotazioni, i dati relativi agli elementi e agli attributi dello schema vengono recuperati dalle tabelle e dalle colonne alle quali vengono mappati. Per ottenere un solo valore dal database, per il mapping specificato nello schema XSD devono essere indicati sia la relazione che il campo. Se il nome di un elemento/attributo non corrisponde al nome di tabella/vista o colonna a cui esegue il mapping, le annotazioni sql:relation e sql:field vengono utilizzate per specificare il mapping tra un elemento o un attributo in un documento XML e la tabella (vista) o colonna in un database.

sql-relation

L'annotazione sql:relation viene aggiunta per eseguire il mapping di un nodo XML nello schema XSD a una tabella di database. Il nome di una tabella (vista) viene specificato come valore dell'annotazione sql:relation .

Quando si specifica sql:relation su un elemento, l'ambito di questa annotazione si applica a tutti gli attributi e gli elementi figlio descritti nella definizione di tipo complesso di tale elemento, fornendo quindi un collegamento per la scrittura di annotazioni.

L'annotazione sql:relation è utile anche quando gli identificatori validi in Microsoft SQL Server non sono validi in XML. Ad esempio, "Order Details" è un nome di tabella valido in SQL Server ma non in XML. In questi casi, l'annotazione sql:relation può essere usata per specificare il mapping, ad esempio:

<xsd:element name="OD" sql:relation="[Order Details]">  

sql-field

L'annotazione sql-field esegue il mapping di un elemento o di un attributo a una colonna di database. L'annotazione sql:field viene aggiunta per eseguire il mapping di un nodo XML nello schema a una colonna di database. Non è possibile specificare sql:field in un elemento di contenuto vuoto.

Esempi

Per creare esempi reali utilizzando gli esempi seguenti, è necessario soddisfare alcuni requisiti. Per altre informazioni, vedere Requisiti per l'esecuzione di esempi SQLXML.

R. Specifica delle annotazioni sql:relation e sql:field

In questo esempio lo schema XSD è costituito da un <elemento Contact> di tipo complesso con <elementi figlio FName e< LName>> e l'attributo ContactID.

L'annotazione sql:relation esegue il mapping dell'elemento <Contact> alla tabella Person.Contact nel database AdventureWorks. L'annotazione sql:field esegue il mapping dell'elemento< FName> alla colonna FirstName e all'elemento< LName> alla colonna LastName.

Non viene specificata alcuna annotazione per l'attributo ContactID . Il risultato ottenuto è un mapping predefinito dell'attributo alla colonna con lo stesso nome.

<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="ContactID"   
                       type="xsd:integer" />  
    </xsd:complexType>  
  </xsd:element>  
</xsd:schema>  
Per testare una query Xpath di esempio sullo schema
  1. Copiare il codice dello schema precedente e incollarlo in un file di testo. Salvare il file con il nome MySchema-annotated.xml.

  2. Copiare il modello seguente e incollarlo in un file di testo. Salvare il file con il nome MySchema-annotatedT.xml nella stessa directory in cui è stato salvato il file MySchema-annotated.xml.

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

    Il percorso della directory specificato per lo schema di mapping MySchema-annotated.xml è relativo alla directory in cui è salvato il modello. È possibile specificare anche un percorso assoluto, ad esempio:

    mapping-schema="C:\SqlXmlTest\MySchema-annotated.xml"  
    
  3. Creare e utilizzare lo script di test SQLXML 4.0 (Sqlxml4test.vbs) per eseguire il modello.

    Per altre informazioni, vedere Uso di ADO per eseguire query SQLXML.

Di seguito è riportato il set di risultati parziale:

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