Subject: Re: [xsl] Insert an new Element on a attribute value change / test for nonexistence of an attribute From: "Stephan H. Wissel" <stephan@xxxxxxxxxx> Date: Thu, 15 Jul 2004 02:11:54 +0800 |
Hi David, thx a lot! Works like a charm. I missed out the () after not. Your code has one typo. Instead of: generate-id(following-sibling*[@newchapter='true'][1] it shoud read generate-id(following-sibling::*[@newchapter='true'][1] ... but spotting this was sporty <g>. What I would love to see is a training vizualization software, where you can click 2 nodes and it starts generating the xpath expressions and color the axis and all such stuff. Do you know one? ;-) stw David Carlisle <davidc@xxxxxxxxx> wrote on 14/07/2004 23:12:58: > > Firstly this is essentially a grouping problem so you could do worse > than > http://www.jenitennison.com/grouping > > but to answer your questions: > > > How to test for the non-existance of an > > attribute. > > test="not(@foo)" or test="not(element/@foo)" if the attributes not on > teh current element. this is not special syntax it is just part of teh > general scheme of things, @foo is an Xpath which selects all attributes > called foo, a node set used in a boolean test counts as false just if > the node set is empty, which it will be in this case if there are no foo > attributes. > > > And how to select a subset of the following siblings. > > The rule: all following siblings until you find one with an existing > > attribute newchapter='true'. > > This is harder in Xpath1 (and Jeni's grouping pages will show how you > can use keys to avoid answering it directly) but > you can do this as follows: firstly identify the next such element > <xsl:variable name="x" select=generate-id(following- > sibling*[@newchapter='true'][1])"/> > Then select all following siblings that have the property that _their_ > first following sibling is the same one: > > select="following-sibling::*[generate-id(following- > sibling*[@newchapter='true'][1])=$x]" > > David > > ________________________________________________________________________ > This e-mail has been scanned for all viruses by Star Internet. The > service is powered by MessageLabs. For more information on a proactive > anti-virus service working around the clock, around the globe, visit: > http://www.star.net.uk > ________________________________________________________________________
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Insert an new Element on , David Carlisle | Thread | Re: [xsl] Insert an new Element on , David Carlisle |
RE: [xsl] Saxon 8.0b and NOTATIONs, Peter Flynn | Date | Re: [xsl] commenting and documentin, cking |
Month |