我需要根据某个属性对值进行分组并填充它。
<?xml version="1.0" encoding="UTF-8" ?>
<dbqueries>
<environment>LOCAL</environment>
<label />
<description />
<dbquery id="lijst">
<descriptor>
<database />
<originalquery>select * from T_L5_HRB_Lijst_Comd</originalquery>
<querystring>select * from T_L5_HRB_Lijst_Comd</querystring>
</descriptor>
<columns>
<column name="Enveloppe" type="VARCHAR" />
<column name="ORG_NUM" type="VARCHAR" />
<column name="UITVOERINGSNIVEAU" type="VARCHAR" />
<column name="CSTAMNUMMER" type="VARCHAR" />
</columns>
<rows>
<row Enveloppe="ACOS" POST_NUM="1000" UITVOERINGSNIVEAU="BnComd" CSTAMNUMMER="1" />
<row Enveloppe="ACOS" POST_NUM="5000" UITVOERINGSNIVEAU="BnComd" CSTAMNUMMER="2" />
<row Enveloppe="DG" POST_NUM="1001" UITVOERINGSNIVEAU="BdeComd" CSTAMNUMMER="4" />
</rows>
因此,对于每个UITVOERINGSNIVEAU,我想得到一个带有标题的单元格,然后用UITVOERINGSNIVEAU获取上面每行的一行。对于我写的例子,它必须如下所示:
<rows>
<row>
<cell image="folder.gif">BnComd</cell>
<row>
<cell>ACOS</cell>
<cell>1000</cell>
<cell>1</cell>
</row>
<row>
<cell>ACOS</cell>
<cell>5000</cell>
<cell>2</cell>
</row>
</row>
<row>
<cell image="folder.gif">BdeComd</cell>
<row>
<cell>DG</cell>
<cell>1001</cell>
<cell>4</cell>
</row>
</row>
</rows>
答案 0 :(得分:1)
使用
<xsl:template match="/*">
<rows>
<xsl:for-each-group select="//rows/row" group-by="@UITVOERINGSNIVEAU">
<row>
<cell image="folder.gif"><xsl:value-of select="current-grouping-key()"/></cell>
<xsl:apply-templates select="current-group()"/>
</row>
</xsl:for-each-group>
</rows>
</xsl:template>
<xsl:template match="row">
<row>
<xsl:apply-templates select="@* except @UITVOERINGSNIVEAU"/>
</row>
</xsl:template>
<xsl:template match="row/@*">
<cell><xsl:value-of select="."/></cell>
</xsl:template>