Pergunta

Por razões históricas, temos uma mistura de

<xsl:output method="xml">

e

<xsl:output method="html">

e

<xsl:output method="xhtml">

dentro de um incluem-hierarquia de arquivos XSL. Agora queremos refatorar para que todos os arquivos XSL usar o mesmo método de saída.

No final queremos produzir XHTML-output então eu suponho que este último seria a melhor escolha.

Mas quais são as diferenças entre esses três saída-métodos e que você usa para que tipo de solução?

Editar: Eu estou usando XSLT 2.0

Foi útil?

Solução 2

Eu encontrei a resposta lendo a especificação XSLT 2.0 ( XSLT 2,0 e 1,0 Xquery serialização ).

Dada uma instância vazia de um XHTML elemento cujo modelo de conteúdo não é VAZIO (por exemplo, um vazio ou título parágrafo) o serializador não deve usar a forma minimizada. Ou seja, ele deve <p></p> saída e não <p />.

Dado um elemento XHTML cujo conteúdo modelo está vazio, o mosto serializer usar a sintaxe tag minimizado, para <br /> exemplo, como a alternativa sintaxe <br></br> permitido por XML dá resultados incertos em muitos agentes de utilizador existentes. o serializer Deve incluir um espaço antes do à direita />, v.g. <br />, <hr /> e <img src="karen.jpg" alt="Karen" />.

O serializador não deve usar a entidade &apos; referência que, embora legal em XML e, portanto, em XHTML, não está definido no HTML e não é reconhecido por todos os agentes de usuário HTML.

A DEVE namespace saída serializer declarações de uma forma que é consistente com os requisitos de o XHTML DTD se isso é possível. o XHTML 1.0 DTDs exigir que a declaração xmlns = "http://www.w3.org/1999/xhtml" a aparecer no elemento html, e apenas no elemento html. o namespace saída deve serializer declarações que são consistentes com os nós namespace apresentar no resultar árvore, mas deve evitar saída namespace redundante declarações sobre os elementos de onde o DTD os faria inválido.

Isso significa que a resposta está usando <xsl:output method="xhtml">.

Outras dicas

HTML serializará como HTML, de modo que a saída pode não ser XML bem formado. Se você só está enviando para navegadores e não se preocupam com a possibilidade de analisar como XML, em seguida, que o trabalho de maio para você.

XML serializará como XML, então a saída será bem formado, mas você pode funcionar em alguns problemas com navegadores usando a saída. Pequenas coisas, como <script /> e <div /> elementos auto fechamento. Para evitar esse problema, você teria que jogar jogos, como a adição de comentários dentro do elemento (por exemplo <script src="someJSFile.js"><!--don't close my script tag --></script>)

Se você tem um motor de XSLT 2.0 e querem bem formado saída HTML sem a dor de cabeça de se preocupar com a forma como alguns elementos são serializados, em seguida, usar XHTML.

Tanto quanto eu sei, não há nenhuma method:xhtml à directiva xsl:output em XSLT 1.0.

wc3schools concordar com isso.

Como XHTML é um dialeto XML, que é o que eu usaria.

Se, no entanto você está usando XSLT 2.0 , poder também usar xhtml, já que é o que você está a saída.

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