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
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>
Salve este arquivo como Source.xml.
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('<!DOCTYPE StaffMember [', '<!ELEMENT StaffMember (#PCDATA)>', ']>')" /> <StaffMember> <xsl:value-of select="Name"/> </StaffMember> </xsl:template> </xsl:stylesheet>
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
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
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
Abra um prompt de comando e localize a pasta que contém seus três arquivos.
Digite
cscript xform.vbs
no prompt de comando.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.