validaciones - ¿Puedes poner dos condiciones en un atributo de prueba xslt?
xslt editor (4)
De XML.com :
Al igual que xsl: if instructions, xsl: cuando los elementos pueden tener contenidos más elaborados entre sus etiquetas de inicio y final, por ejemplo, elementos de resultado literales, xsl: element elements, o incluso xsl: if y xsl: choose elements-para agregar a el árbol de resultados. Sus expresiones de prueba también pueden usar todos los trucos y operadores que el atributo de prueba del elemento xsl: if puede usar, como and, o, y llamadas a funciones, para construir expresiones booleanas más complejas.
¿Es correcto para Cuando 4 <5 y 1 <2?
<xsl:when test="4 < 5 AND 1 < 2" >
<!-- do something -->
</xsl:when>
No del todo, el AND debe ser minúscula.
<xsl:when test="4 < 5 and 1 < 2">
<!-- do something -->
</xsl:when>
Tal vez esto es una obviedad para el xslt-profesional, pero para mí en el nivel principiante / intermedio, esto me dejó perplejo. Quería hacer exactamente lo mismo, pero tenía que probar un valor de tiempo respuesta de un xml en lugar de un número simple. Siguiendo este hilo, intenté esto:
<xsl:when test="responsetime/@value >= 5000 and responsetime/@value <= 8999">
que generó un error Esto funciona:
<xsl:when test="number(responsetime/@value) >= 5000 and number(responsetime/@value) <= 8999">
Sin embargo, realmente no entiendo por qué no funciona sin number (). ¿Podría ser que sin number () el valor se trata como una cadena y no se pueden comparar números con una cadena?
De todos modos, espero que esto le ahorre a alguien buscar ...
Tiene que ser envuelto en un <xsl: elegir> ya que es un cuándo. Y minúsculas el "y".
<xsl:choose>
<xsl:when test="4 < 5 and 1 < 2" >
<!-- do something -->
</xsl:when>
<xsl:otherwise>
<!-- do something else -->
</xsl:otherwise>
</xsl:choose>