Condividi tramite


Introduzione agli schemi XDR con annotazioni (obsoleti in SQLXML 4.0)

Nota importanteImportante

Questo argomento è incluso come riferimento per le applicazioni legacy. Per la funzionalità descritta non è previsto alcun progetto di sviluppo futuro. Evitare pertanto di utilizzare tale funzionalità in un nuovo progetto di sviluppo. Utilizzare invece gli schemi XSD con annotazioni per creare viste XML. Per ulteriori informazioni, vedere Introduzione agli schemi XSD con annotazioni (SQLXML 4.0). È possibile convertire gli schemi XDR con annotazioni esistenti in schemi XSD. Per ulteriori informazioni, vedere Conversione di schemi XDR con annotazioni in schemi XSD equivalenti (SQLXML 4.0).

È possibile creare viste XML di dati relazionali utilizzando schemi XDR (XML-Data Reduced). Su tali viste è quindi possibile eseguire query utilizzando query XPath. La procedura è simile alla creazione di una vista tramite istruzioni CREATE VIEW e alla definizione di query SQL sulla vista.

Uno schema XML descrive la struttura di un documento XML e i diversi vincoli applicati ai dati del documento. Quando si specificano query XPath sullo schema, la struttura del documento XML restituita è determinata dallo schema su cui viene eseguita la query XPath.

Il linguaggio XDR (XML-Data Reduced) è stato introdotto per la prima volta in MicrosoftSQL Server 2000 per creare schemi XML. XDR è risultato flessibile e ha consentito di superare alcune delle limitazioni imposte dalle definizioni DTD (Document Type Definition), utilizzate anch'esse per descrivere la struttura di documenti XML. A differenza delle definizioni DTD, gli schemi XDR descrivono la struttura di un documento utilizzando la stessa sintassi del documento XML. In una definizione DTD, inoltre, tutto il contenuto dei dati è di tipo carattere. Gli schemi in linguaggio XDR consentono invece di specificare il tipo di dati di un elemento o di un attributo.

In uno schema XDR l'elemento <Schema> include l'intero schema. Come proprietà dell'elemento <Schema> è possibile descrivere attributi che definiscono il nome dello schema e gli spazi dei nomi in cui risiede lo schema. Nel linguaggio XDR tutte le dichiarazioni di elemento devono essere incluse nell'elemento <Schema>.

Di seguito viene fornito un esempio di schema XDR minimo:

<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data">
   ...
</Schema>

L'elemento <Schema> viene derivato dallo spazio dei nomi xml-data (urn:schemas-microsoft-com:xml-data).

[!NOTA]

In questa documentazione si presuppone che l'utente abbia una certa familiarità con il linguaggio dati XML.

Annotazioni dello schema XDR

È possibile utilizzare uno schema XDR con annotazioni che descrivono il mapping al database per eseguire query sul database e restituire i risultati sotto forma di documento XML. In SQL Server 2000 sono state introdotte per la prima volta diverse annotazioni, che è possibile utilizzare per eseguire il mapping dello schema XDR a tabelle e colonne di database SQL. È possibile specificare query XPath sulla vista XML creata dallo schema XDR per eseguire query sul database e ottenere risultati in formato XML.

Si tratta di un'alternativa al processo più complesso di scrittura di una query SQL che utilizza la modalità FOR XML EXPLICIT per descrivere la struttura del documento XML come parte della query. Per superare la maggior parte delle limitazioni relative alle query XPath sugli schemi di mapping, tuttavia, utilizzare query SQL con la modalità FOR XML EXPLICIT per restituire risultati sotto forma di documento XML.

Se si dispone di schemi XDR pubblici, ad esempio uno schema di Microsoft BizTalk, è possibile eseguire una delle operazioni seguenti:

  • Scrivere la query in modalità FOR XML EXPLICIT in modo che i dati generati siano validi rispetto allo schema XDR pubblico. La scrittura di query FOR XML EXPLICIT può tuttavia risultare un'operazione complessa.

  • Eseguire una copia privata dello schema XDR pubblico. Aggiungere quindi annotazioni alla copia privata, generando in tal modo uno schema di mapping. È possibile specificare query XPath sullo schema di mapping. Di conseguenza, la query genera i dati nello spazio dei nomi dello schema pubblico. La creazione di schemi con annotazioni e la definizione di query XPath su tali schemi è un processo molto più semplice rispetto alla scrittura di query FOR XML EXPLICIT complesse. Il processo viene illustrato nella figura seguente.

Utilizzo di una copia dello schema per l'aggiunta di annotazioni

