This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Parsing & splitting a string n times


>   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="', &#9;&#10;&#13;'"/>
        </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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]