Xml 对每个组使用XSL

Xml 对每个组使用XSL,xml,xslt,Xml,Xslt,我会尽量把它说清楚。我有一个XML,它的内部结构如下: <NetworkData> <NameOfSection1> <ChangeHistory> <ChangeHistoryItem> <Date>2012-06-04</Date> <Description>Add the USIM/SIM header</Description>

我会尽量把它说清楚。我有一个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>

2012-06-04
添加USIM/SIM标头
2014-01-17
不变
2014-01-17
不变
2014-01-17
不变
我想在XSL中创建一个表,其中包含所有节中的所有
ChangeHistoryItems
,并按日期排序。最后,我想通过ApacheFop生成一个PDF文件

我为每个小组阅读了
,但我不知道该如何使用它,我是XSL/XML的初学者。你能帮忙吗?非常感谢。

<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. 
-任何级别的所有changeHistoryItem
-按元素日期排序。

谢谢Jaroslav,我将尝试您的代码并尽快向您发送反馈。我尝试了该代码,效果非常好。再次感谢您Jaroslav,我接受了您的回答。您好,我回答了HTML表格的问题,因为编辑之前未指定输出。:)
对于每个组
都没有多大帮助;似乎不希望对数据进行分组。当需要向结构中添加层次结构层时,会使用xsl:for-each-group。在这里,您需要删除一个层,这要复杂得多。