当比较节点集与boolean的并集时,Xalan 2.7.1触发CastClassException

时间:2014-07-23 14:59:56

标签: java xml xslt xpath xalan

我正在使用Xalan-J 2.7.1(解释处理器),我遇到以下问题(简化版):

拥有这个xml:

<?xml version="1.0" encoding="UTF-8"?>
<Elements>
  <A>
     <oneThing>1</oneThing>
  </A>
  <B>
     <otherThing>2</otherThing>
  </B>
</Elements>

我想应用以下样式表:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/Elements">
<Result>
    <xsl:variable name="A" select="A"></xsl:variable>
    <xsl:variable name="B" select="B"></xsl:variable>
    <xsl:if test="($A|$B) and true()">
        <xsl:value-of select="string('worked')"></xsl:value-of>
    </xsl:if>
</Result>
</xsl:template>

Xalan正在解雇: org.apache.xpath.objects.XBooleanStatic无法强制转换为org.apache.xpath.objects.XNodeSet

据我所知,两个节点集的并集应该被转换为boolean,然后使用以下条件进行计算。在这种情况下,它试图转换为节点设置“true()”的结果。 如果我使用boolean()函数包装($ A | $ B),一切正常,但它应该自己做Xalan。

有没有人知道为什么它会触发该异常,或者为什么它不会像现在这样抛出联合?

0 个答案:

没有答案