2010-07-06 9 views
5

elemento dado:espacios de Gaza que sólo lleva

<comments> comments 
go here 
</comments> 

¿Cómo me tira lo que puede haber múltiples personajes principales de espacio. No puedo usar el espacio de normalización porque necesito retener nuevas líneas y tal. XSLT 2.0 bien.

+0

Gracias por el cara a cara. Creo que debería haber leído las instrucciones ya que no me di cuenta hasta mi última publicación. – johkar

+0

Buena pregunta (+1). Vea mi respuesta para una solución de una línea de XPath 1.0. :) –

Respuesta

4

utilizar la función replace():

replace($input,'^ +','') 

que se encarga de los caracteres en blanco sólo hasta el primer no-espacio. Si desea eliminar todos los personajes principales en blanco (es decir, el espacio, NL, Cr, pestaña) hasta la primera no está en blanco, utilice:

replace($input,'^\s+','') 
4

En XPath 1.0 (significa XSLT 1.0, también):

substring($input, 
      string-length(
         substring-before($input, 
             substring(translate($input, ' ', ''), 
                1, 
                1) 
             ) 
         ) +1 
     ) 

envuelta en una transformación XSLT:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="text"/> 

<xsl:variable name="input" 
    select="string(/*/text())"/> 

<xsl:template match="/"> 
    '<xsl:value-of select= 
    "substring($input, 
       string-length(
          substring-before($input, 
          substring(translate($input, ' ', ''), 
             1, 
             1) 
              ) 
          ) +1 
      ) 
    "/>' 
</xsl:template> 
</xsl:stylesheet> 

cuando este trans formación se aplica en el siguiente documento XML:

<t> XXX YYY Z</t> 

la correcta, resultado deseado se produce:

'XXX YYY Z' 
Cuestiones relacionadas