Deshabilitación del escape de salida en transformaciones
En este artículo se muestra cómo deshabilitar el escape de salida en transformaciones.
Versión original del producto: Microsoft XML
Número de KB original: 315717
Resumen
En este artículo paso a paso se describe cómo deshabilitar el escape de salida de caracteres, como < and >
en una transformación de hoja de estilos XML.
Para garantizar que cualquier salida de transformación XSL sea un documento bien formado, los caracteres de corchetes angulares (< and >
) se transforman de forma predeterminada en < and >
secuencias de caracteres. Sin embargo, a veces este comportamiento no es deseable, como cuando se desea generar una declaración de tipo de documento (DTD) en el documento de salida:
<!DOCTYPE StaffMember [
<!ELEMENT StaffMember (#PCDATA)>
]>
Requisitos
En la lista siguiente se describen el hardware, el software, la infraestructura de red y los Service Pack recomendados que son necesarios:
Microsoft XML versión 3.0 o posterior
En este artículo se supone que está familiarizado con los temas siguientes:
Transformaciones XML y XSL y el componente MSXML
Visual Basic Scripting Edition (VBScript)
Modelo de objetos de documento XML (DOM)
Creación de un documento XML y una hoja de estilos XSL
Abra un editor de texto como el Bloc de notas y pegue el siguiente XML en un documento:
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="Transform.xsl"?> <Employee> <Name>Chris</Name> </Employee>
Guarde este archivo como Source.xml.
Cree un nuevo archivo en el editor de texto y pegue la siguiente hoja de estilos XSL en el archivo.
Nota:
Atributo disable-output-escaping="yes" en la primera etiqueta 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>
Guarde este archivo como Transform.xsl en la misma carpeta que el documento XML que creó.
Uso del script de Windows para ejecutar la hoja de estilos
Cree un nuevo archivo en el editor de texto y pegue el siguiente script en el archivo: Option Explicit
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
Guarde este archivo como Xform.vbs en la misma carpeta que el documento XML y la hoja de estilos XSL que creó.
Prueba del procedimiento
Abra un símbolo del sistema y busque la carpeta que contiene los tres archivos.
Escriba
cscript xform.vbs
en el símbolo del sistema.La salida de la transformación se muestra de la siguiente manera en la pantalla:
<!DOCTYPE StaffMember [<!ELEMENT StaffMember (#PCDATA)>]> <StaffMember>Chris</StaffMember>
Solución de problemas
Tenga cuidado al usar el disable-output-escaping
atributo . Si los caracteres generados < y > no coinciden, el documento de salida no será XML con formato correcto. El método transformNodeToObject requiere que el resultado esté bien formado, por lo que es posible que el método no se complete si disable-output-escaping
se usa.