- From: Dimitre Novatchev <dnovatchev@gmail.com>
- Date: Tue, 27 Sep 2022 20:17:33 -0700
- To: Norm Tovey-Walsh <norm@saxonica.com>
- Cc: public-xslt-40@w3.org
- Message-ID: <CAK4KnZcAdY5Ck26her_iateJ2axzh5-J12H2Eb+72GbTw_CHhw@mail.gmail.com>
On Tue, Sep 27, 2022 at 9:42 AM Norm Tovey-Walsh <norm@saxonica.com> wrote:
>
>
> Draft Minutes
>
> Summary of new and continuing actions [0/7]
>
> * [ ] QT4CG-002-01: NW to incorporate email feedback and produce new
> versions of the process documents.
> * [ ] QT4CG-003-03: NW to tweak the CSS for function signatures to
> avoid
> line breaks on - characters.
> * [ ] QT4CG-002-10: BTW to coordinate some ideas about improving
> diversity in the group
> * [ ] QT4CG-004-01: MK (with DN and RD) to draft a new proposal for
> variadic functions
> * [ ] QT4CG-004-02: DN to make a proposal for deep-equal-safe for
> future
> discussion
> * [ ] QT4CG-004-03: MK to draft a pull request implementing
> fn:intersperse
> * [ ] QT4CG-004-04: DN to open an issue for the inverse of
> fn:intersperse
>
>
The description of the function *fn:deep-equal-safe*() is in a pdf file
that can be found here:
*https://github.com/dnovatchev/FXSL-XSLT2/blob/master/fn-deep-equal-safe.pdf
<https://github.com/dnovatchev/FXSL-XSLT2/blob/master/fn-deep-equal-safe.pdf>*
Note: this document is essentially a compilation from the FO 3.1 of:
*op:same-key* (
https://www.w3.org/TR/xpath-functions-31/#func-same-key), and
*fn:deep-equal *(
https://www.w3.org/TR/xpath-functions-31/#func-deep-equal)
Special care was taken to substitute the fn:deep-equal semantics that
either results in raising an error, or in possible intransitivity or
context-dependency. All such behavior has been substituted with the
corresponding behavior from *op:same-key*, which the 3.1 Spec claims to be:
"*deterministic, context-independent, and ·focus-independent*", etc.
More specifically, to achieve this:
1. No errors are raised, instead *false() *is returned
2. Strings are compared without any dependency on collations
(*fn:codepoint-equal
*is used in such comparisons)
3. Not using *eq *but instead every instance of *xs:double, xs:float and
xs:decimal* is represented exactly as a decimal number provided enough
digits are available both before and after the decimal point.Unlike the *eq
*relation which converts both operands to *xs:double* values, possibly
losing precision in the process, this comparison is transitive
4. *fn:deep-equal* is used in comparing values having a variety of date,
time, year, month day types so that, unlike when using *eq*, no error is
raised when comparing values of different types, but just *fasle()* is
returned. Also, unlike when using the *eq *operator, this comparison has
no dependency on implicit time-zone, meaning no dependency on this aspect
of the dynamic context.
The goal of this function description is to serve as a starting point for
discussion about possible options for fn:deep-equal.
Any comments will be appreciated.
Thanks,
Dimitre
Received on Wednesday, 28 September 2022 03:17:58 UTC