Subject: Re: [xsl] Re: Move (ascend) an element From: Naomi Gronson <naomi_gronson@xxxxxxxxx> Date: Wed, 10 Nov 2004 08:31:56 -0800 (PST) |
Thanks Wendell, Writing it that way makes a lot more sense--my xsl sheets are littered with the literal descendants/parent/child notations. The way you mentioned makes it easier to see what's going on. I'm trying to retain the original attributes from the figure match and the following code seems to work, although I haven't seen many instances with two copy-of's in a row--do you know if this is okay practice?: <xsl:template match="figure[./title/indexterm]"> <xsl:copy> <xsl:copy-of select="@*"/> <xsl:copy-of select=".//indexterm"/> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> It seems preferable than recreating each attribute (some are custom) with the <attribute> tag. Anyways thanks for all your help! Naomi Hi Naomi, At 04:27 PM 11/9/2004, you wrote: >I used a modification of the provided example to try >and move indexterms from inside /figure/title to just >above the title, but I seem to be losing my figure >attributes like id and role (because of a shallow >copy?)--doing it this way also for some reason takes >another indexterm from earlier in the xml file and >puts it right before the one I want moved (this, I >have no clue about): > ><xsl:template >match="figure[child::title[child::indexterm]]"> > <xsl:copy> > <xsl:copy-of select="//indexterm"/> "//indexterm" translates to "/descendant-or-self::node()/child::indexterm", meaning all indexterms in the document, which is why you get them. You want ".//indexterm", which collects all the indexterms inside the context node. Not a big deal, but the conventional way to write your match expressions would probably be match="figure[./title/indexterm]" (short for child::figure[self::node()/child::title/child::indexterm]) and match="figure/title/indexterm" (instead of match="indexterm[parent::title[parent::figure]]") They work the same as yours but are a bit easier to read for the XPath-fluent. Cheers, Wendell ====================================================================== Wendell Piez mailto:wapiez@xxxxxxxxxxxxxxxx Mulberry Technologies, Inc. http://www.mulberrytech.com 17 West Jefferson Street Direct Phone: 301/315-9635 Suite 207 Phone: 301/315-9631 Rockville, MD 20850 Fax: 301/315-8285 ---------------------------------------------------------------------- Mulberry Technologies: A Consultancy Specializing in SGML and XML ====================================================================== __________________________________ Do you Yahoo!? Check out the new Yahoo! Front Page. www.yahoo.com
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Re: Move (ascend) an elem, Wendell Piez | Thread | Re: [xsl] Re: Move (ascend) an elem, Wendell Piez |
Re: [xsl] variable question, Bruce D'Arcus | Date | RE: [xsl] Test for preceding-siblin, Andrew Welch |
Month |