Desabilitar a saída fugindo em transformações

Este artigo mostra como desabilitar a saída fugindo em transformações.

Versão original do produto: Microsoft XML
Número de KB original: 315717

Resumo

Este artigo passo a passo descreve como desabilitar o escape de saída de caracteres, como < and > em uma transformação de folha de estilo XML.

Para garantir que qualquer saída de transformação XSL seja um documento bem formado, os caracteres de colchete de ângulo (< and >) são transformados por padrão em < and > sequências de caracteres. No entanto, às vezes, esse comportamento não é desejável, como quando você deseja gerar uma DTD (Declaração de Tipo de Documento) no documento de saída:

<!DOCTYPE StaffMember [
 <!ELEMENT StaffMember (#PCDATA)>
]>

Requisitos

A lista a seguir descreve o hardware, software, infraestrutura de rede e service packs recomendados que são necessários:

  • Microsoft XML versão 3.0 ou posterior

    Este artigo pressupõe que você esteja familiarizado com os seguintes tópicos:

  • Transformações XML e XSL e o componente MSXML

  • VBScript (Visual Basic Scripting Edition)

  • Modelo de objeto de documento XML (DOM)

Criar um documento XML e uma folha de estilos XSL

  1. Abra um editor de texto, como o Bloco de Notas, e cole o seguinte XML em um documento:

    <?xml version="1.0"?>
    <?xml-stylesheet type="text/xsl" href="Transform.xsl"?>
    <Employee>
        <Name>Chris</Name>
    </Employee>
    
  2. Salve este arquivo como Source.xml.

  3. Crie um novo arquivo no editor de texto e cole a seguinte folha de estilos XSL no arquivo.

    Observação

    O atributo disable-output-escaping="sim" na primeira marca 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. Salve esse arquivo como Transform.xsl na mesma pasta que o documento XML que você criou.

Usar o Script do Windows para executar a folha de estilos

  1. Crie um novo arquivo no editor de texto e cole o seguinte script no arquivo: Opção Explícita

    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. Salve esse arquivo como Xform.vbs na mesma pasta que o documento XML e a folha de estilos XSL que você criou.

Testar o Procedimento

  1. Abra um prompt de comando e localize a pasta que contém seus três arquivos.

  2. Digite cscript xform.vbs no prompt de comando.

  3. A saída da transformação é exibida da seguinte maneira na tela:

    <!DOCTYPE StaffMember [<!ELEMENT StaffMember (#PCDATA)>]>
    <StaffMember>Chris</StaffMember>
    

Solução de problemas

Tenha cuidado ao usar o disable-output-escaping atributo. Se os caracteres gerados < e > não corresponderem, o documento de saída não será XML bem formado. O método transformNodeToObject requer que o resultado seja bem formado, portanto, o método pode não ser concluído se disable-output-escaping for usado.