Disabilitare l'escape dell'output nelle trasformazioni
Questo articolo illustra come disabilitare l'escape dell'output nelle trasformazioni.
Versione originale del prodotto: Microsoft XML
Numero KB originale: 315717
Riepilogo
Questo articolo dettagliato descrive come disabilitare l'escape di output di caratteri, ad < and >
esempio in una trasformazione foglio di stile XML.
Per garantire che qualsiasi output di trasformazione XSL sia un documento ben formato, i caratteri parentesi angolari (< and >
) vengono trasformati per impostazione predefinita in < and >
sequenze di caratteri. Tuttavia, a volte questo comportamento non è auspicabile, ad esempio quando si vuole generare una dichiarazione di tipo documento (DTD) nel documento di output:
<!DOCTYPE StaffMember [
<!ELEMENT StaffMember (#PCDATA)>
]>
Requisiti
L'elenco seguente descrive l'hardware, il software, l'infrastruttura di rete e i Service Pack consigliati necessari:
Microsoft XML versione 3.0 o successiva
Questo articolo presuppone che si abbia familiarità con gli argomenti seguenti:
Trasformazioni XML e XSL e componente MSXML
Visual Basic, Scripting Edition (VBScript)
DOM (Document Object Model) XML
Creare un documento XML e un foglio di stile XSL
Aprire un editor di testo, ad esempio Blocco note, e quindi incollare il codice XML seguente in un documento:
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="Transform.xsl"?> <Employee> <Name>Chris</Name> </Employee>
Salvare il file come Source.xml.
Creare un nuovo file nell'editor di testo e quindi incollare il foglio di stile XSL seguente nel file.
Nota
Attributo disable-output-escapeing="yes" nel primo tag xsl:value-of:
<?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" omit-xml-declaration="yes"/> <xsl:template match="Employee"> <xsl:value-of disable-output-escaping="yes" select="concat('<!DOCTYPE StaffMember [', '<!ELEMENT StaffMember (#PCDATA)>', ']>')" /> <StaffMember> <xsl:value-of select="Name"/> </StaffMember> </xsl:template> </xsl:stylesheet>
Salvare questo file come Transform.xsl nella stessa cartella del documento XML creato.
Usare lo script di Windows per eseguire il foglio di stile
Creare un nuovo file nell'editor di testo e quindi incollare lo script seguente nel file: Opzione esplicita
Dim objSource Dim objTransform Dim sResult Set objSource = CreateObject("MSXML2.DOMDocument") objSource.async = False objSource.load "Source.xml" Set objTransform = CreateObject("MSXML2.DOMDocument") objTransform.async = False objTransform.load "Transform.xsl" sResult = objSource.TransformNode(objTransform.documentElement) WScript.Echo sResult
Salvare questo file come Xform.vbs nella stessa cartella del documento XML e del foglio di stile XSL creato.
Testare la procedura
Aprire un prompt dei comandi e quindi individuare la cartella che contiene i tre file.
Digitare
cscript xform.vbs
al prompt dei comandi.L'output della trasformazione viene visualizzato come indicato di seguito sullo schermo:
<!DOCTYPE StaffMember [<!ELEMENT StaffMember (#PCDATA)>]> <StaffMember>Chris</StaffMember>
Risoluzione dei problemi
Prestare attenzione quando si usa l'attributo disable-output-escaping
. Se i caratteri e > generati < non corrispondono, il documento di output non sarà xml ben formato. Il metodo transformNodeToObject richiede che il risultato sia ben formato, quindi il metodo potrebbe non essere completo se disable-output-escaping
viene usato.