Agrupar en XSL 1.0
Publicado por Tano (1 intervención) el 09/02/2010 13:24:58
Hola.
Con una consulta a base de datos obtengo un archivo xml el cual, entre otras cosas, contiene:
<contrato num="con1">
<incidencia num_in="in1">
</incidencia>
</contrato>
<contrato num="con1">
<incidencia num_in="in2">
</incidencia>
</contrato>
<contrato num="con2">
<incidencia num_in="in1">
</incidencia>
</contrato>
...por ejemplo.
Este archivo lo formateo mediante XSL 1.0.
El caso es que necesito agrupar por contratos para que se muestre algo como esto:
Contrato con1
Incidencia in1
Incidencia in2
Contrato con2
Incidencia in1
Si declaro un template asi
<xsl:template match="Contrato" mode="group" >
<fieldset><legend>Contrato : <xsl:value-of select="@numero"/></legend>
<table>
.....
</table>
</fieldset>
</xsl:template>
Y luego lo aplico con <xsl:apply-templates select="modificacionContrato"/> los datos me aparecen sin el formato (fieldset, table....) antes especificado.
¿Cómo puedo hacer para que XSL me agrupe usando ese template declarado?
Muchas gracias y un saludo.
Con una consulta a base de datos obtengo un archivo xml el cual, entre otras cosas, contiene:
<contrato num="con1">
<incidencia num_in="in1">
</incidencia>
</contrato>
<contrato num="con1">
<incidencia num_in="in2">
</incidencia>
</contrato>
<contrato num="con2">
<incidencia num_in="in1">
</incidencia>
</contrato>
...por ejemplo.
Este archivo lo formateo mediante XSL 1.0.
El caso es que necesito agrupar por contratos para que se muestre algo como esto:
Contrato con1
Incidencia in1
Incidencia in2
Contrato con2
Incidencia in1
Si declaro un template asi
<xsl:template match="Contrato" mode="group" >
<fieldset><legend>Contrato : <xsl:value-of select="@numero"/></legend>
<table>
.....
</table>
</fieldset>
</xsl:template>
Y luego lo aplico con <xsl:apply-templates select="modificacionContrato"/> los datos me aparecen sin el formato (fieldset, table....) antes especificado.
¿Cómo puedo hacer para que XSL me agrupe usando ese template declarado?
Muchas gracias y un saludo.
Valora esta pregunta


0