У меня есть небольшое приложение, которое ищет ссылки на публикации. Цитаты приведены в 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)]" />
Проблема: это работает для первого автора в "авторов", но игнорирует тех, кто после этого. Так что в приведенном выше примере поиск «Смит» вернул бы эту статью, но «Доу» ничего не возвращает.
Как мне отформатировать выражение, чтобы учитывать все"авторские" элементы?