Subject: Re: Special string manipulation
From: "Mukul Gandhi" <gandhi.mukul@xxxxxxxxx>
Date: Sat, 8 Sep 2007 22:22:37 +0530
|
Hi Ken,
Thanks for pointing the mistake. Below is the modified XSLT 2.0
solution, which works..
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output method="text" />
<xsl:template match="/">
<xsl:variable name="result">
<xsl:analyze-string
select="SomeTag"
regex="[A-Z][a-z]*">
<xsl:matching-substring>
<xsl:value-of select="." /><xsl:text> </xsl:text>
</xsl:matching-substring>
<xsl:non-matching-substring>
<xsl:value-of select="." /><xsl:text> </xsl:text>
</xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:variable>
<xsl:value-of select="normalize-space($result)" />
</xsl:template>
</xsl:stylesheet>
Though your solution is very concise, and I myself would prefer that.
On 9/4/07, G. Ken Holman <gkholman@xxxxxxxxxxxxxxxxxxxx> wrote:
> I believe the approach below adds an extra space at the end of the
> result ... not sure if that is acceptable to the original poster or
> not. He does only mention splitting them, not suffixing them.
>
> I hope this helps.
>
> . . . . . . . . . . Ken
>
> At 2007-09-04 23:07 +0530, Mukul Gandhi wrote:
> >With XSLT 2.0, you can do as following:
> >
> ><?xml version="1.0"?>
> ><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> >version="2.0">
> >
> > <xsl:output method="text" />
> >
> > <xsl:template match="/">
> > <xsl:analyze-string
> > select="SomeTag"
> > regex="[A-Z][a-z]*">
> >
> > <xsl:matching-substring>
> > <xsl:value-of select="." /><xsl:text> </xsl:text>
> > </xsl:matching-substring>
> > <xsl:non-matching-substring>
> > <xsl:value-of select="." /><xsl:text> </xsl:text>
> > </xsl:non-matching-substring>
> > </xsl:analyze-string>
> > </xsl:template>
> >
> ></xsl:stylesheet>
> >
> >On 9/4/07, Meyer, Roland 1. (NSN - DE/Germany - MiniMD)
> ><roland.1.meyer@xxxxxxx> wrote:
> > > Hi,
> > >
> > > my XML file contains single strings with upper and lower letters and I
> > > need to split them into several words, always just before the first
> > > upper letter starts.
> > >
> > > Example:
> > > <SomeTag>thisTextNeedToBeSplit</SomeTag>
> > >
> > > My output should look like:
> > >
> > > this Text Need To Be Split
> > >
> > > Is there any possibility to do this with XSL methods?
> > >
> > >
> > > Best Regards,
> > > Roland
> >
> >--
> >Regards,
> >Mukul Gandhi
>
>
> --
> Upcoming public training: XSLT/XSL-FO Sep 10, UBL/code lists Oct 1
> World-wide corporate, govt. & user group XML, XSL and UBL training
> RSS feeds: publicly-available developer resources and training
> G. Ken Holman mailto:gkholman@xxxxxxxxxxxxxxxxxxxx
> Crane Softwrights Ltd. http://www.CraneSoftwrights.com/s/
> Box 266, Kars, Ontario CANADA K0A-2E0 +1(613)489-0999 (F:-0995)
> Male Cancer Awareness Jul'07 http://www.CraneSoftwrights.com/s/bc
> Legal business disclaimers: http://www.CraneSoftwrights.com/legal
--
Regards,
Mukul Gandhi
|