Re: [xsl] is xslt "canonicalizable" can it be canonicalized?

Subject: Re: [xsl] is xslt "canonicalizable" can it be canonicalized?
From: "Michael Kay mike@xxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Wed, 8 Feb 2023 08:37:11 -0000
There certainly are constructs in XSLT that can be readily translated to other
constructs statically (or in a pre-processing phase), and Saxon does this a
lot: for example it effectively turns

<xsl:if test="X">INST</xsl:if>

into

<xsl:choose>
  <xsl:when test="X">INST</xsl:when>
</xsl:choose>

Similarly it turns <xsl:text>ABC</xsl:text> into <xsl:value-of
select="'ABC'"/>

But I don't know of any attempt to define a "canonical subset" of the language
that excludes everything that can be considered "syntactic sugar".

Michael Kay
Saxonica

On 8 Feb 2023, at 08:05, BR Chrisman
brchrisman@xxxxxxxxx<mailto:brchrisman@xxxxxxxxx>
<xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx<mailto:xsl-list-service@xxxxxxxxxxxx
rytech.com>> wrote:



On Tue, Feb 7, 2023 at 9:06 PM Liam R. E. Quin
liam@xxxxxxxxxxxxxxxx<mailto:liam@xxxxxxxxxxxxxxxx>
<xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx<mailto:xsl-list-service@xxxxxxxxxxxx
rytech.com>> wrote:
On Wed, 2023-02-08 at 01:38 +0000, BR Chrisman
brchrisman@xxxxxxxxx<mailto:brchrisman@xxxxxxxxx>
wrote:
> transform.

There are differences indeed, in the handling of namespaces between
these two examples.

I think with XSLT 3 at least, you can turn literal element constructors
into element constructors (the xsl:element form), with careful use of
exclude-result-prefixes.

But not the other way round - consider
   <xsl:element name="{$name}">
for example. You can't write
   <{$name}>
to make an element, as that's not well-formed XML syntax.

So likely you're stuck handling all of XSLT. But, why are you
processing XSLT with XSLT in this way? Sounds interesting, tell us
more! :)


I've had an interest in this before, but this particular application is a
bunch of fairly straightforward xslt (identity transform based pipelines) and
various pieces are introducing attributes into certain elements.  I used an
xpath to find most of the xsl:attribute elements creating those attributes,
but noted that I also needed to find the <foo bar="baz"/> output elements that
include the bar attribute in that form.  That's not too hard, but if there was
a canonicalization already out there, I'd use it.
Yes, that would certainly fail or be extremely difficult for attributes named
with the attribute-value-template style and variables/expressions in a highly
normalized template.  I have some of that in various stylesheets, but not in
the points of interest.

liam

--
Liam Quin, https://www.delightfulcomputing.com/
Available for XML/Document/Information Architecture/XSLT/
XSL/XQuery/Web/Text Processing/A11Y training, work & consulting.
Barefoot Web-slave, antique illustrations:
http://www.fromoldbooks.org<http://www.fromoldbooks.org/>


XSL-List info and archive<http://www.mulberrytech.com/xsl/xsl-list>
EasyUnsubscribe<http://lists.mulberrytech.com/unsub/xsl-list/293509> (by
email<>)

Current Thread