【发布时间】:2021-09-21 16:02:31
【问题描述】:
我的 XML 输入:
<result>
<objects name="wf1">
<object>
<qname>wf</qname>
<object_name>Nr 1</object_name>
<person_name>Anton</person_name>
</object>
<object>
<qname>wf</qname>
<object_name>Nr 2</object_name>
<person_name>Ben</person_name>
</object>
</objects>
<objects name="wf2">
<object>
<qname>wf</qname>
<object_name>Nr 2</object_name>
<person_name>Chris</person_name>
</object>
<object>
<qname>wf</qname>
<object_name>Nr 3</object_name>
<person_name>Dirk</person_name>
</object>
</objects>
</result>
注意事项
- 有两个带有信息的块:wf1 和 wf2
- 两者都有一个 object_name = 'Nr 2' 的对象
- 所有对象都有 qname = 'wf'
我的 XSLT:
<xsl:template match="/">
<xsl:call-template name="output_html" />
</xsl:template>
<xsl:template name="output_html">
<html>
<body >
<table>
<tr>
<th>Object name</th>
<th>Person name</th>
</tr>
<xsl:apply-templates select="result/objects/object[qname='wf']" />
</table>
</body>
</html>
</xsl:template>
<xsl:template match="object[*]">
<tr align="center" valign="top">
<td><xsl:value-of select="object_name"/></td>
<td><xsl:value-of select="person_name"/></td>
</tr>
</xsl:template>
输出:
| Object name | Person name |
|---|---|
| Nr 1 | Anton |
| Nr 2 | Ben |
| Nr 2 | Chris |
| Nr 3 | Dirk |
我的愿望:
我想查看唯一的对象名称。如果具有特定名称的对象同时出现在 wf1 和 wf2 中,则只应显示来自 wf2 的对象。 所以期望的输出是:
| Object name | Person name |
|---|---|
| Nr 1 | Anton |
| Nr 2 | Chris |
| Nr 3 | Dirk |
信息“Ben”丢失了。没关系。
有人知道如何在 XSLT 1.0 中实现这一点吗?
【问题讨论】:
-
使用键或对元素进行分组,只输出每组的第一项。
-
在所有有关 XSLT 的问题中,请说明您的处理器支持的 XSLT 版本。这对于本质上是grouping 问题的问题尤其重要。
-
谢谢迈克尔。我补充说我正在寻找 1.0 解决方案。