Creazione di sezioni CDATA mediante sql:use-cdata (schema XDR)
Importante |
---|
Questo argomento viene incluso come riferimento per le applicazioni legacy. Per la funzionalità descritta non è previsto alcun progetto di sviluppo futuro, pertanto si consiglia di evitare di utilizzarla in un nuovo progetto di sviluppo. Utilizzare invece gli schemi XSD con annotazioni per creare le 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). |
In XML vengono utilizzate le sezioni CDATA per eseguire l'escape di blocchi di testo contenenti caratteri che, altrimenti, verrebbero riconosciuti come markup.
I dati Microsoft SQL Server possono contenere caratteri considerati speciali dal parser XML, ad esempio i caratteri <, >, <=, & vengono trattati come caratteri di markup. Se si desidera evitare dati SQL Server che contengono caratteri speciali trattati come markup, è possibile eseguirne il wrapping in una sezione CDATA. Il testo inserito nella sezione CDATA viene trattato come testo normale.
Viene utilizzata l'annotazione sql:use-cdata per specificare se deve essere eseguito il wrapping in una sezione CDATA dei dati restituiti da SQL Server. Utilizzare l'annotazione sql:use-cdata per indicare se il valore della colonna specificata da sql:field deve essere inclusa in una sezione CDATA. L'annotazionesql:use-cdata può essere specificata in <ElementType> o <element> e accetta un valore Booleano (0 = FALSE, 1 = TRUE). Non è possibile utilizzare sql:use-cdata con sql:url-encode o uno dei tipo di attributo ID, IDREF, IDREFS, NMTOKEN o NMTOKENS.
Esempi
Per creare esempi reali utilizzando gli esempi seguenti, è necessario soddisfare alcuni requisiti. Per ulteriori informazioni, vedere Requisiti per l'esecuzione di esempi di SQLXML.
A. Specifica di sql:use-cdata su un elemento
In questo schema sql:use-cdata è impostato su 1 (TRUE) per l'elemento <AddressLine1>. I dati relativi a <AddressLine1> vengono pertanto restituiti nella sezione CDATA.
<?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="AddressID" content="textOnly" />
<ElementType name="AddressLine1" content="textOnly" />
<ElementType name="Address" sql:relation="Person.Address">
<element type="AddressID" />
<element type="AddressLine1" sql:use-cdata="1" />
</ElementType>
</Schema>
Per testare una query Xpath di esempio sullo schema
Copiare il codice dello schema precedente e incollarlo in un file di testo. Salvare il file con il nome UseCdataXdr.xml.
Copiare il modello seguente e incollarlo in un file di testo. Salvare il file con il nome UseCdataXdrT.xml nella stessa directory nella quale è stato salvato UseCdataXdr.xml.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="UseCdataXdr.xml"> /Address[@AddressID=1] </sql:xpath-query> </ROOT>
Il percorso della directory specificato per lo schema di mapping (UseCdataXdr.xml) è relativo alla directory nella quale viene salvato il modello. È possibile specificare anche un percorso assoluto, ad esempio:
mapping-schema="C:\MyDir\UseCdataXdr.xml"
Creare e utilizzare lo script di test SQLXML 4.0 (Sqlxml4test.vbs) per eseguire il modello.
Per ulteriori informazioni, vedere Utilizzo di ADO per eseguire query SQLXML 4.0.
Set di risultati:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Address>
<AddressID>1</AddressID>
<AddressLine1>
<![CDATA[ 1970 Napa Ct.]]>
</AddressLine1>
</Address>
</ROOT>