用于从 XML 模式中挑选和分组元素的 XSLT

XSLT for picking and grouping elements from XML schema

我有一个 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>

我想 select 每个节点 <Row> 中的元素 <id> and <value><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>'

这是 XSLT 2.0 中的标准分组模式(我假设您使用的是 2.0,因为您没有指定)。

https://www.xml.com/pub/a/2003/11/05/tr.html

检查此 link 它将对您塑造算法以执行您想要的操作有很大帮助。

如果您可以共享 XSLT 代码,那么我们可以为您提供更多帮助。

祝你好运