我有一个模板,它应该只匹配元素PRA
如果它包含值为101、103或104的<PRA.3>
。我的输入如下:
<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>
最佳答案
在xslt 2.0中,您要做的实际上相当简单,不需要包含或索引:
<xsl:variable name="myArray" select="('101','102','104')"/>
<xsl:template match="PRA[PRA.3=$myArray]">
</xsl:template>
这就足够了。