¿Xslt tiene la función split ()?

¿Cómo se divide una cadena basada en algún separador?

Dado un string Topic1,Topic2,Topic3 , quiero dividir la cadena en función de , para generar:

 Topic1 Topic2 Topic3 

En XSLT 1.0, debe construir una plantilla recursiva. Esta hoja de estilo:

                           

Entrada:

  Item1, Item2, Item3  

Salida:

   Item1 Item2 Item3   

En XSLT 2.0, tiene la función central tokenize() . Entonces, esta hoja de estilo:

                

Resultado:

   Item1 Item2 Item3   

Use fn:tokenize

No hay función split , pero puede usar una plantilla recursiva con substring-before y substring-after para escribir la suya propia.

Ver este artículo para más detalles.

Gracias user357812. Utilizo su plantilla agradable con poca personalización para que sea genérica:

                                     

XSLT 1.0
Necesitaba una pequeña variante en comparación con otras respuestas dadas aquí.

Entrada:

1, 2, 3

Ouput:

1, 2 y 3

Entrada:

1

Salida

1

Si el delimitador es espacio en lugar de coma, aún así funcionaría.

Entrada:

1 2 3

Ouput:

1, 2 y 3

Acabo de crear una plantilla ligeramente modificada.

          ,   and                  

La plantilla se puede llamar de la siguiente manera cuando el delimitador es una coma

  1, 2, 3     

La plantilla se puede llamar de la siguiente manera cuando el delimitador es espacio

  1 2 3     

Según el procesador XSL que esté utilizando, puede tener acceso a la función de extensión str: tokenize () .

Así que para dividir Topic1,Topic2,Topic3 on , do;

  

que dará el resultado;

 Topic1 Topic2 Topic3