Condition <xsl: output> en XSLT 1.0?
Tengo una hoja de estilo XSLT 1.0 (2.0 no es una opción) que produce XHTML. Dependiendo de un parámetro, puede producir un documento XHTML completo válido o solo un<div>...</div>
fragmento, destinado a ser incluido en una página web.
Mi problema es producir diferentes declaraciones XML en estos dos casos. Para la página independiente, necesito:
<xsl:output doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"/>
Y para el<div>
uno
<xsl:output omit-xml-declaration="yes"/>
Pero<xsl:output>
no se puede incluir en un<xsl:if>
. Solo puede ser ladirect niño de<xsl:stylesheet>
.
a única solución que veo es crear una hoja de estilo con la mayoría de las plantillas y luego dos pequeños "envoltorios" con la @ correc<xsl:output>
y cuál será<xsl:import>
la hoja de estilo principal.
Estaba buscando una idea mejor, pero aparentemente no hay ninguna. Siguiendo el consejo de Andrew Hare y jelovirt, escribí dos "controladores", dos hojas de estilo simples que llaman el @ apropia<xsl:output>
y luego la hoja de estilo principal. Aquí está uno de estos controladores, el de HTML independiente:
<?xml version="1.0" encoding="us-ascii"?>
<!-- This file is intended to be used as the main stylesheet, it creates a
standalone Web page.
-->
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:import href="traceroute2html.xsl"/>
<xsl:param name="standalone" select="'true'"/>
<xsl:output doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"/>
</xsl:stylesheet>