0

我正在尝试进行 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>

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

谁能建议我做错了什么?

4

1 回答 1

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>

您不能在单引号内提供要比较的值。它将被视为正常值而不是运算符。它不会被视为运算符而是值。

于 2013-09-26T10:24:20.120 回答