Re: [xsl] XSLT3 deep-equal() question

Subject: Re: [xsl] XSLT3 deep-equal() question
From: "Alan Painter alan.painter@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Fri, 27 Mar 2020 18:24:52 -0000
Sadly, we are not doing schema-validation.

Thanks for the confirmation, Michael.  I can now forge ahead with
confidence.

Martin, to address your question, I will have other templates in the mode,
obviously to "change things" w.r.t. the original document events.  But what
I want to know is if I can rely on deep-equal() to tell if a change has
been made.

BTW, Martin, I find your site to be an excellent tool.  Thanks so much for
that.
(i.e. https://xsltfiddle.liberty-development.net/ )

Thanks very much for the confirmation -- mischief managed -- and have good
confined weekend.

On Fri, Mar 27, 2020 at 6:35 PM Michael Kay mike@xxxxxxxxxxxx <
xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:

> The shallow-copy drops type annotations on element nodes, so there could
> be a false result if the input is typed (i.e. schema-validated). The effect
> of type annotations on deep-equal() is somewhat arcane (I have no
> recollection of how the rules were arrived at).
>
> Apart from that I think you're guaranteed a true result. But I could be
> wrong!
>
> I can't see why having external entities would make any difference.
>
> Michael Kay
> Saxonica
>
> On 27 Mar 2020, at 16:43, Alan Painter alan.painter@xxxxxxxxx <
> xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:
>
> Hello XSLT Community,
>
> I'm Using XSLT3 (Saxon 9.9 HE).
>
> I'm wondering if it's reasonable to expect deep-equal() to always return
> true in the following scenario.  I suspect "yes" but wondering what corner
> cases that I might encounter.
>
> We'll be pushing some data-oriented source documents, with no external
> entities, through templates which are all in a mode defined from
> "shallow-copy" similar to the below.
>
> What I'm wondering under what conditions of source documents that the
> following stylesheet would return "false" rather than "true".  (Again,
> excluding external entities.) I'm hoping that the list of conditions is nil
> or very small.
>
> Thanks for any help.
>
> <xsl:stylesheet
>     xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
>     xmlns:xs="http://www.w3.org/2001/XMLSchema";
>     version="3.0">
>
>   <xsl:mode name="a" on-no-match="shallow-copy"/>
>
>   <xsl:output method="text" />
>
>   <xsl:template match="/" >
>       <xsl:variable name="afterApply">
>           <xsl:apply-templates select="/" mode="a"/>
>       </xsl:variable>
>       <xsl:sequence select="deep-equal(/, $afterApply) => string()" />
>   </xsl:template>
>
> </xsl:stylesheet>
>
> Alan Painter
> Confined in France
>
>
> XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list>
> EasyUnsubscribe <http://lists.mulberrytech.com/unsub/xsl-list/293509> (by
> email)
>
>
> XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list>
> EasyUnsubscribe <http://lists.mulberrytech.com/unsub/xsl-list/552232> (by
> email <>)

Current Thread