У меня есть небольшое приложение, которое ищет ссылки на публикации. Цитаты приведены в XML, и я передаю параметры в XSLT через PHP для поиска по таким полям, как инструмент или автор. Структура выглядит так:
<publications>
<paper>
<authors>
<author>James Smith</author>
<author>Jane Doe</author>
</authors>
<year>2010</year>
<title>Paper 1</title>
(more children)
</paper>
(more papers)
</publications>
Когда я вызываю свой шаблон в XSLT, я использую предикат, чтобы сократить количество отображаемых документов на основе критериев поиска. Итак, если установлен параметр $ author, например, я делаю:
<xsl:apply-templates select="paper[contains(authors/author, $author)]" />
Проблема: это работает для первого автора в «авторах», но игнорирует тех, которые находятся после этого. Таким образом, в приведенном выше примере поиск «Smith» вернет эту статью, но «Doe» ничего не вернет.
Как мне отформатировать свое выражение, чтобы учесть все элементы «author»?