我无法找到这个问题,特别是在任何地方都可以找到这个问题,我一直在努力。我希望能够用XPath选择集合中所有具有子节点值A的节点,其中存在具有相同子节点值A的集合中的另一个节点,并将它们组合在一起。XPath 2/XSLT:找到一组具有匹配子节点值的集合的兄弟节点
例如,我有一个列出电影的XML文档'imdb'。这里的节点遵循的模式:
<movie>
<title>Pirates of the Carribbean: At World's End</title>
<year>2007</year>
<directors>
<director>Gore Verbinski</director>
</directors>
<actors>
<actor>Johnny Depp</actor>
......
</actors>
</movie>
在这个例子中,我想找到同年相继问世为另一部电影相同的其特点约翰尼·德普的所有电影。在我的输出中,我将这个年份排序 - 因此,每年与约翰尼德普有超过两部电影的每一年,我都想输出那一年以及那些电影。
我的for-each XSLT选择到目前为止是这样的: <xsl:for-each select="/imdb/movie[contains(actors/actor/text(), 'Johnny Depp')][year = following-sibling::movie/year]">
,但似乎只输出的每一部电影约翰尼·德普已经在我在做什么错在这里?
谢谢!这是我正在寻找的。在发布这个问题和你的答案之间,我发现了“为每个组提供功能”,但很难让它正常工作。您的示例运行良好,除非由于“copy-of select =”current-group()“'而导致输出所有电影。我使用for-each修改了输出,只选择特定的信息位,并按年份对输出进行排序,并且一切正常。 – Yair 2013-05-08 20:34:54