Re: [xsl] Avoiding boneheaded mistakes in XSLT?

Subject: Re: [xsl] Avoiding boneheaded mistakes in XSLT?
From: Dave Pawson <davep@xxxxxxxxxxxxx>
Date: Wed, 29 Dec 2010 15:23:22 +0000
On Wed, 29 Dec 2010 10:07:26 -0500
"G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx> wrote:

>  Allow me to try again, please.
> 
> Consider an XML document whose content model for <a> is:  ( b, c?, d )
> 
> This is a valid instance:
> 
>    <a>
>      <b/>
>      <c/>
>      <d/>
>    </a>
> 
> But, this is also a valid instance:
> 
>    <a>
>      <b/>
>      <d/>
>    </a>
> 
> So, given the second instance, I run it against two stylesheets:
> 
> Stylesheet 1:
> 
>    <xsl:if test="not(a/c)">I'll make an assumption about a missing
> C</xsl:if>
> 
> Stylesheet 2 (with a typo in it because the user mistyped):
> 
>    <xsl:if test="not(a/cc)">I'll make an assumption about a missing
> C</xsl:if>
> 
> Without a schema to know that <cc> is not an acceptable element, 
> there is no way to distinguish the two above if statements.  With a 
> schema, the second one is clearly in error.  But without a schema, it 
> does not make sense to issue an error or warning about the first 
> stylesheet, because it is a bona fide test I want to perform 
> regarding the absence of <c>.  Hence, it cannot make the same 
> assumption about the second stylesheet, and so again cannot issue an 
> error or warning.


Again you're assuming the presence of a schema?
Review that given an input XML instance only.
The lack of a trigger for the xpath provides information
that is useful IMHO.

I'm not arguing that extra information may be gleaned from the Schema,
just that in many cases such a schema may not be available,
an instance being used is more usually available.





-- 

regards 

-- 
Dave Pawson
XSLT XSL-FO FAQ.
http://www.dpawson.co.uk

Current Thread