Come eseguire una seconda trasformazione sull’output di un modello XSLT

Ho solo competenze XSLT di base quindi scusami se questo è fondamentale o imansible.

Ho un modello di paginatore che viene usato ovunque nel sito che sto guardando. C’è un bug in cui una ricerca specifica deve avere un parametro categoryId aggiunto alla href dei collegamenti alla pagina. Non riesco a modificare il foglio di stile di impaginatore altrimenti aggiungo semplicemente un parametro ad esso. Quello che mi piacerebbe fare è applicare il template così come fare una seconda trasformazione in base al suo output. È ansible? Come fanno normalmente gli altri ad estendere i modelli di libreria?

Finora ho pensato di fare una copia ricorsiva dell’output e applicare un modello agli hrefs mentre vengono elaborati. La syntax per questo mi sfugge un po ‘, soprattutto perché non sono nemmeno sicuro che sia ansible.


Modifica – Tra la risposta di Dabbler e il commento di Michael Kay ci siamo arrivati. Ecco il mio test completo.

        foo              

È ansible in XSLT 2; è ansible memorizzare i dati in una variabile e richiamare i modelli di applicazione su tale variabile.

Esempio di base:

      

E da qualche parte nel tuo foglio di stile hai un modello che corrisponde a Elem. È inoltre ansible utilizzare una modalità separata per mantenere una chiara distinzione tra le due fasi (creazione della variabile e elaborazione), in particolare quando entrambe le fasi utilizzano modelli che corrispondono agli stessi nodes.

Ecco un esempio completo su come eseguire l’elaborazione multi-pass con XSLT 1.0 :

                                 

quando questa trasformazione viene applicata al seguente documento XML :

  01 02 03 04 05 06 07 08 09 10  

il risultato desiderato (ogni numero è moltiplicato per 2 e nel passaggio successivo 3 viene aggiunto a ogni numero) viene prodotto :

  5 7 9 11 13 15 17 19 21 23