|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: breaking string into substrings or arrays (XSLT 1.
To expand on David's approach, here's an XSLT 1.0 solution for the string
you gave us. You'll need to expand it to handle all the other delimiters
you didn't mention, and you probably don't want to apply it to to your
entire source document, as this does (I used that single element you
provided as the entire document).
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<chunks>
<xsl:call-template name="stringChunks">
<xsl:with-param name="inString"
select="normalize-space(translate(., '[].,;:', ' '))"/>
</xsl:call-template>
</chunks>
</xsl:template>
<xsl:template name="stringChunks">
<xsl:param name="inString"/>
<xsl:choose>
<xsl:when test="contains($inString, ' ')">
<chunk><xsl:value-of select="substring-before($inString, '
')"/></chunk>
<xsl:call-template name="stringChunks">
<xsl:with-param name="inString"
select="substring-after($inString, ' ')"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<chunk><xsl:value-of select="$inString"/></chunk>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
Tested with Saxon 8.4 and Xalan-J 2.4.1 (since it's XSLT 1.0)
Jay Bryant
Bryant Communication Services
(presently consulting at Synergistic Solution Technologies)
David Carlisle <davidc@xxxxxxxxx>
04/19/2005 10:56 AM
Please respond to
xsl-list@xxxxxxxxxxxxxxxxxxxxxx
To
xsl-list@xxxxxxxxxxxxxxxxxxxxxx
cc
Subject
Re: breaking string into substrings or arrays
> In my project I am dealing with at least 10 delimeters ?
If you don't need to do different things for different delimiters, then:
The XPath2 tokenize function allows the delimiter to be specified by a
regular expression, so in that case you can just specify whatever you
want, eg ^[a-zA-Z]+ for any run of non (ascii) letters being a
delimiter.
If using xslt1 substring function it's easier to normalise first:
<xsl:variable name="x" select="normalize-space(translate(Value,',;.[]','
'))"/>
would give a value of $x as
"Alpha Beta Gamma Alpha Beta"
given your posted input, which you then pass to an XSLT1 tokenizing
template.
David
________________________________________________________________________
This e-mail has been scanned for all viruses by Star. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|

Cart








