xsl-list
[Top] [All Lists]

Re: Catch ALL | Failed template rule

2005-03-22 13:20:00
On Tue, Mar 22, 2005 at 07:59:15PM -0000, Michael Kay wrote:
I guess I was looking for the
cleanest way to exercise this.  I guess it would be this:
<xsl:apply-template select="not(foo/bar[(_at_)a='b'])" 
mode="unmatchedresults"/>

No, the result of the selection has to be a set of nodes, it can't be a
boolean.

The idea in your head of invoking a template rule if something isn't there
is not a ridiculous one, but it's something that the language doesn't
support, and couldn't be made to support without introducing some new
fundamental concepts. So the best one can say is: it ain't going to happen;
find another route to your destination.


Jumping in at the eleventh hour and probably am hugely
wrong here, but, wouldn't the following work ?

<xsl:apply-template select="*[not(foo/bar[(_at_)a='b'])]" 
mode="unmatchedresults"/>

This would match any node that did not have the foo/bar
entity with an attribute of a that was b. you would (of
course) need to provide some other search criteria such
as name()="corefoo" so that it didn't match elements
you were not interested in.

As a sidenote, I have used the following in my xslt to
match any sub-element that was -not- a prev, next or
alternativenames

<xsl:for-each select="*[not(name()='prev') and not(name()='next') and no
t(name()='alternativenames')]">

Is there any 'cleaner' or 'saner' way to write this ? 


again, apologies if this is not what was asked for,
I am simply trying to offer something that has worked
for me in a somewhat similiar fashion.

regards
Steph

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--