我所拥有的是:
<xsl:variable name="myvar" select=".//spss:category[((not @varName) or @varName=$colVarName) and @text=$series]/spss:cell/@text"/>
应该做的是选择spss:cell
的text-Attribute的文本,只要它是spss:category
的孩子
varName
属性,其值等于$colVarName
varName
属性正在发生什么是关注错误消息(抱歉在这里翻译,所以只是它的要点):
预期令牌')'。找到令牌'@' .//spss:category {((not - &gt; @&lt; - varName)或@ varName = $ colVarName ...
解决了问题!(见下文)
答案 0 :(得分:10)
好吧,我想我发现了错误:
not
必须与括号一起使用,因此不是
(not @varName) or @varName=$colVarName
应该是
not(@varName) or @varName=$colVarName
答案 1 :(得分:2)
确实 - not()
是一个函数,它返回与parens之间的任何东西相反的布尔值。如有必要 - 它会将其参数转换为布尔值。在这种情况下,空节点集会自动转换为false,因此如果@varName
为您提供空节点集,则not(@varName)
将为true。