Xml 对每个组使用XSL
我会尽量把它说清楚。我有一个XML,它的内部结构如下:Xml 对每个组使用XSL,xml,xslt,Xml,Xslt,我会尽量把它说清楚。我有一个XML,它的内部结构如下: <NetworkData> <NameOfSection1> <ChangeHistory> <ChangeHistoryItem> <Date>2012-06-04</Date> <Description>Add the USIM/SIM header</Description>
<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。在这里,您需要删除一个层,这要复杂得多。