2012-05-10 6 views
22

¿Hay alguna posibilidad de incluir múltiples condiciones de 'prueba' atribuir expresión en <xsl:if> etiqueta de XSLT comoCómo agregar múltiples condiciones de prueba de 'prueba' atribuir expresión de <xsl:if> etiqueta

<xsl:if test="$var='ab' | $var='bc' | $var='ca' "> 
</xsl:if> 

Iam conseguir un error como "La expresión se debe evaluar a un conjunto de nodos".

¿Hay alguna posibilidad de codificar tales condiciones múltiples en <xsl:if> Tag?

Puede alguien explicar cómo podemos lograr esta validación múltiple condición por las siguientes etiquetas en

<xsl:if> en la prueba atributo de expresión

<xsl:for-each> de expresión de selección de atributos

<xsl:template> juego está atributo de expresión

?

Respuesta

33
<xsl:if test="$var='ab' | $var='bc' | $var='ca' "> 

Esto está mal - que está utilizando el XPath unión operador | en valores booleanos.

Solución: utilizar el operador XPath or:

<xsl:if test="$var='ab' or $var='bc' or $var='ca' "> 

La expresión XPath anterior (el valor del atributo test) puede ser optimizado, de manera que sólo se hace una comparación y no or es necesario:

<xsl:if test="contains('|ab|bc|ca|', concat('|', $var, '|'))"> 
+0

así que esto es lo mismo para las otras etiquetas como para xsl: para cada y xsl: plantilla –

+0

Muchas gracias. Aprenda a implementar las mismas condiciones en las expresiones de otras etiquetas. –

+1

@Jeevan: De nada. La mayoría de las instrucciones XSLT tienen atributos, cuyo valor se especifica como una expresión XPath. El lenguaje XPath tiene sus reglas de sintaxis y en cualquier expresión XPath '|' es el operador de unión. –

1

En XSLT 2.0 o superior, se puede comprobar con respecto a una secuencia de cadenas:

<xsl:if test="$var=('ab','bc','ca')">...</xsl:if> 
Cuestiones relacionadas