xsl-list
[Top] [All Lists]

Re: XPath using descendant and negative matching

2003-12-03 08:38:26

    <xsl:template match="*[descendant::*/Partners]">

that matches all elements that have a descendent that has a Partners
child,  note it doesn't match elements that have a Partners child
(unless that Partners itself has a Partners descendant)

You probably just want to match elements that have a Partners child

*[Partners]

or elements that have a Partners descendant

*[.//Partners]

although note that any use of // is potentially expensive.



     <xsl:template match="*[descendant::*/[not Partners]]">

not() is a function so takes () like all otherf unctions

<xsl:template match="*[descendant::*/[not(Partners)]]">

matches any element that has a descendent that is not a Partners
which is almost certainly not what you want.

Assuming you want one of teh above, teh negation is

*[not(Partners)]
or
*[not(.//Partners)]
or more simply, just
*
as a match="*" has lower priority than match="*[Partners]" so
will only be used in teh "other" case.

David



-- 
http://www.dcarlisle.demon.co.uk/matthew

________________________________________________________________________
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
________________________________________________________________________

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



<Prev in Thread] Current Thread [Next in Thread>