Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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 los 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 corchete angular (< and >
) se transforman de forma predeterminada en < and >
secuencias de caracteres. Sin embargo, a veces este comportamiento no es deseable, como cuando 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 los hardware, software, infraestructura de red y service packs 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 (DOM) XML
Crear un documento XML y una hoja de estilos XSL
Abra un editor de texto como el Bloc de notas y, a continuación, 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 el primer elemento 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ó.
Usar Windows Script 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ó.
Probar el procedimiento
Abra una línea de comandos y luego busque la carpeta que contiene sus 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 tendrá el formato XML 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.