我有一个小应用程序,用于搜索出版物引用。这些引用是以XML格式呈现的,并且通过PHP将参数传递给XSLT,以按照作者或仪器等字段进行搜索。其结构如下:
<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”则没有任何返回。
如何格式化我的表达式以考虑所有“作者”元素?