Você pode colocar duas condições em um atributo de teste xslt?


Respostas:


211

Não é bem assim, o AND deve ser minúsculo.

<xsl:when test="4 &lt; 5 and 1 &lt; 2">
<!-- do something -->
</xsl:when>

33

Ele precisa ser envolvido em um <xsl: choose>, pois é quando. E minúsculas o "e".

<xsl:choose>
   <xsl:when test="4 &lt; 5 and 1 &lt; 2" >
   <!-- do something -->
   </xsl:when>
   <xsl:otherwise>
   <!-- do something else -->
   </xsl:otherwise>
</xsl:choose>

6

Do XML.com :

Como instruções xsl: if, xsl: when elementos podem ter conteúdo mais elaborado entre suas tags de início e fim - por exemplo, elementos de resultado literais, elementos xsl: element ou até xsl: if e xsl: if e xsl: escolha elementos - para adicionar a a árvore de resultados. Suas expressões de teste também podem usar todos os truques e operadores que o atributo de teste do elemento xsl: if pode usar, como e, ou, e, e chamadas de função, para criar expressões booleanas mais complexas.


5

Talvez este seja um acéfalo para o profissional xslt, mas para mim no nível iniciante / intermediário, isso me deixou intrigado. Eu queria fazer exatamente a mesma coisa, mas tive que testar um valor de tempo de resposta de um xml em vez de um número simples. Após esta discussão, tentei o seguinte:

<xsl:when test="responsetime/@value &gt;= 5000 and responsetime/@value &lt;= 8999"> 

o que gerou um erro. Isso funciona:

<xsl:when test="number(responsetime/@value) &gt;= 5000 and number(responsetime/@value) &lt;= 8999">

Realmente não entendo por que não funciona sem number (). Será que sem number () o valor é tratado como uma string e você não pode comparar números com uma string?

De qualquer forma, espero que isso poupe a alguém muita pesquisa ...

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.