- From: Dimitre Novatchev <dnovatchev@gmail.com>
- Date: Tue, 6 May 2025 15:55:15 -0700
- To: Joel Kalvesmaki <kalvesmaki@gmail.com>
- Cc: Michael Kay <mike@saxonica.com>, Norm Tovey-Walsh <norm@saxonica.com>, public-xslt-40@w3.org
- Message-ID: <CAK4KnZfBFsYsoe3MgVt8enCHDofSEFV84X1NS0yfgwRskXO_=w@mail.gmail.com>
> PR 1975 nowhere removes any errors. It merely allows a singleton to be a sequence. The speaker did not need to address the question you raised, because it was irrelevant. No it was not irrelevant. The presenter even mentioned starting his presentation today, that this PR was quite controversial, as he was well-acquainted with the problem and the objections to it, expressed in comments. Also, in the proposed text it was explicitly stated that invoking a method/function off an empty sequence will not raise an error - and that this was raising an error in XPath 3.1. The presenter himself created this issue: "Dynamic function call applied to empty sequence #1972" https://github.com/qt4cg/qtspecs/issues/1972 There he explicitly proposed that a method/function could be invoked off an empty sequence, and that, while in XPath 3.1 this results in raising an error, "it would be more useful" not to raise such error in XPath 4. Here is a full quote: "The rules for dynamic function calls (xpath, ยง4.5.3.1) state that $F($X) raises a type error if $F is an empty sequence. I think it would be more useful if both map:get() and dynamic function calls were changed to have "empty if empty" semantics." And the presenter himself acknowledged that "the people should have known about this issue" if they read well the PR. This he thought was an excuse for not mentioning the problem at all. He said in his response above: "Our modus operandi is for detailed technical discussions to take place in writing before we take a decision in a meeting. *There is no need for all the technical arguments to be repeated verbally* in the meeting ..." Your reaction simply proves that the participants were not aware at all of the problem... Thanks, Dimittre. On Tue, May 6, 2025 at 2:55 PM Joel Kalvesmaki <kalvesmaki@gmail.com> wrote: > Dimitre, your point is tangential to the PR that was accepted today. PR > 1975 nowhere removes any errors. It merely allows a singleton to be a > sequence. The speaker did not need to address the question you raised, > because it was irrelevant. > > Repeating your claims, with bluster and without argument, does not serve > your cause. > > Best wishes, > > Joel > > On Tue, May 6, 2025 at 2:46 PM Dimitre Novatchev <dnovatchev@gmail.com> > wrote: > >> > Our modus operandi is for detailed technical discussions to take place >> in writing before we take a decision in a meeting. >> > There is no need for all the technical arguments to be repeated >> verbally in the meeting - it is assumed that attendees >> > have prepared for the meeting by reading the discussion thread. >> >> The fact remains that this most serious issue was not pointed out by the >> presenter - and not out of forgetfulness. >> >> Let us be well aware that we are being manipulated - even when this is >> being justified with "good intentions and logistics". >> >> I still hope that we are going to address the issue and find a >> satisfactory solution - contrary to the attempt to hide it. >> >> Dimitre Novatchev, >> >> On Tue, May 6, 2025 at 10:54 AM Michael Kay <mike@saxonica.com> wrote: >> >>> I think we are all well aware that the handling of empty sequences in >>> path expressions is a mixed blessing: it means that $BOOK / AUTHOR / NAME >>> returns the names of all the authors of the book whether the book has 0, 1, >>> or many authors; but at the same time it means that if the element name >>> AUTHOR is misspelled, no error is reported. >>> >>> In 3.1 we reproduced this behaviour with lookup of fields in records >>> ($BOOK ? AUTHOR ? NAME), and this PR extended this to lookup with methods >>> ($BOOK ? AUTHOR() ? NAME()). The construct $BOOK ! AUTHOR ! NAME also >>> follows the same pattern - emptiness is propagated down the path, rather >>> than being treated as erroneous. Consistency is important for usability, >>> and this handling of hierarchic selection paths is absolutely intrinsic to >>> the style and character of XPath as a language. >>> >>> Since it is not an error for a book to have no authors, there is no >>> "swallowing" of any error - the expression is not erroneous so there is no >>> error to swallow, and this applies to all these cases. >>> >>> The corrollory that XPath doesn't detect misspelled selectors in a path >>> is indeed a serious problem that costs developers hours of effort. This was >>> recognized soon after XPath 1.0 and the introduction of schema awareness >>> was an attempt to solve it, with mixed success. I think the functions such >>> as exactly-one() were also introduced with this in mind; the idea was that >>> if you expected a book to have exactly one author, you could write >>> $BOOK/exactly-one(AUTHOR)/exactly-one(NAME). But hardly anyone does so; >>> people will always write the code that is easiest to write, rather than the >>> code that is most robust. >>> >>> But the rule about a dynamic function call requiring a singleton wasn't >>> really a solution to that problem, it only detected it in a very small >>> minority of cases, and it did so more by accident than by design. We >>> should look for better solutions to that problem, which is what issue 1979 >>> strives to do. >>> >>> Our modus operandi is for detailed technical discussions to take place >>> in writing before we take a decision in a meeting. There is no need for all >>> the technical arguments to be repeated verbally in the meeting - it is >>> assumed that attendees have prepared for the meeting by reading the >>> discussion thread. >>> >>> Michael Kay >>> >>> >>> >> >> -- >> Cheers, >> Dimitre Novatchev >> --------------------------------------- >> Truly great madness cannot be achieved without significant intelligence. >> --------------------------------------- >> To invent, you need a good imagination and a pile of junk >> ------------------------------------- >> Never fight an inanimate object >> ------------------------------------- >> To avoid situations in which you might make mistakes may be the >> biggest mistake of all >> ------------------------------------ >> Quality means doing it right when no one is looking. >> ------------------------------------- >> You've achieved success in your field when you don't know whether what >> you're doing is work or play >> ------------------------------------- >> To achieve the impossible dream, try going to sleep. >> ------------------------------------- >> Facts do not cease to exist because they are ignored. >> ------------------------------------- >> Typing monkeys will write all Shakespeare's works in 200yrs.Will they >> write all patents, too? :) >> ------------------------------------- >> Sanity is madness put to good use. >> ------------------------------------- >> I finally figured out the only reason to be alive is to enjoy it. >> >> > > > -- > Joel Kalvesmaki > kalvesmaki.com > -- Cheers, Dimitre Novatchev --------------------------------------- Truly great madness cannot be achieved without significant intelligence. --------------------------------------- To invent, you need a good imagination and a pile of junk ------------------------------------- Never fight an inanimate object ------------------------------------- To avoid situations in which you might make mistakes may be the biggest mistake of all ------------------------------------ Quality means doing it right when no one is looking. ------------------------------------- You've achieved success in your field when you don't know whether what you're doing is work or play ------------------------------------- To achieve the impossible dream, try going to sleep. ------------------------------------- Facts do not cease to exist because they are ignored. ------------------------------------- Typing monkeys will write all Shakespeare's works in 200yrs.Will they write all patents, too? :) ------------------------------------- Sanity is madness put to good use. ------------------------------------- I finally figured out the only reason to be alive is to enjoy it.
Received on Tuesday, 6 May 2025 22:55:31 UTC