<xsl:if test="one">
<h2>one</h2>
<xsl:apply-templates select="one"/>
</xsl:if>
<!-- etc -->
Como alternativa, puede crear una plantilla llamada,
<xsl:template name="WriteWithHeader">
<xsl:param name="header"/>
<xsl:param name="data"/>
<xsl:if test="$data">
<h2><xsl:value-of select="$header"/></h2>
<xsl:apply-templates select="$data"/>
</xsl:if>
</xsl:template>
y luego llamar como:
<xsl:call-template name="WriteWithHeader">
<xsl:with-param name="header" select="'one'"/>
<xsl:with-param name="data" select="one"/>
</xsl:call-template>
Pero para ser honesto, que se parece más trabajo para mí ... solo es útil si dibujar un encabezado es complejo ... para un simple <h2>...</h2>
estaría tentado de dejarlo en línea.
Si el título de cabecera es siempre el nombre del nodo, se puede simplifiy la plantilla mediante la eliminación de la arg "$ cabecera", y utilizar en su lugar:
<xsl:value-of select="name($header[1])"/>
sea más exacto :) ¿Cuál es el archivo xml en el que desea utilizar esta plantilla? – kender