Subject: Re: [xsl] My XPath mistakenly referenced an element that doesn't exist and I got no error message ... is this bad language design? From: "Martin Honnen martin.honnen@xxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Thu, 14 Oct 2021 13:59:18 -0000 |
In addition to that, I think Saxon EE with schema-aware XSLT 2/3 and xs:import-schema would warn you about the use of a path like "Document/foo" if there is no match in the schema for a possible element. I don't think it is an obligation of a schema-aware XSLT processor but I think it is a feature of Saxon EE. Am 14.10.2021 um 15:55 schrieb Wendell Piez wapiez@xxxxxxxxxxxxxxx: > Roger, > > I think your colleague is right, but not very right. > > You forget that a missing 'foo' may be an error in one document and a > feature in another document in the very same system. Indeed it is part > of the semantics that constitute the reason why we save > documents,B that we do not always have complete prior knowledge of > every foo. (Otherwise what are we computing, etc.) > > If your schema requires foo, then use a schema-aware XPath engine, and > your colleague has the feature he wants. That would be an appropriate > way to layer in the requirement withoutB him having to test every case. > > Meanwhile, good luck making your case for why an essential feature is > not always a problem. > > Cheers, Wendell > > > > On Thu, Oct 14, 2021 at 9:46 AM Roger L Costello costello@xxxxxxxxx > <mailto:costello@xxxxxxxxx> <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx > <mailto:xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>> wrote: > > Hi Folks, > > Here is my (very simple) XML document: > > B B B B <Document>Hello, world</Document> > > My XSLT program contains a xsl:value-of with a simple XPath > expression: > > B B B B <xsl:template match="/"> > B B B B B B <xsl:value-of select="Document/foo eq 'abc'"/> > B B B B </xsl:template> > > In the XPath expression I mistakenly referenced an element -- foo > -- that does not exist. > > I ran the XSLT program on the XML document. No error was generated. > > My colleague argues that such behavior is bad language design: > --------------------------------------------------- > Languages which define such mistakes to just return "empty" node > lists or false, or such are not helping anybody. They just turn > author mistakes into silent, hard-to-detect behaviors.B In my view > this is a major mistake in the XPath language. > > All path expressions should be strongly, statically type-correct, > so Document/foo has to be a possible path. But if element foo is > optional, then any given instance may not have element foo and so > a path like Document/foo can be type correct, but meaningless for > a particular data document. One can explicitly test, e.g., > > if ( exists(Document/foo) ) then (Document/foo eq 'abc') else.... > > If you just use the expression without this test, and node foo > doesn't exist, then it should cause a failure. > --------------------------------------------------- > > Do you agree with my colleague's assessment? Is this behavior in > XPath an indication of bad language design? > > /Roger > > > > > -- > ...Wendell Piez... ...wendell -at- nist -dot- gov... > ...wendellpiez.com... ...pellucidliterature.org... ...pausepress.org... > ...github.com/wendellpiez. <http://github.com/wendellpiez.>.. > ...gitlab.coko.foundation/wendell... > XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list> > EasyUnsubscribe <http://lists.mulberrytech.com/unsub/xsl-list/582271> > (by email <>)
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] My XPath mistakenly refer, Wendell Piez wapiez@ | Thread | Re: [xsl] My XPath mistakenly refer, Wendell Piez wapiez@ |
Re: [xsl] My XPath mistakenly refer, Wendell Piez wapiez@ | Date | Re: [xsl] My XPath mistakenly refer, Wendell Piez wapiez@ |
Month |