[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: select descendant problem
It rather depends on what you want to do with the nodes once you have selected them. I suspect that you don't actually want to "select" them at all: rather, you want to copy the part of the input tree that contains these nodes, and not copy other parts. The way to do this is with a set of template rules that processes (copies) the elements you are interested in, and does something else with the others. Typically the default is to copy a node: <xsl:template match="*"> <xsl:copy> <xsl:copy-of select="@*"/> <xsl:apply-templates/> </xsl:copy> </xsl:template> and then you override this for nodes you want to process differently, for example <xsl:template match="wrapper"> <xsl:apply-templates/> </xsl:template> which basically says "when you find an element, copy it and process its children; but when you find a wrapper element, don't copy it, but still process its children." Michael Kay http://www.saxonica.com/ > -----Original Message----- > From: Mati Hadi [mailto:matilda.kapro@xxxxxxxx] > Sent: 10 October 2008 19:00 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: select descendant problem > > Hi Mailinglist, > > I have an xml file like this: > <wrapper class=menu> > <title>menu1</title> > <section> > <title>Indoor climate</title> > <table> some table here</table> > <section> > <title> under menus</title> > <paragraph>some text here</paragraph> > </section> > <wrapper class=menu> > <title>menu1.1</title> > <section> > <title>Temperatur</title> > <paragraph>some text here</paragraph> > </section> > <wrapper class=menu> > <title>menu1.1.1</title> > <section> > <title>Heat</title> > <paragraph>some text here</paragraph> > </section> > <wrapper class=menu> > <title>menu1.1.1.1</title> > <section> > <title>Heat2</title> > <paragraph>some text here</paragraph> > </section> > </wrapper> > </wrapper> > </wrapper> > </section> > </wrapper> > > I want to select all the children of the wrapper, except the > children wrappers. I mean I want to select i.e from the first > wrapper just title, section,section/title, section/table and > section/section,but not the child wrapper, and from the child > wrapper, I want to select all its children except the child > wrapper, and so on. > I tried to write : > <xsl: for-each select=wrapper[@class=menu]> > <xsl:apply-templates > select=*[not(descendant::wrapper[wrapper=menue])]/> > </xsl:for-each> > But this dos not work. Any ideas please > > Thank you in advance > Matilda > > > > __________________________________________________________ > Ger det lengsamt? Skaffa dig en snabbare bredbandsuppkoppling. > Svk och jdmfvr priser hos Kelkoo. > http://www.kelkoo.se/c-100015813-bredband.html?partnerId=96914325
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|