[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] string question


Subject: Re: [xsl] string question
From: Robert Koberg <rob@xxxxxxxxxx>
Date: Thu, 22 Feb 2001 08:46:27 -0800

How about this.

The XML
-------------------------------
   <test>
      <b310>08/773,384</b310>
      <b310>090/77332,38476</b310>
      <b310>08890/77387262,384768278392</b310>
   </test>
=============================
The XSL
--------------------------
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="test">
   <xsl:apply-templates select="b310" mode="first"/>
</xsl:template>

<xsl:template match="b310" mode="first">
   PR_<xsl:value-of select="substring-before(., '/')" />
   <xsl:apply-templates select="." mode="second"/>
</xsl:template>

<xsl:template match="b310" mode="second">
   PR_<xsl:value-of select="substring-before(substring-after(., '/'), ',')"
/>
   <xsl:apply-templates select="." mode="third"/>
</xsl:template>

<xsl:template match="b310" mode="third">
   PR_<xsl:value-of select="substring-after(substring-after(., '/'), ',')"
/>
   <br/>
</xsl:template>
</xsl:stylesheet>
============================
The output:
------------------------------------
   PR_08
   PR_773
   PR_384<br/>
   PR_090
   PR_77332
   PR_38476<br/>
   PR_08890
   PR_77387262
   PR_384768278392<br/>




----- Original Message -----
From: "David Santamauro" <david.santamauro@xxxxxxxx>
To: "Jeni Tennison" <mail@xxxxxxxxxxxxxxxx>
Cc: "Xsl-List" <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
Sent: Wednesday, February 21, 2001 10:35 PM
Subject: RE: [xsl] string question


> thanks for the clues... unfortunately, everything is variable (length and
> punctuation).
>
> I'll try your and Michael's solution and report back on the progess. Once
> again, thanks.
>
> David
>
> -----Original Message-----
> From: Jeni Tennison [mailto:mail@xxxxxxxxxxxxxxxx]
> Sent: Wednesday, February 21, 2001 08:10
> To: David Santamauro
> Cc: Xsl-List
> Subject: Re: [xsl] string question
>
>
> Hi David,
>
> >>From this xml (those IP persons might recognize this):
> > <b310>08/773,384</b310>
> >
> > I need:
> > PR_08/773,384 PR_08 PR_773 PR_384
> >
> > Basically, all punctuation (and spaces) are "segment" delimiters.
Starting
> > with entire content, each segment is then prefixed with PR_. Any help
> would
> > be greatly appreciated.
>
> Assuming that your strings are always of the form:
>
>   DD/DDD,DDD
>
> (where D is a digit) you could use:
>
> PR_<xsl:value-of select="b310" />
> PR_<xsl:value-of select="substring(b310, 1, 2)" />
> PR_<xsl:value-of select="substring(b310, 4, 3)" />
> PR_<xsl:value-of select="substring(b310, 8, 3)" />
>
> If the lengths of the different parts of the strings can vary, then
> you need to use substring-before() and substring-after():
>
> PR_<xsl:value-of select="b310" />
> PR_<xsl:value-of select="substring-before(b310, '/')" />
> PR_<xsl:value-of select="substring-before(
>                            substring-after(b310, '/'), ',')" />
> PR_<xsl:value-of select="substring-after(
>                            substring-after(b310, '/'), ',')" />
>
> If there can be more parts to the string, then you need a recursive
> solution.  If that's the case, then can you write a general pattern
> for the string, and we'll try to work something out?
>
> I hope that helps,
>
> Jeni
>
> ---
> Jeni Tennison
> http://www.jenitennison.com/
>
>
>
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
>


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



Current Thread
Keywords