Pergunta

Meu problema é que meu documento XML contém trechos de XHTML e, ao passá-lo por um XSLT, gostaria que ele renderizasse esses trechos sem deturpá-los.

Tentei agrupar o trecho em um CDATA, mas não funciona, pois menor que e maior que são traduzidos para < e > em vez de serem ecoados diretamente.

Qual é o XSL necessário para fazer isso?

Foi útil?

Solução

<xsl:template match="@*|node()">
  <xsl:copy>
    <xsl:apply-templates select="@*|node()"/>
  </xsl:copy>
</xsl:template>

Isso é chamado de “transformação de identidade” no Especificação XSLT.

Outras dicas

Encontrei esse problema e a cópia é certamente a mais fácil de usar.A identidade funciona, mas são 5 linhas de código e você precisaria chamar esse modelo, não apenas defini-lo como está em seu documento XSLT (caso contrário, você provavelmente não obterá o que esperava em sua saída).

Na verdade, meu principal problema era copiar o conteúdo de uma tag, e não a tag em si.Na verdade, é muito fácil de resolver, mas demorei um pouco para descobrir (talvez porque QtXmlPatterns trave bastante!)

Portanto, o seguinte copia a tag nomeada aqui e todos os seus filhos:

<xsl:copy-of select="this/tag/here"/>

Mas na maioria das vezes você não quer fazer isso porque <here> é na verdade o contêiner, ou seja, ele não deve aparecer na saída.Nesse caso você pode simplesmente fazer isso:

<xsl:copy-of select="this/tag/here/*"/>

Isso copia todos os filhos encontrados na tag chamada <aqui>.

Supondo que seu xhtml esteja em um elemento YYY

http://www.dpawson.co.uk/xsl/sect2/N1930.html explica opções

xsl:cópia de

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top