Subject: Re: Problems copying elements recursively.
From: Jeni Tennison <jeni@xxxxxxxxxxxxxxxx>
Date: Mon, 10 Feb 2003 10:00:09 +0000
|
Dimitre wrote:
> "Imrran Wahid" <devguy2003@xxxxxxxxx> wrote in message
> news:20030209234334.51979.qmail@xxxxxxxxxxxxxxxxxxxxxxxxx
>> Pardon me for asking what may be a simple question,
>> but I am not very well versed in xsl. How do I
>> translate the count to number of spaces( )?
>
> The simplest (to understand) way is to have an xsl:variable
> containing a sufficiently long string of spaces. Then take the exact
> number of spaces using the substring() function.
>
> Another way (when one doesn't know the maximum possible number of
> spaces that will be needed) is to use a recursive named template --
> e.g. one from exslt, or this one:
>
> http://sources.redhat.com/ml/xsl-list/2001-07/msg01040.html
>
> Or use the "iter" template from the FXSL library.
>
> The last solution is the most generic and can be used to implement
> any iteration of the type "Do something N times".
Just to add to Dimitre's suggestion: since Imrran is counting
ancestors to work out how many non-breaking spaces to add, it would be
a good idea to use one of the above methods to create an $indent
number of spaces (e.g. in an $indent-spaces global variable), and then
use xsl:for-each to iterate over the ancestors to multiply that number
of non-breaking spaces:
<xsl:for-each select="ancestor::*">
<xsl:value-of select="$indent-spaces" />
</xsl:for-each>
Another method that I use when formatting a tree is to pass down the
previous indent as a parameter from parent to child, adding an indent
on each step. Something like:
<xsl:template match="*">
<xsl:param name="indent" />
...
<xsl:apply-templates>
<xsl:with-param name="indent"
select="concat($indent, $indent-spaces)" />
</xsl:apply-templates>
...
</xsl:template>
Again, the $indent-spaces that you add to the indent at each level may
need to be constructed dynamically from a number using one of
Dimitre's suggestions above.
Cheers,
Jeni
---
Jeni Tennison
http://www.jenitennison.com/
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
| Current Thread |
Dimitre Novatchev - Mon, 10 Feb 2003 00:37:34 -0500 (EST)
- Jeni Tennison - Mon, 10 Feb 2003 04:58:18 -0500 (EST) <=
|
|