使用XSL for-each-group

时间:2014-05-13 10:02:37

标签: xml xslt

我会尽量让它变得清晰。我有一个XML,其内部结构如下:

<NetworkData>
  <NameOfSection1>
    <ChangeHistory>
      <ChangeHistoryItem>
        <Date>2012-06-04</Date>
        <Description>Add the USIM/SIM header</Description>
      </ChangeHistoryItem>
    </ChangeHistory>
  </NameOfSection1>
  <NameOfSection2>
    <ChangeHistory>
      <ChangeHistoryItem>
        <Date>2014-01-17</Date>
        <Description>Not changed</Description>
      </ChangeHistoryItem>
      <ChangeHistoryItem>
        <Date>2014-01-17</Date>
        <Description>Not changed</Description>
      </ChangeHistoryItem>
      <ChangeHistoryItem>
        <Date>2014-01-17</Date>
        <Description>Not changed</Description>
      </ChangeHistoryItem>
    </ChangeHistory>
  </NameOfSection2>
</NetworkData>

我想在XSL中创建一个表,其中包含所有部分中的所有ChangeHistoryItems,按日期排序。最后,我想通过Apache FOP生成PDF文件。

我读到了for-each-group,但我不知道应该如何使用它,我是XSL / XML的初学者。你能帮我吗?非常感谢。

1 个答案:

答案 0 :(得分:0)

<xsl:template match="/">
  <html>
  <body>
  <h2>Change history</h2>
    <table border="1">
      <tr bgcolor="#9acd32">
        <th style="text-align:left">Date</th>
        <th style="text-align:left">Description</th>
      </tr>
      <xsl:for-each select="//ChangeHistoryItem">
       <xsl:sort select="Date"/>
      <tr>
        <td><xsl:value-of select="Date"/></td>
        <td><xsl:value-of select="Description"/></td>
      </tr>
      </xsl:for-each>
    </table>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>

以下是说明:

<xsl:for-each select="//ChangeHistoryItem"> - all changeHistoryItem in any level
<xsl:sort select="Date"/> - Sort by elem date.