XSLT select语句中的布尔表达式

XSLT select语句中的布尔表达式,xslt,Xslt,我有以下XSLT代码,几乎满足了我的要求: <xsl:variable name="scoredItems" select= ".//item/attributes/scored[@value='true'] | self::section[attributes/variable_name/@value='SCORE']/item | .//item//v

我有以下XSLT代码,几乎满足了我的要求:

<xsl:variable name="scoredItems"
              select=
                  ".//item/attributes/scored[@value='true'] |
                  self::section[attributes/variable_name/@value='SCORE']/item |
                  .//item//variables//variable_name"/>

我该如何解决这个问题?(请注意,我使用的是XSLT1.0。)

根据我的经验,Java中XSLT引发的默认异常没有多大帮助。您需要实现的实例并使用其方法捕获和报告真正的XSLT问题。您可以使用
TransformerFactory
setErrorListener
方法附加此
ErrorListener
,我强烈建议任何人不要用任何语言编写复杂的表达式

这根本不是XSLT问题。这是一个一般的编程问题,答案是:

千万不要写太复杂的表达式,因为它们在写、读、测试、验证、校对、修改等方面都具有挑战性


将复杂的表达式拆分为多个简单的表达式,并将它们分配给不同的变量。然后对这些变量进行操作。

问题是什么?你试过什么不起作用的?您收到了什么错误消息?有问题吗?XPath表达式在语法上似乎是正确的。
<xsl:variable name="scoredItems"
              select=
                  ".//item/attributes/scored[@value='true'] or
                  (self::section[variable_name/@value='SCORE']/item and 
                   (not (.//item/attributes/scored[@value='false']))) or
                  .//item//variables//variable_name"/>
javax.xml.transform.TransformerConfigurationException: Could not compile stylesheet     
at org.apache.xalan.xsltc.trax.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:832)     
at org.apache.xalan.xsltc.trax.TransformerFactoryImpl.newTransformer(TransformerFactoryImpl.java:618)