Xml 使用';或';XSL转换中的条件

Xml 使用';或';XSL转换中的条件,xml,xslt,Xml,Xslt,我正在尝试进行XSL转换,以从XML中获取一些如下所示的值: <FOO_CODE>ACPRE</FOO_CODE> <FOO_SCORE>100</FOO_SCORE> <xsl:for-each select="FOO_CODE"> <xsl:choose> <xsl:when test=". ='ACPRE or FEPRE

我正在尝试进行XSL转换,以从XML中获取一些如下所示的值:

<FOO_CODE>ACPRE</FOO_CODE>
<FOO_SCORE>100</FOO_SCORE>
 <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>
ACPRE
100
但是,对于每个不同的XML文件,FOO_代码可能会有所不同,因此我希望在XSL转换中使用“or”语句。我的XSL如下所示:

<FOO_CODE>ACPRE</FOO_CODE>
<FOO_SCORE>100</FOO_SCORE>
 <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>

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

有人能告诉我我做错了什么吗?

试试这个:

  <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>

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