xsl-list
[Top] [All Lists]

Re: Moving an element to a new location in the Result-tree

2005-09-07 16:53:30
Contra Jim Graves writes:
What is the recommended method to move an element to a Result-tree
location that will be created, yet has not yet been created, (using
copy, & copy-of)? Common sense would indicate that I need to run a
second XSLT transform -- once the first version of the tree has been
created -- or is there a better way, such as building the tree's
elements first, then populating them with data, in a following template
in the first and only transform? Since I usually build the element and
populate it then too, when I'm there, I think I'll need a second XSLT.

I think you may be falling prey to the same procedural trap discussed
earlier today on this list.

If I have this input tree:

<document>
  <a/>
  <b/>
</document>

and I want to put a inside of b, I can do this:

<xsl:template match="@*|node()">
  <xsl:copy>
    <xsl:apply-templates select="@*|node()"/>
  </xsl:copy>
</xsl:template>

<xsl:template match="a"/>

<xsl:template match="b">
  <xsl:copy>
    <xsl:apply-templates select="../a" mode="inside"/>
  </xsl:copy>
</xsl:template>

<xsl:template match="a" mode="inside">
  <xsl:copy>
    <xsl:apply-templates select="@*|node()"/>
  </xsl:copy>
</xsl:template>

which results in:

<document>
  <b><a/></b>
</document>

~Chris
-- 
Christopher R. Maden, Principal Consultant, crism consulting
XML-SGML-HTML-DTDs-schemas-XSL-DSSSL-conversion-training-ebooks-B2B
<URL: http://crism.maden.org/consulting/ >
PGP Fingerprint: BBA6 4085 DED0 E176 D6D4  5DFC AC52 F825 AFEC 58DA


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--