计算 XSLT 中的不同项目
我有这样的 XML:
<assessment>
<variables>
<variable>
<attributes>
<variable_name value="FRED"/>
</attributes>
</variable>
</variables>
<variables>
<variable>
<attributes>
<variable_name value="MORTIMER"/>
</attributes>
</variable>
</variables>
<variables>
<variable>
<attributes>
<variable_name value="FRED"/>
</attributes>
</variable>
</variables>
</assessment>
我知道使用这个 XSLT:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output method="html"/>
<xsl:template match="assessment">
<xsl:for-each select=".//variables/variable/attributes/variable_name">
<xsl:value-of select="@value"/>
<br/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
我可以输出以下内容:
FRED
MORTIMER
FRED
但我真正想要输出的是:
FRED: 2
MORTIMER: 1
也就是说,我想列出不同的元素以及每个元素出现的次数。请注意,我希望元素按其首次出现的顺序出现(这可能会排除某些使用排序的解决方案)。
我该怎么做?
I have XML like this:
<assessment>
<variables>
<variable>
<attributes>
<variable_name value="FRED"/>
</attributes>
</variable>
</variables>
<variables>
<variable>
<attributes>
<variable_name value="MORTIMER"/>
</attributes>
</variable>
</variables>
<variables>
<variable>
<attributes>
<variable_name value="FRED"/>
</attributes>
</variable>
</variables>
</assessment>
I know that with this XSLT:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output method="html"/>
<xsl:template match="assessment">
<xsl:for-each select=".//variables/variable/attributes/variable_name">
<xsl:value-of select="@value"/>
<br/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
I can output the following:
FRED
MORTIMER
FRED
But what I really want to output is this:
FRED: 2
MORTIMER: 1
That is, I want to list the distinct elements and how many times each occurs. Note that I want the elements to appear in the order of their first appearance (which might rule out some solutions that use sorting).
How do I do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
此转换:
当应用于提供的 XML 文档时,会产生所需的正确结果:
This transformation:
when applied on the provided XML document, produces the wanted, correct result: