2010-02-08 9 views
8

Simplemente puedo ejecutar lo siguiente en xsl?¿Puedo usar el operador 'y' en xsl para cada uno?

<xsl:for-each select="trip/instance[.!=''] and trip/result[.!='']"> 
</xsl:for-each> 

Q: Cuando uso select = "" en for-each ¿Cambia el alcance de mi selector para el código que uso en el interior de cada uno-?

Respuesta

7

Puede utilizar 'y' en fines de cada bucle, pero no en la forma en que usted ha mencionado (siendo no está seguro de qué es exactamente lo que quiere lograr)

Asumo su requisitos algo parecido, ya sea

1) que desea recorrer Trip cuyos dos entidades secundarias son (instance y result) no es nulo, En este caso hay que escribir como esto ..

<xsl:for-each select="trip[instance!='' and result!='']> 

si alguno entre la instancia y el resultado es nulo, entonces su ciclo no ingresa el elemento, es decir, el viaje.


2) ¿Quieres buscar a través de cada instance y result niños en el interior de padres trip cuyos valores no son nulas. En este caso no es necesario and ..

<xsl:for-each select="trip/instance[.!=''] | trip/result[.!='']"> 

Esto funcionará.

Ahora responde a su Q ..
con FOR-Cada bucle puede establecer el alcance de selector ..
fines de ejemplo: En el caso (1), el alcance del selector era "root_name//trip" y en el caso (2) alcance del selector era "root_name//trip/instance" también "root_name//trip/result" ..

espero, he entendido bien su pregunta y respondió como comprensible ..

6

No, no puede usar and en el atributo select.

que desea utilizar el operador de union: |, que se comporta como una especie de y y como una especie de o, dependiendo de cómo se piensa en ello.

Le dará una lista distinta de ambos conjuntos de nodos y los devolverá en el orden del documento que los encuentre (no todos instance y luego todos los elementos result).

<xsl:for-each select="trip/instance[.!=''] | trip/result[.!='']"> 
</xsl:for-each> 

Dentro de la for-each el contexto cambiará entre cada uno de los nodos seleccionados durante cada iteración. Puede acceder al nodo actual con . o current().

+0

1 para la explicación sobre el operador UNION .. y para el punto "DEPENDIENDO DE CÓMO PIENSA EN ÉL" –

+0

@Mads Hansen: Gracias – Zoheir

Cuestiones relacionadas