如何在XSL中测试缺少的属性?

Dar*_*mas 5 xslt xpath

我所拥有的是:

<xsl:variable name="myvar" select=".//spss:category[((not @varName) or @varName=$colVarName) and @text=$series]/spss:cell/@text"/>
Run Code Online (Sandbox Code Playgroud)

它所应该做的是选择的文本spss:cell的文本属性,只要它是一个孩子spss:category

  • 要么是varName值等于的属性$colVarName
  • 或者根本没有varName属性

什么发生的是以下错误消息(不好意思翻译在这里,它所以只是要点):

预期令牌')'.找到令牌'@'.
.//spss:category {((not - > @ < - varName)或@ varName = $ colVarName ...

问题解决了!(见下文)

Dar*_*mas 10

好吧,我想我发现了错误:

not 必须与括号一起使用,所以代替

(not @varName) or @varName=$colVarName
Run Code Online (Sandbox Code Playgroud)

应该是的

not(@varName) or @varName=$colVarName
Run Code Online (Sandbox Code Playgroud)