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.