xsl: come dividere le stringhe?

Voglio dividere un indirizzo in punto e virgola ( ; ) in righe separate da
:

ad es. se address = 123 Elm Street , voglio produrre 123 Elm Street ,

ma se address = 123 Elm Street;PO Box 222 , voglio produrre

 123 Elm Street
PO Box 222

e se address = 123 Elm Street;PO Box 222;c/o James Jones , voglio produrre

 123 Elm Street
PO Box 222
c/o James Jones

C’è un modo per fare questo? (probabilmente facile ma non mi è familiare con XSLT)

Il semplice selettore XSL è

  

e vorrei modificare questo frammento XSLT per dividere il punto e virgola.


aggiornamento : Apparentemente la risposta implica l’uso di e le funzioni substring-before() e substring-after() .

Ma io sono un principiante di XSLT e potrei davvero usare un po ‘di aiuto su come farlo.

I. Soluzione XSLT 1.0 normale:

Questa trasformazione :

       

se applicato su questo documento XML :

 123 Elm Street;PO Box 222;c/o James Jones 

produce il risultato voluto e corretto :

 123 Elm Street
PO Box 222
c/o James Jones

II. FXSL 1 (per XSLT 1.0):

Qui utilizziamo semplicemente la str-map modello FXSL (e non è necessario scrivere il modello ricorsivo per la 999 ° volta):

                  

quando questa trasformazione viene applicata su qualsiasi documento XML (non utilizzato), viene prodotto lo stesso risultato voluto desiderato :

 123 Elm Street
PO Box 222
c/o James Jones

III. Utilizzando XSLT 2.0

      

quando questa trasformazione viene applicata a questo documento XML :

 123 Elm Street;PO Box 222;c/o James Jones 

il risultato voluto e corretto è prodotto :

 123 Elm Street
PO Box 222
c/o James Jones

Se il tuo processore XSLT supporta EXSLT , puoi usare str: tokenize , altrimenti il ​​link contiene un’implementazione usando funzioni come sottostringa-prima.