特にこの質問の答えはどこにも見つからず、苦労してきました。同じ子ノード値 A を持つセット内の別のノードが存在する子ノード値 A を持つセット内のすべてのノードを XPath で選択し、それらをペアにできるようにしたいと考えています。
たとえば、映画「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>
この例では、ジョニー・デップが出演するすべての映画で、同じ年に公開された同じ映画の別の映画を検索したいと考えています。私の出力では、これを年ごとに並べ替えています。そのため、ジョニー・デップの映画が 2 つ以上ある年ごとに、それらの映画とともにその年を出力したいと考えています。
これまでの XSLT for-each select は次のようになります。
<xsl:for-each select="/imdb/movie[contains(actors/actor/text(), 'Johnny Depp')][year = following-sibling::movie/year]">
しかし、それはジョニー・デップが出演したすべての映画を出力しているようです。ここで何が間違っているのでしょうか?