Subject: Re: Avoiding boneheaded mistakes in XSLT?
From: Dave Pawson <davep@xxxxxxxxxxxxx>
Date: Wed, 29 Dec 2010 17:38:07 +0000
|
On Wed, 29 Dec 2010 10:31:21 -0500
"G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx> wrote:
> >Again you're assuming the presence of a schema?
>
> I am not, Dave. My claim is that given only the input XML instance
> it is unwarranted to emit any kind of error or warning for an XPath
> address that does not resolve to the instance.
>
> >Review that given an input XML instance only.
>
> That is my original intent of what I wrote above.
>
> >The lack of a trigger for the xpath provides information
> >that is useful IMHO.
>
> I wholeheartedly disagree. It is misleading information. That an
> element allowed to be absent is absent is not worthy of any message
> at all.
"allowed"? I'd interpret that as a validity statement wrt some schema?
> It is entirely an expected condition of the input instance
> that my stylesheet may test for, or get the value for, or select
> without an error.
>
> For example, rather than:
>
> <xsl:if test="c">
> <newC>This is a new c: <xsl:value-of select="c"/></newC>
> </xsl:if>
>
> I usually will type:
>
> <xsl:for-each select="c">
> <newC>This is a new c: <xsl:value-of select="."/></newC>
> </xsl:for-each>
>
> There are three examples of addressing the absent <c> in my instance,
> with a test, a value-of and a select, and just because <c> isn't in
> my instance the processor has no license to issue any error or
> warning message. The next instance may, very well, have a <c>
> element in it.
So for some C you will have errors/unmatched xpaths
others you won't.
I'd prefer to know of them rather than 'assume'
they are OK.
> >just that in many cases such a schema may not be available,
> >an instance being used is more usually available.
>
> Absolutely an instance is more available, but because an instance
> knows nothing of absent items that are allowed to be absent, the
> processor cannot make an assumption that addressing something that is
> absent is worthy of an error or warning message.
>
> I hope this has finally convinced you.
No Ken, I'm looking at it as a means of getting more from the processor.
If as in your example/Schematron, the warning is something that I can
tick off, then great. Otherwise it's likely I've done something wrong
in writing that xpath expression.
Same problem, different perspectives.
--
regards
--
Dave Pawson
XSLT XSL-FO FAQ.
http://www.dpawson.co.uk
|