This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: copy single node once from one location to another
- From: Peter Davis <pdavis152 at attbi dot com>
- To: xsl-list at lists dot mulberrytech dot com
- Cc: Thomas Olausson <thomas dot olausson at home dot se>
- Date: Fri, 6 Sep 2002 15:43:49 -0700
- Subject: Re: [xsl] copy single node once from one location to another
- References: <1031348781.97e6a960thomas.olausson@home.se>
- Reply-to: xsl-list at lists dot mulberrytech dot com
On Friday 06 September 2002 14:46, Thomas Olausson wrote:
> I'd like to write a XSLT that moves the data_text to the corresponding
> index of "a", expressed in data_nr. In the above case, /mydoc/a[2]
The way you are thinking about this is completely inverse of how XSLT works.
You can't "move" a <data_text> into /mydoc/a[2], but you *can* output the
second <a> and output the correct <data_text> as a child at the same time.
Does that make any sense? You have to select the correct <data_text> element
at the time that you copy it; you can't have a template for <data_text> that
says "Oh, I should have copied this into the <a> that I already copied."
That means you have to put this code into the template that copies the <a>.
Once you realize that, it's pretty easy to realize how to determine the index
of the current <a>, and look up the correct <data_text> with something like
"/mydoc/specials[data_nr=$index]/data_text". Once you have that in your
head, the next logical step is to use <xsl:key> to do the lookup qickly and
more simply.
I hope that clarifies how I arrived at my solution. In general, working with
XSLT is often backwards from the way you work with other procedural
programming languages. Some day, you will have an epiphany, and everything
will become easier.
--
Peter Davis
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list