Envolviendo palabras de HTML usando XSL

Necesito envolver cada palabra con una etiqueta (e.paso) en un documento HTML, como:

  It doesnt matter   
Text in a div
Text in a div

Text inside ap

Para dar como resultado algo como esto:

   It doesnt matter   
Text in a div
Text in a div

Text in a p

Es importante mantener la estructura del cuerpo …

¿Alguna ayuda?

¡Gracias!

Las tres soluciones diferentes a continuación usan el patrón de diseño XSLT de anulación de la regla de identidad para conservar generalmente la estructura y el contenido del documento XML, y solo modificar nodos específicos.

I. Solución XSLT 1.0 :

Esta transformación corta y simple (no used anywhere):

                     

cuando se aplica al documento XML proporcionado :

   It doesnt matter   
Text in a div
Text in a div

Text inside ap

produce el resultado deseado y correcto :

   It doesnt matter   
Text in a div
Text in a div

Text inside a p

II. Solución XSLT 2.0:

               

cuando esta transformación se aplica al mismo documento XML (arriba), nuevamente se produce el resultado correcto y deseado :

   It doesnt matter   
Text in a div
Text in a div

Text inside a p

III Solución usando FXSL :

Usando la plantilla / función str-split-to-words de FXSL, se puede implementar fácilmente tokenización mucho más complicada, en cualquier versión de XSLT:

Tengamos un documento XML más complicado y reglas de tokenización :

   It doesnt matter   
Text: in a div
Text; in; a. div

Text- inside [a] [p]

Aquí hay más de un delimitador que indica el inicio o el final de una palabra. En este ejemplo particular, los delimitadores pueden ser: " " , ";" , "." , ":" , "-" , "[" , "]" .

La siguiente transformación usa FXSL para esta tokenización más complicada :

                         

y produce el resultado deseado y correcto :

   It doesnt matter   
Text in a div
Text in a div

Text inside a p

Puede lograr esto al extender la transformación de identidad para incluir una plantilla recursiva que busca espacios en un fragmento de texto y, de ser así, coloca una etiqueta de intervalo alrededor de la primera palabra. A continuación, puede llamarse recursivamente por la porción restante del texto.

Aquí está en acción …

                             

Cuando se le pide a su muestra HTML, la salida es la siguiente:

   It doesnt matter   
Text in a div
Text in a div

Text inside a p

Sin embargo, no estaba 100% seguro de cuán importantes son para ti los espacios dentro de los elementos del tramo .

    Intereting Posts