我有一个模板,它只匹配包含值为101、103或104的<PRA.3>
元素的PRA
元素。我的输入如下:
<XML>
<PRA>
<PRA.3>101</PRA.3>
<PRA.6>654</PRA.6>
</PRA>
<PRA>
<!-- does not match -->
<PRA.3>999</PRA.3>
<PRA.6>654</PRA.6>
</PRA>
</XML>
工作正常的XSLT:
<xsl:template match="PRA[PRA.3='101' or PRA.3='103' or PRA.3='104']">
<!-- does match if PRA.3 equals 101,103,104 -->
</xsl:template>
这样做很好,但是值101、103和104将出现在更多的模板中,并且可能会发生变化。
是否可以将这些值添加到列表中,然后进行包含判断? 这里有一个我想要使用的示例代码:
<MYARRAY>101,102,104</MYARRAY>
<xsl:template match="PRA[MYARRAY.contains(PRA.3/text())]">
</xsl:template>
<xsl:value-of select="index-of((101, 102, 104),101)"/>
返回1。但是我该如何在XSLT的开头将列表(101,102,104)放入一个变量中? - Philipp<xsl:variable name="myArray" select="(101,102,104)" />
。但是,在匹配表达式中无法使用变量。您需要在<xsl:if>
中进行测试。 - Tomalak