<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