RE: [xsl] Move leading/trailing spaces outside (XSLT 2.0)

Subject: RE: [xsl] Move leading/trailing spaces outside (XSLT 2.0)
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Tue, 6 Feb 2007 14:00:11 -0000
I would do

<xsl:template match="e">
  <xsl:analyze-string select="." regex="^\s*.*?\s*$">
    <xsl:matching-substring>
      <xsl:value-of select="regex-group(1)"/>
      <e><xsl:value-of select="regex-group(2)"/></e>
      <xsl:value-of select="regex-group(3)"/>
    </
  </
</

Not tested.

Michael Kay
http://www.saxonica.com/
     

> -----Original Message-----
> From: Yves Forkl [mailto:Y.Forkl@xxxxxx] 
> Sent: 06 February 2007 13:51
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] Move leading/trailing spaces outside (XSLT 2.0)
> 
> Hi,
> 
> I'm looking for an elegant XSLT 2.0 solution to this tiny 
> problem. When processing
> 
> <e> one</e>
> <e>two </e>
> <e> three </e>
> 
> I want to separate the leading and trailing spaces from the 
> rest of the content but keep them in the output as text 
> nodes, like if I was saying in XSLT
> 
> <xsl:text> </xsl:text><e>one</e>
> <e>two</e><xsl:text> </xsl:text>
> <xsl:text> </xsl:text><e>three</e><xsl:text> </xsl:text>
> 
> normalize-space() won't tell me how much spaces it removed, 
> and there must be a less awkward way than using xsl:choose 
> with 3 clauses...
> 
> Any suggestions? Should I try with tokenize() or matches()?
> 
>    Yves

Current Thread