我感兴趣地阅读了网络上可用的技术,这些技术使用 XSL 从包含重复项的 XML 文件中提取唯一的项目列表。
这些范围分为 2 类:1) Muenchian 方法(例如: http: //www.jenitennison.com/xslt/grouping/) 2) 或前兄弟查找这些都依赖于 XPath 表达式来选择数据分组。
但是,在我试图解决的 XML 文件中,数据不是“本机”存在于 XML 文件中的。我正在使用 xsl:template 从我的元素中计算一些聚合数据。我想根据汇总数据进行分组。
例如我有:
<filmsreview>
<record><data name='movie'>Star Wars</data><data name='ratings'>John:Good, Mary:Good</data></record>
<record><data name='movie'>Indiana Jones</data><data name='ratings'>John:Good, Mary:Bad, Helen:Average</data></record>
<record><data name='movie'>Titanic</data><data name='ratings'>John:Bad, Helen:Good</data></record>
</filmsreview>
我知道数据的结构并不完美,通过创建子元素我可以做一些更简单的事情,但是我不能轻易更改数据源,所以让我们把它当作一个挑战。
我想总结一下,我有约翰的不同评级:约翰的评级:好坏
我有一个 xsl:template 可以接受一个记录元素并返回 John 对该记录的评分:示例:
<xsl:template name="get_rating">
<xsl:param name="reviewer" />
<!-- I use some string manipulation, and xsl:value-of to return the review for John-->
</xsl:template>
我可以在 xsl:for-each 下调用它以获取 John 评论的详尽列表。但是我不能将此调用与任何方法结合起来以获取唯一值。
我是否必须使用中间 XSL 将我的 XML 文件转换为更结构化的方式?或者我可以一步完成吗?
非常感谢杰拉德