Schema di mapping

Nel contesto del database relazionale è utile eseguire il mapping dello schema XDR arbitrario a un archivio relazionale. Un modo per ottenere questo risultato consiste nell'annotare lo schema XDR. Uno schema XDR con annotazioni è denominato mapping schema e fornisce informazioni relative alla modalità di mapping dei dati XML all'archivio relazionale. Uno schema di mapping è, in definitiva, una vista XML dei dati relazionali. I mapping possono essere utilizzati per recuperare dati relazionali sotto forma di documento XML.

In SQL Server 2000 sono state introdotte diverse annotazioni, che è possibile utilizzare nello schema XDR per eseguire il mapping di elementi e attributi a tabelle e colonne di database. È possibile specificare query sugli schemi di mapping (viste XML) utilizzando XPath (XML Path). Lo schema di mapping descrive la struttura del documento risultante.

Spazio dei nomi per le annotazioni

In uno schema XDR le annotazioni vengono specificate tramite lo spazio dei nomi urn:schemas-microsoft-com:xml-sql.

Nell'esempio seguente viene illustrato come il metodo più semplice per specificare lo spazio dei nomi consista nell'utilizzare il tag <Schema>. Le annotazioni devono essere qualificate dallo spazio dei nomi urn:schemas-microsoft-com:xml-sql.

<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
        xmlns:sql="urn:schemas-microsoft-com:xml-sql"
               >
    ...........
</Schema>

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

Spazio dei nomi per i tipi di dati

Gli schemi XDR consentono di specificare il tipo di dati di un elemento o di un attributo. I tipi di dati vengono specificati tramite lo spazio dei nomi urn:schemas-microsoft-com:datatypes.

Di seguito viene fornito un esempio di schema XDR minimo con le dichiarazioni dello spazio dei nomi:

<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
        xmlns:sql="urn:schemas-microsoft-com:xml-sql"
        xmlns:dt="urn:schemas-microsoft-com:datatypes">
   ...
</Schema>

Il prefisso dello spazio dei nomi utilizzato è arbitrario. In questa documentazione il prefisso dt viene utilizzato per indicare lo spazio dei nomi dei tipi di dati e per distinguere le annotazioni di questo spazio dei nomi da quelle di altri spazi dei nomi.

L'elemento <Schema> viene derivato dallo spazio dei nomi xml-data (urn:schemas-microsoft-com:xml-data).

Esempio di schema XDR

In questo esempio viene illustrata l'aggiunta di annotazioni allo schema XDR. Lo schema XDR è costituito da un elemento <Contacts> e dagli attributi CID, FName e LName.

<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
        xmlns:dt="urn:schemas-microsoft-com:datatypes"
        xmlns:sql="urn:schemas-microsoft-com:xml-sql">

<ElementType name="Contacts" >
    <AttributeType name="CID" />
    <AttributeType name="FName" />
    <AttributeType name="LName" />

    <attribute type="CID" />
    <attribute type="FName" />
    <attribute type="LName" />
</ElementType>
</Schema>

Vengono quindi aggiunte annotazioni allo schema XDR per eseguire il mapping dei relativi elementi e attributi ai nomi di tabelle e colonne SQL del database AdventureWorks. Di seguito viene illustrato lo schema XDR con annotazioni:

<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
        xmlns:dt="urn:schemas-microsoft-com:datatypes"
        xmlns:sql="urn:schemas-microsoft-com:xml-sql">

<ElementType name="Contacts" sql:relation="Person.Contact" >
    <AttributeType name="CID" />
    <AttributeType name="FName" />
    <AttributeType name="LName" />

    <attribute type="CID" sql:field="ContactID" />
    <attribute type="FName" sql:field="FirstName" />
    <attribute type="LName" sql:field="LastName" />
</ElementType>
</Schema>

Nello schema di mapping l'elemento <Contacts> viene mappato alla tabella Person.Contact tramite l'annotazione sql:relation. Gli attributi CID, FName e LName vengono mappati alle colonne ContactID, FirstName e LastName nella tabella Person.Contacttramite le annotazioni sql:field.

Questo schema XDR con annotazioni fornisce la vista XML dei dati relazionali. È possibile eseguire query sulla vista XML utilizzando il linguaggio XPath (XML Path). La query restituisce come risultato un documento XML anziché il set di righe restituito dalle query SQL.

[!NOTA]

Nello schema di mapping i valori relazionali specificati, quali il nome della tabella e il nome della colonna, rispettano la distinzione tra maiuscole e minuscole.