XSLT检查数组中是否包含值

时间:2014-05-16 14:50:35

标签: xml xslt

我有一个模板应该只与元素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>

1 个答案:

答案 0 :(得分:3)

在XSLT 2.0中,您想要做的事实上相当简单,不需要包含或索引:

<xsl:variable name="myArray" select="('101','102','104')"/>

<xsl:template match="PRA[PRA.3=$myArray]">

</xsl:template>

这就足够了。