Три способа сделать это:
- Использовать строку (или другой соответствующий символ), разделенную строкой
...
<xsl:template match=
"Lines[contains('|John|Steve|Mark|',
concat('|', @name, '|')
)
]
">
<!-- Appropriate processing here -->
</xsl:template>
.2. Проверка на соответствие внешнему параметру .Если параметр не установлен извне, и мы используем XSLT 1.0, необходимо использовать функцию расширения xxx:node-set()
, чтобы преобразовать его в обычный набор узлов, прежде чем обращаться к его дочерним элементам
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<!-- externally-specified parameter -->
<xsl:param name="pNames">
<n>John</n>
<n>Steve</n>
<n>Mark</n>
</xsl:param>
<xsl:template match="Lines">
<xsl:if test="@name = $pNames/*">
<!-- Appropriate processing here -->
</xsl:if>
</xsl:template>
</xsl:stylesheet>
.3. В XSLT 2.0 сравнить с последовательностью строк
<xsl:template match="Lines[@name=('John','Steve','Mark')]">
<!-- Appropriate processing here -->
</xsl:template>