Compartir a través de


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 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

  1. 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>
    
  2. Guarde este archivo como Source.xml.

  3. 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('&lt;!DOCTYPE StaffMember [',
             '&lt;!ELEMENT StaffMember (#PCDATA)&gt;',
             ']&gt;')" />
            <StaffMember>
                <xsl:value-of select="Name"/>
            </StaffMember>
        </xsl:template>
    </xsl:stylesheet>
    
  4. 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

  1. 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
    
  2. 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

  1. Abra una línea de comandos y luego busque la carpeta que contiene sus tres archivos.

  2. Escriba cscript xform.vbs en el símbolo del sistema.

  3. 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.