Subject: Re: [xsl] Ridiculous XPath expression, can I reduce it? From: Oliver Becker <obecker@xxxxxxxxxxxxxxxxxxxxxxx> Date: Tue, 3 Apr 2001 14:21:14 +0200 (MET DST) |
> > I found this XPath expression lurking in some code, and I'm thinking this > > *may well* not be the most efficient way of performing this task, which > > basically finds all the elements that exist below any given <input.form> tag > > but not below an <input.link> tag. > > > > Here is the horror: > > > > .//input.hidden[count(ancestor::input.form[not(@done)])=1 and > > not(@form.prefix) and not(ancestor::input.link)] | > > ... > > using "starts-with(name(.),'input.')" might reduce it somewhat What about .//*[self::input.hidden or self::input.text or self::input.textarea or ....] [count(ancestor::input.form[not(@done)])=1 and not(@form.prefix) and not(ancestor::input.link)] or (.//input.hidden | .//input.text | .//input.textarea | ....) [count(ancestor::input.form[not(@done)])=1 and not(@form.prefix) and not(ancestor::input.link)] (.... is just my abbreviation) > personally, I'd let all the elements get processed, but add a > > <xsl:if test="not(ancester::input.link)"> > ... > </xsl:if> > > condition in the template Vincent didn't tell us, if input.link is an ancestor of the context node. The original test looks for an ancestor of the input.... elements. Cheers, Oliver /-------------------------------------------------------------------\ | ob|do Dipl.Inf. Oliver Becker | | --+-- E-Mail: obecker@xxxxxxxxxxxxxxxxxxxxxxx | | op|qo WWW: http://www.informatik.hu-berlin.de/~obecker | \-------------------------------------------------------------------/ XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Ridiculous XPath expressi, Nick Vincent | Thread | RE: [xsl] Ridiculous XPath expressi, Nick Vincent |
RE: [xsl] Ridiculous XPath expressi, Nick Vincent | Date | [xsl] Application using XML, Daniel Newman |
Month |