我有一个模板,它应该只匹配元素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>

这就足够了。

10-07 18:54