Condividi tramite


Mapping predefinito di elementi e attributi XSD a tabelle e colonne (SQLXML 4.0)

Per impostazione predefinita, un elemento di tipo complesso in uno schema con annotazioni XSD esegue il mapping alla tabella (vista) con lo stesso nome nel database specificato e un elemento o attributo di tipo semplice esegue il mapping alla colonna con lo stesso nome nella tabella.

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 del mapping predefinito

In questo esempio non vengono specificate annotazioni nello schema XSD. L'elemento <Person.Contact> è di tipo complesso e, pertanto, esegue il mapping per impostazione predefinita alla tabella Person.Contact nel database AdventureWorks. Tutti gli attributi (ContactID, FirstName, LastName) dell'elemento <Person.Contact> sono di tipo semplice e vengono mappati per impostazione predefinita alle colonne con gli stessi nomi nella tabella Person.Contact.

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"   
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">  
  <xsd:element name="Person.Contact" >  
     <xsd:complexType>  
       <xsd:attribute name="ContactID"  type="xsd:string" />   
       <xsd:attribute name="FirstName"   type="xsd:string" />   
       <xsd:attribute name="LastName"    type="xsd:string" />   
     </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.xml.

  2. Copiare il modello seguente e incollarlo in un file di testo. Salvare il file come MySchemaT.xml nella stessa directory in cui è stato salvato MySchema.xml.

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

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

    mapping-schema="C:\SqlXmlTest\MySchema.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 4.0.

Di seguito è riportato il set di risultati parziale:

<?xml version="1.0" encoding="UTF-8" ?>  
<ROOT>  
  <Person.Contact ContactID="1" FirstName="Gustavo" LastName="Achong"/>  
  <Person.Contact ContactID="2" FirstName="Catherine" LastName="Abel"/>  
   ...  
</ROOT>  

B. Mapping di un elemento XML a una colonna di database

In questo esempio viene eseguito anche il mapping predefinito perché non vengono usate annotazioni. L'elemento <Person.Contact> è di tipo complesso ed esegue il mapping alla tabella con lo stesso nome nel database. Gli elementi <FirstName> e <LastName> e l'attributo EmployeeID sono di tipo semplice e, pertanto, vengono mappati alle colonne con gli stessi nomi. L'unica differenza tra questo e l'esempio precedente è che gli elementi vengono usati per il mapping dei campi FirstName e LastName.

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"   
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">  
  <xsd:element name="Person.Contact">  
    <xsd:complexType>  
      <xsd:sequence>  
        <xsd:element name="FirstName" type="xsd:string" />   
        <xsd:element name="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 MySchemaElements.xml.

  2. Creare il modello seguente (MySchemaElementsT.xml) e salvarlo nella stessa directory usata nel passaggio precedente.

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

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

    mapping-schema="C:\SqlXmlTest\MySchemaElements.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 4.0.

Di seguito è riportato il set di risultati parziale:

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

C. Mapping di un elemento XML a una colonna di tipo di dati XML

In questo esempio viene eseguito anche il mapping predefinito perché non vengono usate annotazioni. L'elemento <Production.ProductModel> è di tipo complesso ed esegue il mapping alla tabella con lo stesso nome nel database. L'attributo ProductModelID è di tipo semplice e quindi esegue il mapping alle colonne con gli stessi nomi. L'unica differenza tra questo e gli esempi precedenti è che l'elemento Instructions> esegue il< mapping a una colonna che usa il xml tipo di dati usando il xsd:anyType tipo .

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"   
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">  
  <xsd:element name="Production.ProductModel">  
    <xsd:complexType>  
      <xsd:sequence>  
        <xsd:element name="Instructions" type="xsd:anyType" />   
      </xsd:sequence>  
      <xsd:attribute name="ProductModelID" type="xsd:integer" />   
    </xsd:complexType>  
  </xsd:element>  
</xsd:schema>  

Il xml tipo di dati è stato introdotto in SQL Server 2005.

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 MySchemaXmlAnyElements.xml.

  2. Creare il modello seguente (MySchemaXmlAnyElementsT.xml) e salvarlo nella stessa directory usata nel passaggio precedente.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
        <sql:xpath-query mapping-schema="MySchemaXmlAnyElements.xml">  
            /Production.ProductModel[@ProductModelID=7]  
        </sql:xpath-query>  
    </ROOT>  
    

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

    mapping-schema="C:\SqlXmlTest\MySchemaXmlAnyElements.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 4.0.

Di seguito è riportato il set di risultati parziale:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
  <Production.ProductModel ProductModelID="7">  
    <Instructions>  
      <root xmlns="http:  
//schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstru  
ctions">  
...  
      </root>  
    <Instructions>  
  </Production.ProductModel>  
</ROOT>  

Vedere anche

Considerazioni sulla sicurezza dello schema con annotazioni (SQLXML 4.0)
Dati XML (SQL Server)
Supporto del tipo di dati xml in SQLXML 4.0