Consider the following:
Transform XML into XML. The resulting XML will be a series of pass
and fails where specific template rules have a match. So you might be
asking questions like, does my element have an attribute "a" who's
value is "b"? Or actually, you'd ask the question: if my element has
an attribute "a" who's value is "b" then append the attribute "pass" =
"1" to the resulting XML, otherwise, append the attribute "pass" =
"0".
Example XML:
<foo>
<bar a="c"/>
<bar a="b"/><!-- passes -->
<bar a="a"/>
<bar a="b"/><!-- passes -->
</abc>
You would then:
<xsl:apply-template select="foo/bar[(_at_)a='b']" mode="matchedresults"/>
And match on:
<xsl:template match="bar" mode="matchedresults">
<!-- append element "pass" = "1"-->
</xsl:template>
At this point, there is no way to have an "unmatched" template result,
and this does make sense to me. 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"/>
On Tue, 22 Mar 2005 18:12:57 +1100, Dimitre Novatchev
<dnovatchev(_at_)gmail(_dot_)com> wrote:
I know that the OP meant something completely different, but probably
what seems as an appropriate answer to the question expressed in the
title of this thread is:
the builtin rules.
It is a good practice to have them explicitly in one's code (with the
least priority possible) and to put breakpoints on them (in a good
XSLT IDE with a debugger), whenever one gets unexpected output that no
other template is supposed to produce.
I find this meaning of "catch all" more natural and intuitive.
Cheers,
Dimitre Novatchev.
On Mon, 21 Mar 2005 08:03:06 -0700, Karl Stubsjoen
<kstubs(_at_)gmail(_dot_)com> wrote:
I'd like a catch ALL template rule, actually a catch NOT template
rule. In an effort to check for the existence of a select, I have
setup a match template rule that simply returns "1" for a match. So I
have:
<xsl:template match="record" mode="recordexists">
<xsl:text>1</xsl:text>
</xsl:template>
The failed select would need to return a "0". So I need a match that
simply returns 0.
So something like:
<xsl:template match="not(record)" mode="recordexists">
<xsl:text>0</xsl:text>
</xsl:template>
(which is not a legal match statement, but that is what I need). I'm
sure there is a way, and I'm sure it is obvious! Just not coming to
me.
Thanks,
Karl
--~------------------------------------------------------------------
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>
--~--
--~------------------------------------------------------------------
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>
--~--
--~------------------------------------------------------------------
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>
--~--