función de reemplazo de cadena xslt 1.0

Tengo una cadena “aa :: bb :: aa”

y necesita convertirlo en “aa, bb, aa”

Yo he tratado

translate(string,':',', ') 

pero esto devuelve “aa ,, bb ,, aa”

¿Cómo puede hacerse esto?

Una solución muy simple (que funcionará siempre que el valor de su cadena no tenga espacios):

 translate(normalize-space(translate('aa::bb::cc',':',' ')),' ',',') 
  1. traducir en ” ”
  2. normalize-space() para colapsar varios espacios en blanco en un solo espacio “”
  3. traducir espacios únicos “” en “,”

Una solución más robusta sería usar una plantilla recursiva :

                    

Puedes usarlo así:

      

Puedes usar esto

Sintaxis: – fn:tokenize(string,pattern)

Ejemplo: tokenize("XPath is fun", "\s+")
Resultado: (“XPath”, “es”, “diversión”)