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”)