|
X-He-Spam-Score: -1.7
|
|
Return-Path: <john@saxonica.com>
|
|
Delivered-To: dropbox@plan.io
|
|
Received: from m.launch.gmbh ([127.0.0.1])
|
|
by m.launch.gmbh with LMTP id wEI7K/jYyWHVHQAAJzdhvw
|
|
for <dropbox@plan.io>; Mon, 27 Dec 2021 16:17:12 +0100
|
|
X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on m.launch.gmbh
|
|
X-Spam-Level:
|
|
X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,DMARC_NONE,
|
|
HTML_MESSAGE,HTML_SINGLET_MANY,MIME_QP_LONG_LINE,RCVD_IN_DNSWL_NONE,
|
|
SPF_HELO_NONE,SPF_NONE,SPF_NONE_IGNORE autolearn=no autolearn_force=no
|
|
version=3.4.2
|
|
X-Spam-Report:
|
|
* -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at
|
|
* https://www.dnswl.org/, no trust
|
|
* [72.167.218.223 listed in list.dnswl.org]
|
|
* -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1%
|
|
* [score: 0.0000]
|
|
* 0.1 DMARC_NONE DMARC record not found
|
|
* 2.0 SPF_NONE SPF record not found
|
|
* -2.0 SPF_NONE_IGNORE m.launch.gmbh does not consider absent SPF
|
|
* records
|
|
* 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record
|
|
* 0.0 HTML_MESSAGE BODY: HTML included in message
|
|
* 0.0 MIME_QP_LONG_LINE RAW: Quoted-printable line longer than 76
|
|
* chars
|
|
* 0.1 HTML_SINGLET_MANY Many single-letter HTML format blocks
|
|
X-Spam-Score: -1.7
|
|
Envelope-to: inbox+saxonica+f38e+saxon-js@plan.io
|
|
Authentication-Results: m.launch.gmbh; dmarc=none (p=none dis=none) header.from=saxonica.com
|
|
Authentication-Results: m.launch.gmbh; spf=none smtp.mailfrom=john@saxonica.com
|
|
Authentication-Results: m.launch.gmbh; dkim=none; dkim-atps=neutral
|
|
Received: from p3plwbeout04-02.prod.phx3.secureserver.net (p3plsmtp04-02-2.prod.phx3.secureserver.net [72.167.218.223])
|
|
(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
|
|
(No client certificate requested)
|
|
by m.launch.gmbh (Postfix) with ESMTPS id F34A68096F
|
|
for <inbox+saxonica+f38e+saxon-js@plan.io>; Mon, 27 Dec 2021 16:17:11 +0100 (CET)
|
|
Received: from mailex.mailcore.me ([94.136.40.141])
|
|
by :WBEOUT: with ESMTP
|
|
id 1rkKndb0dvCcy1rkLn4PgJ; Mon, 27 Dec 2021 08:17:09 -0700
|
|
X-CMAE-Analysis: v=2.4 cv=YtbK+6UX c=1 sm=1 tr=0 ts=61c9d8f5
|
|
a=bheWAUFm1xGnSTQFbH9Kqg==:117 a=RMpG09xm24yrcX4E7m5GWw==:17
|
|
a=p2XD31sAdHhaPMeO:21 a=saBqZGb5OYQA:10 a=IOMw9HtfNCkA:10 a=SSmOFEACAAAA:8
|
|
a=2z1OXlWFAAAA:8 a=zKiKQOHbAAAA:8 a=Fl-p5b_N0JTHJrq1Yl0A:9 a=QEXdDO2ut3YA:10
|
|
a=TeuQqM9sAAAA:8 a=_ejgbluhaNNjil0EshkA:9 a=qCoXkYnsvs2dOani:21
|
|
a=_W_S_7VecoQA:10 a=5KWgKTd3SvJaVEFEReuA:22 a=SNRPda0NjyR9MlWdJ_lJ:22
|
|
a=lIhSIjdgpsPn7NjMZNrW:22
|
|
X-SECURESERVER-ACCT: john@saxonica.com
|
|
X-SID: 1rkKndb0dvCcy
|
|
Received: from 62.82.143.202.static.user.ono.com ([62.82.143.202] helo=smtpclient.apple)
|
|
by smtp01.mailcore.me with esmtpa (Exim 4.94.2)
|
|
(envelope-from <john@saxonica.com>)
|
|
id 1n1rkJ-0000U2-Ig
|
|
for inbox+saxonica+f38e+saxon-js@plan.io; Mon, 27 Dec 2021 15:17:08 +0000
|
|
Content-Type: multipart/alternative; boundary=Apple-Mail-1D649F84-762D-4DF7-974E-375BC621F9FA
|
|
Content-Transfer-Encoding: 7bit
|
|
From: John Lumley <john@saxonica.com>
|
|
Mime-Version: 1.0 (1.0)
|
|
Subject: Re: [Saxon-JS - Bug #5190] xsl:iterate problem where the name of an xsl:iterate parameter duplicates the name of a local variable
|
|
Date: Mon, 27 Dec 2021 15:17:05 +0000
|
|
Message-Id: <ABEA920B-0A82-46D9-8555-D9EF259FCE65@saxonica.com>
|
|
References: <redmine.journal-18939.20211227094758.d376cc48d2db0961@plan.io>
|
|
In-Reply-To: <redmine.journal-18939.20211227094758.d376cc48d2db0961@plan.io>
|
|
To: Saxonica Developer Community <inbox+saxonica+f38e+saxon-js@plan.io>
|
|
X-Mailer: iPad Mail (18H107)
|
|
X-Mailcore-Auth: 439400283
|
|
X-Mailcore-Domain: 1881035
|
|
X-123-reg-Authenticated: john@saxonica.com
|
|
X-Originating-IP: 62.82.143.202
|
|
X-CMAE-Envelope: MS4xfEMRIE+IWODq2VrPgk1I5b6h+uesJmyqe3774F6prlZYeX0VoQ7v9GUOMMhMOhquTs3I/IEyQmh7nXogA93637CjhHA3T5wTkR4cpB6GSruNg5O4RVpU
|
|
Gu9vbtL20F7Rm7pzKAlf0yqLgVU9T8Ldrw4R+RcVHOK4hYcV6guS2IAy8ZZ47RJ4ICEyeEy9EJrJKurP5UHaN0V7FL0OvS8U2ho=
|
|
|
|
|
|
--Apple-Mail-1D649F84-762D-4DF7-974E-375BC621F9FA
|
|
Content-Type: text/plain;
|
|
charset=utf-8
|
|
Content-Transfer-Encoding: quoted-printable
|
|
|
|
It never ceases to amaze me the number of =E2=80=98corner cases=E2=80=99 tha=
|
|
t =E2=80=98come out of the woodwork=E2=80=99. When I wrote the XX processing=
|
|
of xsl:iterate it never occurred to me we might have a duplication of local=
|
|
variable and parameter names=E2=80=A6=E2=80=A6..
|
|
|
|
Sent from my iPad
|
|
|
|
> On 27 Dec 2021, at 09:48, Saxonica Developer Community <notifications@plan=
|
|
.io> wrote:
|
|
>=20
|
|
> =EF=BB=BF
|
|
> --- In your reply, please do not write below this line ---
|
|
>=20
|
|
> Issue #5190 has been updated by Michael Kay.
|
|
> Subject changed from xsl:iterate problem where on-completion select=3D"$pa=
|
|
ram" doesn't return the parameter value as part of the xsl:iterate result to=
|
|
xsl:iterate problem where the name of an xsl:iterate parameter duplicates t=
|
|
he name of a local variable
|
|
> Bug #5190: xsl:iterate problem where the name of an xsl:iterate parameter d=
|
|
uplicates the name of a local variable
|
|
> Author: Martin Honnen
|
|
> Status: New
|
|
> Priority: Normal
|
|
> Assignee:
|
|
> Category: XSLT Conformance
|
|
> Sprint/Milestone: Saxon-JS 2.3
|
|
> Applies to JS Branch: 2
|
|
> Fix Committed on JS Branch:
|
|
> Fixed in JS Release:
|
|
> SEF Generated with:
|
|
> Platforms:
|
|
> Company:
|
|
> Contact person:
|
|
> Additional contact persons:
|
|
> I was experimenting with xsl:iterate and found that the code
|
|
>=20
|
|
> <?xml version=3D"1.0" encoding=3D"utf-8"?>
|
|
> <xsl:stylesheet xmlns:xsl=3D"http://www.w3.org/1999/XSL/Transform"
|
|
> version=3D"3.0"
|
|
> xmlns:xs=3D"http://www.w3.org/2001/XMLSchema"
|
|
> exclude-result-prefixes=3D"#all"
|
|
> expand-text=3D"yes">
|
|
>=20
|
|
> <xsl:output method=3D"xml" indent=3D"yes"/>
|
|
>=20
|
|
> <xsl:mode on-no-match=3D"shallow-copy"/>
|
|
>=20
|
|
> <xsl:template match=3D"table">
|
|
> <xsl:copy>
|
|
> <xsl:iterate select=3D"row">
|
|
> <xsl:param name=3D"row" as=3D"element(row)?" select=3D"()"/>
|
|
> <xsl:on-completion select=3D"$row"/>
|
|
> <xsl:variable name=3D"row" as=3D"element(row)">
|
|
> <xsl:apply-templates select=3D"."/>
|
|
> </xsl:variable>
|
|
> <xsl:copy-of select=3D"$row"/>
|
|
> <xsl:next-iteration>
|
|
> <xsl:with-param name=3D"row" select=3D"$row"/>
|
|
> </xsl:next-iteration>
|
|
> </xsl:iterate>
|
|
> </xsl:copy>
|
|
> </xsl:template>
|
|
>=20
|
|
> <xsl:template match=3D"/" name=3D"xsl:initial-template">
|
|
> <xsl:next-match/>
|
|
> <xsl:comment xmlns:saxon=3D"http://saxon.sf.net/">Run with {system-pro=
|
|
perty('xsl:product-name')} {system-property('xsl:product-version')} {system-=
|
|
property('Q{http://saxon.sf.net/}platform')}</xsl:comment>
|
|
> </xsl:template>
|
|
>=20
|
|
> </xsl:stylesheet>
|
|
> when run with xslt3 from Saxon-JS 2.3 against a sample like
|
|
>=20
|
|
> <table>
|
|
> <row>row 1</row>
|
|
> <row>row 2</row>
|
|
> <row>row 3</row>
|
|
> </table>
|
|
> outputs "only" three rows
|
|
>=20
|
|
> <?xml version=3D"1.0" encoding=3D"UTF-8"?>
|
|
> <table>
|
|
> <row>row 1</row>
|
|
> <row>row 2</row>
|
|
> <row>row 3</row>
|
|
> </table>
|
|
> <!--Run with Saxon-JS 2.3 Node.js-->
|
|
> while Saxon HE Java 10.6 outputs the third row two times
|
|
>=20
|
|
> <?xml version=3D"1.0" encoding=3D"UTF-8"?>
|
|
> <table>
|
|
> <row>row 1</row>
|
|
> <row>row 2</row>
|
|
> <row>row 3</row>
|
|
> <row>row 3</row>
|
|
> </table>
|
|
> <!--Run with SAXON HE 10.6 -->
|
|
> as does SaxonCS.
|
|
>=20
|
|
> The spec for xsl:iterate https://www.w3.org/TR/xslt-30/#iterate states tha=
|
|
t "The result of the xsl:iterate instruction is the concatenation of the seq=
|
|
uences that result from the repeated evaluation of the contained sequence co=
|
|
nstructor, followed by the sequence that results from evaluating the xsl:bre=
|
|
ak or xsl:on-completion element if any" so I think Saxon-JS has a bug here, f=
|
|
ailing to output the on-completion result.
|
|
>=20
|
|
> You have received this notification because you have either subscribed to o=
|
|
r are involved in a project on Saxonica Developer Community site. To change y=
|
|
our notification preferences, please click here: https://saxonica.plan.io/my=
|
|
/account?tour=3Dmail_preferences
|
|
>=20
|
|
>=20
|
|
> This notification was cheerfully delivered by
|
|
|
|
--Apple-Mail-1D649F84-762D-4DF7-974E-375BC621F9FA
|
|
Content-Type: text/html;
|
|
charset=utf-8
|
|
Content-Transfer-Encoding: quoted-printable
|
|
|
|
<html><head><meta http-equiv=3D"content-type" content=3D"text/html; charset=3D=
|
|
utf-8"></head><body dir=3D"auto">It never ceases to amaze me the number of =E2=
|
|
=80=98corner cases=E2=80=99 that =E2=80=98come out of the woodwork=E2=80=99.=
|
|
When I wrote the XX processing of xsl:iterate it never occurred to me we mi=
|
|
ght have a duplication of local variable and parameter names=E2=80=A6=E2=80=A6=
|
|
..<br><br><div dir=3D"ltr">Sent from my iPad</div><div dir=3D"ltr"><br><bloc=
|
|
kquote type=3D"cite">On 27 Dec 2021, at 09:48, Saxonica Developer Community &=
|
|
lt;notifications@plan.io> wrote:<br><br></blockquote></div><blockquote ty=
|
|
pe=3D"cite"><div dir=3D"ltr">=EF=BB=BF
|
|
|
|
|
|
<!--[if !mso]><!-- -->
|
|
<link href=3D"https://assets.plan.io/stylesheets/fonts.css" rel=3D"styleshee=
|
|
t" type=3D"text/css">
|
|
<!--<![endif]-->
|
|
|
|
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3DUTF-8"><st=
|
|
yle>a:link{color:#0088b7}
|
|
a:visited{color:#0088b7}
|
|
a:hover{color:#0088b7}
|
|
a:active{color:#0088b7}</style>
|
|
|
|
<table class=3D"planio_mail" width=3D"100%" cellspacing=3D"0" cellpadding=3D=
|
|
"0" style=3D"border-collapse:collapse;margin-bottom:1em;border:1px solid #bb=
|
|
b;padding:4px;border-spacing:0;margin-bottom:0;width:100%;border:none;paddin=
|
|
g:0">
|
|
<tbody><tr><td class=3D"planio_mail header" style=3D"border:1px solid #bbb;p=
|
|
adding:4px;text-align:center;width:100%;font-family:MarketWeb, Helvetica, Ar=
|
|
ial, sans-serif;font-size:0.8em;color:#D7D7D7;border:none;padding:0"><p>--- I=
|
|
n your reply, please do not write below this line ---</p></td></tr>
|
|
<tr><td class=3D"planio_mail" style=3D"border:1px solid #bbb;padding:4px;bor=
|
|
der:none;padding:0">Issue <a href=3D"https://saxonica.plan.io/issues/5190?pn=
|
|
=3D1#change-18939" style=3D"color:#0088b7">#5190</a> has been updated by Mic=
|
|
hael Kay.
|
|
<hr style=3D"width:100%;height:1px;background:#ccc;border:0;margin:1.2em 0">=
|
|
|
|
|
|
<ul class=3D"journal details" style=3D"color:#959595;margin-bottom:1.5em">
|
|
<li><strong>Subject</strong> changed from <i>xsl:iterate problem where on-=
|
|
completion select=3D"$param" doesn't return the parameter value as part of t=
|
|
he xsl:iterate result</i> to <i>xsl:iterate problem where the name of an xsl=
|
|
:iterate parameter duplicates the name of a local variable</i></li>
|
|
</ul>
|
|
|
|
|
|
<hr style=3D"width:100%;height:1px;background:#ccc;border:0;margin:1.2em 0">=
|
|
|
|
<h1 style=3D"font-family:"ProximaNova-Bold", Helvetica, Arial, san=
|
|
s-serif;font-weight:normal;margin:0px;font-size:1.3em;line-height:1.4em"><a h=
|
|
ref=3D"https://saxonica.plan.io/issues/5190?pn=3D1#change-18939" style=3D"co=
|
|
lor:#0088b7;text-decoration:none">Bug #5190: xsl:iterate problem where the n=
|
|
ame of an xsl:iterate parameter duplicates the name of a local variable</a><=
|
|
/h1>
|
|
|
|
<ul class=3D"details" style=3D"color:#959595;margin-bottom:1.5em"><li><stron=
|
|
g>Author: </strong>Martin Honnen</li>
|
|
<li><strong>Status: </strong>New</li>
|
|
<li><strong>Priority: </strong>Normal</li>
|
|
<li><strong>Assignee: </strong></li>
|
|
<li><strong>Category: </strong>XSLT Conformance</li>
|
|
<li><strong>Sprint/Milestone: </strong>Saxon-JS 2.3</li>
|
|
<li><strong>Applies to JS Branch: </strong>2</li>
|
|
<li><strong>Fix Committed on JS Branch: </strong></li>
|
|
<li><strong>Fixed in JS Release: </strong></li>
|
|
<li><strong>SEF Generated with: </strong></li>
|
|
<li><strong>Platforms: </strong></li>
|
|
<li><strong>Company: </strong></li>
|
|
<li><strong>Contact person: </strong></li>
|
|
<li><strong>Additional contact persons: </strong></li></ul>
|
|
|
|
<p>I was experimenting with <code style=3D"font-family:Hack, Consolas, Menlo=
|
|
, "Liberation Mono", Courier, monospace;font-size:85%;background-c=
|
|
olor:#ececec;word-wrap:break-word;border-radius:3px;padding:0.2em;margin:0">=
|
|
xsl:iterate</code> and found that the code</p>
|
|
<pre style=3D"font-family:Hack, Consolas, Menlo, "Liberation Mono"=
|
|
, Courier, monospace;font-size:85%;background-color:#ececec;word-wrap:break-=
|
|
word;margin:1em 0;padding:8px;border:none;border-radius:3px;width:auto;overf=
|
|
low-x:auto;overflow-y:hidden"><code class=3D"xml syntaxhl" style=3D"font-fam=
|
|
ily:Hack, Consolas, Menlo, "Liberation Mono", Courier, monospace;f=
|
|
ont-size:85%;background-color:#ececec;word-wrap:break-word;border-radius:3px=
|
|
;padding:0.2em;margin:0;padding:0"><span class=3D"CodeRay"><span class=3D"pr=
|
|
eprocessor"><?xml version=3D"1.0" encoding=3D"utf-8"?></span>
|
|
<span class=3D"tag"><xsl:stylesheet</span> <span class=3D"attribute-name"=
|
|
>xmlns:xsl</span>=3D<span class=3D"string"><span class=3D"delimiter">"</span=
|
|
><span class=3D"content">http://www.w3.org/1999/XSL/Transform</span><span cl=
|
|
ass=3D"delimiter">"</span></span>
|
|
<span class=3D"attribute-name">version</span>=3D<span class=3D"string"><sp=
|
|
an class=3D"delimiter">"</span><span class=3D"content">3.0</span><span class=
|
|
=3D"delimiter">"</span></span>
|
|
<span class=3D"attribute-name">xmlns:xs</span>=3D<span class=3D"string"><s=
|
|
pan class=3D"delimiter">"</span><span class=3D"content">http://www.w3.org/20=
|
|
01/XMLSchema</span><span class=3D"delimiter">"</span></span>
|
|
<span class=3D"attribute-name">exclude-result-prefixes</span>=3D<span clas=
|
|
s=3D"string"><span class=3D"delimiter">"</span><span class=3D"content">#all<=
|
|
/span><span class=3D"delimiter">"</span></span>
|
|
<span class=3D"attribute-name">expand-text</span>=3D<span class=3D"string"=
|
|
><span class=3D"delimiter">"</span><span class=3D"content">yes</span><span c=
|
|
lass=3D"delimiter">"</span></span><span class=3D"tag">></span>
|
|
|
|
<span class=3D"tag"><xsl:output</span> <span class=3D"attribute-name">m=
|
|
ethod</span>=3D<span class=3D"string"><span class=3D"delimiter">"</span><spa=
|
|
n class=3D"content">xml</span><span class=3D"delimiter">"</span></span> <spa=
|
|
n class=3D"attribute-name">indent</span>=3D<span class=3D"string"><span clas=
|
|
s=3D"delimiter">"</span><span class=3D"content">yes</span><span class=3D"del=
|
|
imiter">"</span></span><span class=3D"tag">/></span>
|
|
|
|
<span class=3D"tag"><xsl:mode</span> <span class=3D"attribute-name">on-=
|
|
no-match</span>=3D<span class=3D"string"><span class=3D"delimiter">"</span><=
|
|
span class=3D"content">shallow-copy</span><span class=3D"delimiter">"</span>=
|
|
</span><span class=3D"tag">/></span>
|
|
|
|
<span class=3D"tag"><xsl:template</span> <span class=3D"attribute-name"=
|
|
>match</span>=3D<span class=3D"string"><span class=3D"delimiter">"</span><sp=
|
|
an class=3D"content">table</span><span class=3D"delimiter">"</span></span><s=
|
|
pan class=3D"tag">></span>
|
|
<span class=3D"tag"><xsl:copy></span>
|
|
<span class=3D"tag"><xsl:iterate</span> <span class=3D"attribute-na=
|
|
me">select</span>=3D<span class=3D"string"><span class=3D"delimiter">"</span=
|
|
><span class=3D"content">row</span><span class=3D"delimiter">"</span></span>=
|
|
<span class=3D"tag">></span>
|
|
<span class=3D"tag"><xsl:param</span> <span class=3D"attribute-na=
|
|
me">name</span>=3D<span class=3D"string"><span class=3D"delimiter">"</span><=
|
|
span class=3D"content">row</span><span class=3D"delimiter">"</span></span> <=
|
|
span class=3D"attribute-name">as</span>=3D<span class=3D"string"><span class=
|
|
=3D"delimiter">"</span><span class=3D"content">element(row)?</span><span cla=
|
|
ss=3D"delimiter">"</span></span> <span class=3D"attribute-name">select</span=
|
|
>=3D<span class=3D"string"><span class=3D"delimiter">"</span><span class=3D"=
|
|
content">()</span><span class=3D"delimiter">"</span></span><span class=3D"ta=
|
|
g">/></span>
|
|
<span class=3D"tag"><xsl:on-completion</span> <span class=3D"attr=
|
|
ibute-name">select</span>=3D<span class=3D"string"><span class=3D"delimiter"=
|
|
>"</span><span class=3D"content">$row</span><span class=3D"delimiter">"</spa=
|
|
n></span><span class=3D"tag">/></span>
|
|
<span class=3D"tag"><xsl:variable</span> <span class=3D"attribute=
|
|
-name">name</span>=3D<span class=3D"string"><span class=3D"delimiter">"</spa=
|
|
n><span class=3D"content">row</span><span class=3D"delimiter">"</span></span=
|
|
> <span class=3D"attribute-name">as</span>=3D<span class=3D"string"><span cl=
|
|
ass=3D"delimiter">"</span><span class=3D"content">element(row)</span><span c=
|
|
lass=3D"delimiter">"</span></span><span class=3D"tag">></span>
|
|
<span class=3D"tag"><xsl:apply-templates</span> <span class=3D"=
|
|
attribute-name">select</span>=3D<span class=3D"string"><span class=3D"delimi=
|
|
ter">"</span><span class=3D"content">.</span><span class=3D"delimiter">"</sp=
|
|
an></span><span class=3D"tag">/></span>
|
|
<span class=3D"tag"></xsl:variable></span>
|
|
<span class=3D"tag"><xsl:copy-of</span> <span class=3D"attribute-=
|
|
name">select</span>=3D<span class=3D"string"><span class=3D"delimiter">"</sp=
|
|
an><span class=3D"content">$row</span><span class=3D"delimiter">"</span></sp=
|
|
an><span class=3D"tag">/></span>
|
|
<span class=3D"tag"><xsl:next-iteration></span>
|
|
<span class=3D"tag"><xsl:with-param</span> <span class=3D"attri=
|
|
bute-name">name</span>=3D<span class=3D"string"><span class=3D"delimiter">"<=
|
|
/span><span class=3D"content">row</span><span class=3D"delimiter">"</span></=
|
|
span> <span class=3D"attribute-name">select</span>=3D<span class=3D"string">=
|
|
<span class=3D"delimiter">"</span><span class=3D"content">$row</span><span c=
|
|
lass=3D"delimiter">"</span></span><span class=3D"tag">/></span>
|
|
<span class=3D"tag"></xsl:next-iteration></span>
|
|
<span class=3D"tag"></xsl:iterate></span>
|
|
<span class=3D"tag"></xsl:copy></span>
|
|
<span class=3D"tag"></xsl:template></span>
|
|
|
|
<span class=3D"tag"><xsl:template</span> <span class=3D"attribute-name"=
|
|
>match</span>=3D<span class=3D"string"><span class=3D"delimiter">"</span><sp=
|
|
an class=3D"content">/</span><span class=3D"delimiter">"</span></span> <span=
|
|
class=3D"attribute-name">name</span>=3D<span class=3D"string"><span class=3D=
|
|
"delimiter">"</span><span class=3D"content">xsl:initial-template</span><span=
|
|
class=3D"delimiter">"</span></span><span class=3D"tag">></span>
|
|
<span class=3D"tag"><xsl:next-match</span><span class=3D"tag">/></=
|
|
span>
|
|
<span class=3D"tag"><xsl:comment</span> <span class=3D"attribute-name=
|
|
">xmlns:saxon</span>=3D<span class=3D"string"><span class=3D"delimiter">"</s=
|
|
pan><span class=3D"content">http://saxon.sf.net/</span><span class=3D"delimi=
|
|
ter">"</span></span><span class=3D"tag">></span>Run with {system-property=
|
|
('xsl:product-name')} {system-property('xsl:product-version')} {system-prope=
|
|
rty('Q{http://saxon.sf.net/}platform')}<span class=3D"tag"></xsl:comment&=
|
|
gt;</span>
|
|
<span class=3D"tag"></xsl:template></span>
|
|
|
|
<span class=3D"tag"></xsl:stylesheet></span>
|
|
</span></code></pre>
|
|
<p>when run with <code style=3D"font-family:Hack, Consolas, Menlo, "Lib=
|
|
eration Mono", Courier, monospace;font-size:85%;background-color:#ecece=
|
|
c;word-wrap:break-word;border-radius:3px;padding:0.2em;margin:0">xslt3</code=
|
|
> from Saxon-JS 2.3 against a sample like</p>
|
|
<pre style=3D"font-family:Hack, Consolas, Menlo, "Liberation Mono"=
|
|
, Courier, monospace;font-size:85%;background-color:#ececec;word-wrap:break-=
|
|
word;margin:1em 0;padding:8px;border:none;border-radius:3px;width:auto;overf=
|
|
low-x:auto;overflow-y:hidden"><code class=3D"xml syntaxhl" style=3D"font-fam=
|
|
ily:Hack, Consolas, Menlo, "Liberation Mono", Courier, monospace;f=
|
|
ont-size:85%;background-color:#ececec;word-wrap:break-word;border-radius:3px=
|
|
;padding:0.2em;margin:0;padding:0"><span class=3D"CodeRay"><span class=3D"ta=
|
|
g"><table></span>
|
|
<span class=3D"tag"><row></span>row 1<span class=3D"tag"></row>=
|
|
;</span>
|
|
<span class=3D"tag"><row></span>row 2<span class=3D"tag"></row>=
|
|
;</span>
|
|
<span class=3D"tag"><row></span>row 3<span class=3D"tag"></row>=
|
|
;</span>
|
|
<span class=3D"tag"></table></span>
|
|
</span></code></pre>
|
|
<p>outputs "only" three rows</p>
|
|
<pre style=3D"font-family:Hack, Consolas, Menlo, "Liberation Mono"=
|
|
, Courier, monospace;font-size:85%;background-color:#ececec;word-wrap:break-=
|
|
word;margin:1em 0;padding:8px;border:none;border-radius:3px;width:auto;overf=
|
|
low-x:auto;overflow-y:hidden"><code class=3D"xml syntaxhl" style=3D"font-fam=
|
|
ily:Hack, Consolas, Menlo, "Liberation Mono", Courier, monospace;f=
|
|
ont-size:85%;background-color:#ececec;word-wrap:break-word;border-radius:3px=
|
|
;padding:0.2em;margin:0;padding:0"><span class=3D"CodeRay"><span class=3D"pr=
|
|
eprocessor"><?xml version=3D"1.0" encoding=3D"UTF-8"?></span>
|
|
<span class=3D"tag"><table></span>
|
|
<span class=3D"tag"><row></span>row 1<span class=3D"tag"></row&g=
|
|
t;</span>
|
|
<span class=3D"tag"><row></span>row 2<span class=3D"tag"></row&g=
|
|
t;</span>
|
|
<span class=3D"tag"><row></span>row 3<span class=3D"tag"></row&g=
|
|
t;</span>
|
|
<span class=3D"tag"></table></span>
|
|
<span class=3D"comment"><!--Run with Saxon-JS 2.3 Node.js--></span>
|
|
</span></code></pre>
|
|
<p>while Saxon HE Java 10.6 outputs the third row two times</p>
|
|
<pre style=3D"font-family:Hack, Consolas, Menlo, "Liberation Mono"=
|
|
, Courier, monospace;font-size:85%;background-color:#ececec;word-wrap:break-=
|
|
word;margin:1em 0;padding:8px;border:none;border-radius:3px;width:auto;overf=
|
|
low-x:auto;overflow-y:hidden"><code class=3D"xml syntaxhl" style=3D"font-fam=
|
|
ily:Hack, Consolas, Menlo, "Liberation Mono", Courier, monospace;f=
|
|
ont-size:85%;background-color:#ececec;word-wrap:break-word;border-radius:3px=
|
|
;padding:0.2em;margin:0;padding:0"><span class=3D"CodeRay"><span class=3D"pr=
|
|
eprocessor"><?xml version=3D"1.0" encoding=3D"UTF-8"?></span>
|
|
<span class=3D"tag"><table></span>
|
|
<span class=3D"tag"><row></span>row 1<span class=3D"tag"></row&g=
|
|
t;</span>
|
|
<span class=3D"tag"><row></span>row 2<span class=3D"tag"></row&g=
|
|
t;</span>
|
|
<span class=3D"tag"><row></span>row 3<span class=3D"tag"></row&g=
|
|
t;</span>
|
|
<span class=3D"tag"><row></span>row 3<span class=3D"tag"></row&g=
|
|
t;</span>
|
|
<span class=3D"tag"></table></span>
|
|
<span class=3D"comment"><!--Run with SAXON HE 10.6 --></span>
|
|
</span></code></pre>
|
|
<p>as does SaxonCS.</p>
|
|
<p>The spec for <code style=3D"font-family:Hack, Consolas, Menlo, "Libe=
|
|
ration Mono", Courier, monospace;font-size:85%;background-color:#ececec=
|
|
;word-wrap:break-word;border-radius:3px;padding:0.2em;margin:0">xsl:iterate<=
|
|
/code> <a href=3D"https://www.w3.org/TR/xslt-30/#iterate" class=3D"external"=
|
|
style=3D"color:#0088b7">https://www.w3.org/TR/xslt-30/#iterate</a> states t=
|
|
hat "The result of the xsl:iterate instruction is the concatenation of the s=
|
|
equences that result from the repeated evaluation of the contained sequence c=
|
|
onstructor, followed by the sequence that results from evaluating the xsl:br=
|
|
eak or xsl:on-completion element if any" so I think Saxon-JS has a bug here,=
|
|
failing to output the <code style=3D"font-family:Hack, Consolas, Menlo, &qu=
|
|
ot;Liberation Mono", Courier, monospace;font-size:85%;background-color:=
|
|
#ececec;word-wrap:break-word;border-radius:3px;padding:0.2em;margin:0">on-co=
|
|
mpletion</code> result.</p>
|
|
|
|
|
|
<div itemscope=3D"itemscope" itemtype=3D"http://schema.org/EmailMessage"><di=
|
|
v itemscope=3D"itemscope" itemprop=3D"action" itemtype=3D"http://schema.org/=
|
|
ViewAction"><link itemprop=3D"url" href=3D"https://saxonica.plan.io/issues/5=
|
|
190?pn=3D1#change-18939"><meta itemprop=3D"name" content=3D"View Issue"></di=
|
|
v><meta itemprop=3D"description" content=3D"View this issue update on Planio=
|
|
"></div>
|
|
|
|
</td></tr>
|
|
<tr><td class=3D"planio_mail footer" style=3D"border:1px solid #bbb;padding:=
|
|
4px;font-size:0.8em;width:100%;border:none;padding:0"><hr style=3D"width:100=
|
|
%;height:1px;background:#ccc;border:0;margin:1.2em 0"><p>You have received t=
|
|
his notification because you have either subscribed to or are involved in a p=
|
|
roject on Saxonica Developer Community site.
|
|
To change your notification preferences, please click here: <a href=3D"https=
|
|
://saxonica.plan.io/my/account?tour=3Dmail_preferences" class=3D"external" s=
|
|
tyle=3D"color:#0088b7">https://saxonica.plan.io/my/account?tour=3Dmail_prefe=
|
|
rences</a></p></td></tr>
|
|
<tr><td class=3D"planio_mail planio_footer" style=3D"border:1px solid #bbb;p=
|
|
adding:4px;text-align:center;width:100%;font-family:MarketWeb, Helvetica, Ar=
|
|
ial, sans-serif;font-size:1.2em;color:#D7D7D7;border:none;padding:0"><br><di=
|
|
v><a href=3D"https://plan.io/" style=3D"color:#0088b7;color:#D7D7D7;text-dec=
|
|
oration:none">This notification was cheerfully delivered by</a></div></td></=
|
|
tr>
|
|
<tr><td class=3D"planio_mail planio_footer_logo" style=3D"border:1px solid #=
|
|
bbb;padding:4px;text-align:center;width:100%;border:none;padding:0"><a href=3D=
|
|
"https://plan.io/" title=3D"Planio" style=3D"color:#0088b7"><img src=3D"http=
|
|
s://assets.plan.io/images/planio_logo_gray_204x50.png" height=3D"25" width=3D=
|
|
"102" border=3D"0" alt=3D"Planio" style=3D"vertical-align:middle;border:none=
|
|
" data-unique-identifier=3D""></a></td></tr>
|
|
</tbody></table>
|
|
|
|
|
|
</div></blockquote></body></html>=
|
|
|
|
--Apple-Mail-1D649F84-762D-4DF7-974E-375BC621F9FA--
|