我正在使用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。
有没有人知道为什么它会触发该异常,或者为什么它不会像现在这样抛出联合?