Я не мог найти этот вопрос, в частности, в любом месте, и я боролся с ним. Я хотел бы иметь возможность выбирать с 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>
В этом примере я хотел бы найти все фильмы, которые показывают Джонни Депп, которые вышли в том же году, еще один фильм того же самого. В своем выступлении я сортирую это по годам - так что на каждый год, который имеет более двух фильмов с Джонни Деппом, я хочу вывести этот год вместе с этими фильмами.
Мой XSLT для каждого-выбрать до сих пор выглядит следующим образом: <xsl:for-each select="/imdb/movie[contains(actors/actor/text(), 'Johnny Depp')][year = following-sibling::movie/year]">
Но это, кажется, только выход каждый фильм Джонни Депп был в Что я делаю неправильно здесь.?
Спасибо! Это то, что я искал. Между отправкой вопроса и вашим ответом я обнаружил функцию «для каждой группы», но с трудом заставлял ее работать правильно. Ваш пример хорошо работает, за исключением того, что он выводит все фильмы из-за «copy-of select =» current-group() ». Я изменил выход с помощью каждого для выбора только определенных бит информации и отсортировал результаты по годам, и все это работает. – Yair