在XSL转换中使用'或'条件

时间:2013-09-26 10:20:23

标签: xml xslt

我正在尝试进行XSL转换,以从XML中获取一些看起来像这样的值:

<FOO_CODE>ACPRE</FOO_CODE>
<FOO_SCORE>100</FOO_SCORE>

但是,对于每个不同的XML文件,FOO_CODE可能会有所不同,所以我想在XSL转换中使用'或'语句。我的XSL看起来像这样:

 <xsl:for-each select="FOO_CODE">
                    <xsl:choose>
                        <xsl:when test=". ='ACPRE or FEPRE or ECGRE'">
                         <NEW_FOO_CODE>ACPRE</NEW_FOO_CODE>
                         <NEW_FOO_SCORE>100</NEW_FOO_SCORE>
                       </xsl:when>
                    </xsl:choose>
                </xsl:for-each>

'或'条件似乎不起作用,因为当它运行时,转换不会将任何数据填充到新节点中。当我删除'或'条件并仅测试特定XML文件中的值时,它确实有效。

任何人都可以建议我做错了吗?

1 个答案:

答案 0 :(得分:2)

试试这个:

  <xsl:for-each select="FOO_CODE">
    <xsl:choose>
      <xsl:when test="(.='ACPRE') or (.='FEPRE') or (.='ECGRE')">
        <NEW_FOO_CODE>ACPRE</NEW_FOO_CODE>
        <NEW_FOO_SCORE>100</NEW_FOO_SCORE>
      </xsl:when>
    </xsl:choose>
  </xsl:for-each>

您无法在单引号内提供比较值。它将被视为正常值而不是运算符。它不会被视为运营商而是价值。