This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: Parsing & splitting a string n times
- From: Dimitre Novatchev <dnovatchev at yahoo dot com>
- To: xsl-list at lists dot mulberrytech dot com
- Date: Fri, 24 May 2002 06:08:57 -0700 (PDT)
- Subject: [xsl] Re: Parsing & splitting a string n times
- Reply-to: xsl-list at lists dot mulberrytech dot com
> I have the following problem. Could someone help, please?
>
> I have a string in the following format:
>
> <add-attr attr-name="PHONENO">
> <value type="string">value1,value2,valu3,......</value>
> </add-attr>
>
> the number of values are not fixed & can vary every time.
>
> I need to split this string at the commas & put each value in a
> separate value tag.
>
> like:
> <add-attr attr-name="PHONENO">
> <value type="string">value1</value>
> <value type="string">value2</value>
> <value type="string">value3</value>
> .
> .
> .
> </add-attr>
>
> What i would like to know is, Are the concepts like arrays/lists
> or loops handled in XSL?
Using FXSL one would write the following:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:vendor="urn:schemas-microsoft-com:xslt"
exclude-result-prefixes="vendor"
>
<xsl:import href="strSplit-to-Words2.xsl"/>
<xsl:output indent="yes" omit-xml-declaration="yes"/>
<xsl:template match="/">
<xsl:variable name="vRTFWords">
<xsl:call-template name="str-split-to-words">
<xsl:with-param name="pStr" select="/*/*"/>
<xsl:with-param name="pDelimiters"
select="', 	 '"/>
</xsl:call-template>
</xsl:variable>
<add-attr attr-name="PHONENO">
<xsl:apply-templates select="vendor:node-set($vRTFWords)/word"/>
</add-attr>
</xsl:template>
<xsl:template match="word">
<value type="string">
<xsl:copy-of select="node()"/>
</value>
</xsl:template>
</xsl:stylesheet>
When applied on the following source xml:
<add-attr attr-name="PHONENO">
<value type="string">value1,value2,value3</value>
</add-attr>
this transformation produces the following result:
<add-attr attr-name="PHONENO">
<value type="string">value1</value>
<value type="string">value2</value>
<value type="string">value3</value>
</add-attr>
Cheers,
Dimitre Novatchev.
__________________________________________________
Do You Yahoo!?
LAUNCH - Your Yahoo! Music Experience
http://launch.yahoo.com
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list