Subject: RE: [xsl] How to navigate the tree from a selected node to the root? From: Jarno.Elovirta@xxxxxxxxx Date: Fri, 18 Oct 2002 14:58:07 +0300 |
Hi, > <?xml version="1.0"?> > <?xml-stylesheet type="text/xsl" href="try.xsl"?> > > <books> > <book name="name2"> > <otherdetails price="10"/> > </book> > > <book name="name1"> > <otherdetails price="20"/> > </book> > </books> > > and an xsl for the above as: > > <xsl:stylesheet version="1.0" > xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> > <xsl:output method="xml"/> > > <xsl:template match="/"> > <xsl:for-each select="books/book/otherdetails[@price='10']"> > <xsl:copy-of select="parent::*"/> > </xsl:for-each> > > </xsl:template> > </xsl:stylesheet> > > This gives the output as: > > <?xml version="1.0" encoding="UTF-8"?> > <book name="name2"> > <otherdetails price="10"/> > </book> > > I want to get like this: > <books> > <book name="name2"> > <otherdetails price="10"/> > </book> > </books> > > i.e. From this paricular selected node, i want to navigate > till the root > node and get the output. > I will not know how many more ancestors are there to reach > the root node. > > Can you please help me out for doing the same. Will changing the approach to <xsl:template match="books"> <xsl:copy> <xsl:apply-templates select="@* | book[otherdetails/@price = '10']" /> </xsl:copy> </xsl:template> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> be a suitable solution? Cheers, Jarno XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] How to navigate the tree from, Nirmala R | Thread | RE: [xsl] How to navigate the tree , Nirmala R |
RE: [xsl] What is the fastest XSLT , bryan | Date | Re: Functional Language wasRE: [xsl, David Carlisle |
Month |