如果我有以下XML
<Set>
<Row>
<DBNAME>X</DBNAME>
<ID>1</ID>
</Row>
<Row>
<DBNAME>X</DBNAME>
<ID>2</ID>
</Row>
<Row>
<DBNAME>Y</DBNAME>
<ID>1</ID>
</Row>
<Row>
<DBNAME>Y</DBNAME>
<ID>4</ID>
</Row>
</Set>
我需要转换为这种格式。
<RESULTSET>
<RESULT>
<DBNAME>X</DBNAME>
<ID>1,2</ID>
</RESULT>
<RESULT>
<DBNAME>Y</DBNAME>
<ID>1,4</ID>
</RESULT>
</RESULTSET>
我需要做什么。 目前没有DBNAME的条件我可以做类似的事情
<ID>
<xsl:for-each select="Set">
<xsl:choose>
<xsl:when test="position() = 1">
<xsl:value-of select="ID"></xsl:value-of>
</xsl:when>
<xsl:otherwise>
,<xsl:value-of select="ID"></xsl:value-of>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</ID>
给我<ID>1,2,1,4<ID>
感谢您的帮助!
答案 0 :(得分:0)
使用分组,Muenchian grouping与XSLT 1.0和XSLT 2.0
<xsl:template match="Set">
<RESULTSET>
<xsl:for-each-group select="Row" group-by="DBNAME">
<RESULT>
<xsl:copy-of select="DBNAME"/>
<ID><xsl:value-of select="current-group()/ID" separator=","/></ID>
</RESULT>
</xsl:for-each-group>
</RESULTSET>
</xsl:template>