Condividi tramite


Mappatura esplicita degli elementi e attributi XSD su tabelle e colonne (SQLXML 4.0)

Quando si usa uno schema XSD per fornire una visualizzazione XML del database relazionale, gli elementi e gli attributi dello schema devono essere mappati a tabelle e colonne del database. Le righe nella tabella/vista del database verranno mappate agli elementi del documento XML. I valori di colonna nel database vengono mappati a attributi o elementi.

Quando le query XPath vengono specificate sullo schema XSD con annotazioni, i dati per gli elementi e gli attributi nello schema vengono recuperati dalle tabelle e dalle colonne a cui eseguono il mapping. Per ottenere un singolo valore dal database, il mapping specificato nello schema XSD deve avere sia una relazione che una specifica di campo. Se il nome di un elemento/attributo non corrisponde al nome di tabella/vista o colonna a cui esegue il mapping, le sql:relation annotazioni 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 sql:relation viene specificato in 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 esegue il sql-field 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.

Un. 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 . Ciò comporta 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 come MySchema-annotated.xml.

  2. Copiare il modello seguente sotto e incollarlo in un file di testo. Salvare il file come MySchema-annotatedT.xml nella stessa directory in cui è stato salvato 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 viene 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>