|
[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: multiple attribute values in XSL
On Fri, May 11, 2001 at 04:33:11PM +0200, Lyndon J B Nixon wrote: > hi, > > i couldnt find any help on this online, so i hope someone on list can give > me some pointers > > i want to transform a XML tag with an attribute with multiple values into > multiple tags each of which is determined by each > of the attribute values, eg. > > <X position="1,2,3"/> > > is transformed by XSLT into > > <Y value="1"/> > <Y value="2"/> > <Y value="3"/> > > is there a way to do this? Yes. Here's a sample transform. If you have trouble deciphering this, please read up on recursion, or better yet, a good text on LISP or Scheme. <xsl:template match="X"> <root> <xsl:call-template name="emit-Y"> <xsl:with-param name="first" select="substring-before(@position, ',')"/> <xsl:with-param name="rest" select="substring-after(@position, ',')"/> </xsl:call-template> </root> </xsl:template> <xsl:template name="emit-Y"> <xsl:param name="first"/> <xsl:param name="rest"/> <Y value="{$first}"/> <xsl:if test="$rest"> <xsl:choose> <xsl:when test="contains($rest, ',')"> <xsl:call-template name="emit-Y"> <xsl:with-param name="first" select="substring-before($rest,',')"/> <xsl:with-param name="rest" select="substring-after($rest,',')"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:call-template name="emit-Y"> <xsl:with-param name="first" select="$rest"/> </xsl:call-template> </xsl:otherwise> </xsl:choose> </xsl:if> </xsl:template> Z.
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Cast Your Vote
We need your help – Vote for DataDirect XML Products!
Winners and finalists announced at SOA World Conference in November. 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
|
|||||||||







