我有一个XML架构,我需要从每个节点中过滤特定元素,并将这些过滤后的元素分组为所需的XML格式。
XML架构如下 -
<Roots>
<Root>
<Result>
<Row index="1">
<id>001</id>
<value>Test Value</value>
</Row>
<Row index="2">
<id>001</id>
<value>Test Value1</value>
</Row>
<Row index="3">
<id>001</id>
<value>Test Value2</value>
</Row>
<Row index="4">
<id>002</id>
<value>Test Value3</value>
</Row>
<Row index="5">
<id>002</id>
<value>Test Value4</value>
</Row>
<Row index="6">
<id>003</id>
<value>Test Value5</value>
</Row>
<Row index="7">
<id>003</id>
<value>Test Value6</value>
</Row>
<Row index="8">
<id>003</id>
<value>Test Value7</value>
</Row>
</Result>
</Root>
</Root>
我想从<id> and <value>
分组的每个节点<Row>
中选择元素<id>
。预期的XML模式如下 -
<html>
<body>
<table border="1">
<tr>
<td>001</td>
<td>Test Value</td>
<td>Test Value1</td>
<td>Test Value2</td>
</tr>
<tr>
<td>002</td>
<td>Test Value3</td>
<td>Test Value4</td>
</tr>
<tr>
<td>003</td>
<td>Test Value5</td>
<td>Test Value6</td>
<td>Test Value7</td>
</tr>
</table>
</body>
</html>
请您帮我解决上述格式。 使用XSLT如下 -
'<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="Roots/Root/Result">
<html>
<body>
<table border="1">
<xsl:for-each-group select="Row" group-by="id">
<tr>
<td><xsl:value-of select="id"/></td>
<xsl:for-each select="current-group()">
<td><xsl:value-of select="value"/></td>
</xsl:for-each>
</tr>
</xsl:for-each-group>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>'
答案 0 :(得分:0)
这是XSLT 2.0中的标准分组模式(我假设您使用的是2.0,因为您没有指定)。
https://www.xml.com/pub/a/2003/11/05/tr.html
检查此链接,它将帮助您调整算法以实现您想要的效果。
如果您可以共享XSLT代码,那么我们可以为您提供更多帮助。
祝你好运