Saltar al contenido

¿Cómo romper un bucle for-each en XSLT?

Siéntete en la libertad de compartir nuestra web y códigos con tus amigos, apóyanos para ampliar esta comunidad.

Solución:

XSLT está escrito en un estilo muy funcional, y en este estilo no hay equivalente a un break declaración. Lo que puedes hacer es algo como esto:


    
        ...body of loop...
    

De esa manera el for-each seguirá iterando a través de todos los nodos, pero el cuerpo del ciclo solo se ejecutará si la condición es true.

Ponga la condición para detener el “bucle” en el select attribute del for-each elemento. Por ejemplo, “romper” después de cuatro elementos:


Para iterar hasta, pero sin incluir, un nodo que satisfizo alguna condición particular:


XSLT no es un lenguaje de procedimiento; no piense en for-each como un “bucle” en la forma en que tiene un bucle en Java. For-each es una forma de aplicar una plantilla a cada uno de un grupo de elementos. No sucede necesariamente en un orden particular, por lo que no puede pensar en ello como “aplicar esta plantilla a cada uno de un grupo de elementos hasta que suceda tal o cual cosa, luego detenerse”.

Dicho esto, puedes usar la selección attribute para filtrar los resultados, por lo que se parece más a “aplicar una plantilla a cada uno de un grupo de elementos, pero solo si tal y cual es true de ellos”.

Si lo que realmente quiere es “aplicar una plantilla a cada uno de un grupo de elementos, donde tal y cual es true de ellos, pero solo para el primero esto es true de”, puede combinar la selección attribute con la función posición().

Si te mola el tema, eres capaz de dejar una reseña acerca de qué te ha impresionado de esta sección.

¡Haz clic para puntuar esta entrada!
(Votos: 2 Promedio: 3.5)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *