Subject: Re: [xsl] changing source-tree From: Jeni Tennison <jeni@xxxxxxxxxxxxxxxx> Date: Thu, 10 Nov 2005 14:27:13 +0000 |
Hi Manuel, > I have the following problem: > <foo> > <example_bar> > ... > </example_bar> > </foo> > > foo triggers a template which splits a string into one or more > pieces. example_bar is the element which describes on how to output > one of them. Though I only know at runtime how many pieces there > are. I'd pass the <example_bar> element as a parameter to the template that splits the string into pieces, and then, within that template, apply templates to the <example_bar> element with the substring as the argument. Something like: <xsl:template match="foo"> <xsl:call-template name="split-string"> <xsl:with-param name="string" select="..." /> <xsl:with-param name="output-template" select="*" /> </xsl:call-template> </xsl:template> <xsl:template name="split-string"> <xsl:param name="string" /> <xsl:param name="output-template" /> <xsl:choose> <xsl:when test="contains($string, ' ')"> <!-- deal with the substring based on the output template --> <xsl:apply-templates select="$output-template"> <xsl:with-param name="string" select="substring-before($string, ' ')" /> </xsl:apply-templates> <!-- recurse through the rest of the string --> <xsl:call-template name="split-string"> <xsl:with-param name="string" select="substring-after($string, ' ')" /> <xsl:with-param name="output-template" select="$output-template" /> </xsl:call-template> </xsl:when> <xsl:when test="$string"> <!-- deal with the string based on the output template --> <xsl:apply-templates select="$output-template"> <xsl:with-param name="string" select="$string" /> </xsl:apply-templates> </xsl:when> </xsl:choose> </xsl:template> <xsl:template match="foo/*"> <xsl:param name="string" /> <xsl:copy> <xsl:value-of select="$string" /> </xsl:copy> </xsl:template> Cheers, Jeni --- Jeni Tennison http://www.jenitennison.com/
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] changing source-tree, Manuel Baehnisch | Thread | Re[2]: [xsl] changing source-tree, Manuel Baehnisch |
[xsl] changing source-tree, Manuel Baehnisch | Date | Re: [xsl] parsing a complex xml tre, David Carlisle |
Month |