我想知道是否有方法(实际上我试图找到自己,但根本没有成功)如何根据某些组特征重新排序记录的XML报告。假设我的日志文件包含
形式的记录<?xml version="1.0"?>
<log>
<record id="12345">
<author>me</author>
<ts>2014-05-02T13:03:50.528995Z</ts>
<data>arbitrary data</data>
</record>
<record id="23456">
<author>someone else</author>
<ts>2014-05-05T08:24:32.123495Z</ts>
<data>another arbitrary data</data>
</record>
…
</log>
我想要的是按作者在报告中对记录进行分组:作者姓名和以下特定记录的有序列表。我事先并不知道作者是谁,所以我需要动态创建他们的名字列表。
XSLT能否解决这个问题?
答案 0 :(得分:1)
好的,所以在仔细阅读了Jeni Tennison's教程后,我已经弄明白了。
<xsl:stylesheet version="1.0">
<xsl:key name="key-authors" match="record" use="author" />
<xsl:template match="log">
<xsl:for-each select="record[generate-id() = generate-id(key('kAuthors',author)[1])]">
<xsl:sort select="./author" />
<xsl:value-of select="./author" />
<xsl:for-each select="key('kAuthors',./author)">
<xsl:apply-templates select="."/>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
<xsl:template match="record">
<!-- do whatever with the record values: @id, author, ts, data -->
</xsl:template>
</xsl:stylesheet>
谢谢,michael.hor257k。