我在任何地方都找不到这个问题的特别答案,我一直在努力解决这个问题。我希望能够使用 XPath 选择集合中具有子节点值 A 的所有节点,其中存在具有相同子节点值 A 的集合中的另一个节点,并将它们配对在一起。
例如,我有一个列出电影“imdb”的 XML 文档。这里的节点遵循以下模式:
<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>
在这个例子中,我想找出所有以约翰尼·德普为主角的电影,这些电影与另一部电影在同一年上映。在我的输出中,我按年份排序 - 因此,对于与约翰尼·德普合作的电影超过两部的每一年,我想将那一年与这些电影一起输出。
到目前为止,我的 XSLT for-each 选择如下所示:
<xsl:for-each select="/imdb/movie[contains(actors/actor/text(), 'Johnny Depp')][year = following-sibling::movie/year]">
但这似乎只是输出约翰尼德普出演的每一部电影。我在这里做错了什么?