Como testar a falta de atributo em XSL?

votos
5

O que eu tenho é seguinte:

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

O que ele deve fazer é selecionar o texto do spss:cell's texto-Atributo, desde que ele é um filho de um spss:categoryque tem

  • ou um varNameatributo com um valor igual a$colVarName
  • OR não varNameAtributo em tudo

O que está acontecendo é seguinte mensagem de erro (desculpe a tradução aqui, então apenas a essência do mesmo):

Espera token ')'. Encontrado token '@'.
.//spss:category[((not -> @ <- varName) ou @ varName = $ colVarName ...

Problema resolvido! (Ver abaixo)

Publicado 22/01/2009 em 14:32
fonte usuário
Em outras línguas...                            


2 respostas

votos
10

OK, eu acho que encontrei o erro:

not deve ser utilizado com parênteses, então ao invés de

(not @varName) or @varName=$colVarName

que deveria ter sido

not(@varName) or @varName=$colVarName
Respondeu 22/01/2009 em 14:35
fonte usuário

votos
2

na verdade - not()é uma função que retorna o valor booleano oposto de tudo o que está entre os parênteses. Se necessário - ele vai lançar o seu argumento para um booleano. Neste caso, um conjunto de nós vazio lança automaticamente para falsa, então se @varNamelhe dá um conjunto de nós vazio, not(@varName)será verdade.

Respondeu 23/01/2009 em 22:07
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more