Subject: Re: [xsl] Catch ALL | Failed template rule From: Stef <stef@xxxxxxxxx> Date: Tue, 22 Mar 2005 15:20:00 -0500 |
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[@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[@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
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Catch ALL | Failed templa, Michael Kay | Thread | Re: [xsl] Catch ALL | Failed templa, Wendell Piez |
Re: [xsl] undeclared namespace erro, Daniel McOrmond | Date | Re: [xsl] Catch ALL | Failed templa, Wendell Piez |
Month |