xsl-list
[Top] [All Lists]

Re: [xsl] My XPath mistakenly referenced an element that doesn't exist and I got no error message ... is this bad language design?

2021-10-14 09:23:06
For generic xml without a dtd or schema, there is no wrong XPath as who is to 
say that element might exist somewhere or sometime. It would be nice if there 
was a way to validate an XPath against a given did or schema to indicate a path 
would never exist.Sent from my Verizon, Samsung Galaxy smartphone
-------- Original message --------From: "Roger L Costello 
costello(_at_)mitre(_dot_)org" 
<xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com> Date: 10/14/21  6:45 
AM  (GMT-08:00) To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com Subject: 
[xsl] My XPath mistakenly referenced an element that doesn't exist
        and I got no error message ... is this bad language design? Hi 
Folks,Here is my (very simple) XML document:     <Document>Hello, 
world</Document>My XSLT program contains a xsl:value-of with a simple XPath 
expression:        <xsl:template match="/">            <xsl:value-of 
select="Document/foo eq 'abc'"/>      </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.  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
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--
<Prev in Thread] Current Thread [Next in Thread>