Re: xml-to-json() function under SaxonJS

Michael Kay <mike-JkSD5nQpfvpWk0Htik3J/[email protected]> Thu, 23 Sep 2021 12:42:12 +0100
Newsgroups gmane.text.xml.saxon.help
Message-ID <[email protected]>
--===============5034785778194740282==
Content-Type: multipart/alternative;
	boundary="Apple-Mail=_2D4A10FB-2637-4EE5-ADCF-1EB645F5B9FA"


--Apple-Mail=_2D4A10FB-2637-4EE5-ADCF-1EB645F5B9FA
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=us-ascii

I guess what you're missing is that when talking about conformance, =
"feature" is a technical term referring to one of the conformance =
features in the spec. The serialize() function is part of the =
Serialization feature, the xml-to-json() function is part of Basic =
conformance.

Michael Kay
Saxonica

> On 23 Sep 2021, at 01:09, Wendell Piez <[email protected]> wrote:
>=20
> Hi Mike,
>=20
> That's what I'm looking at exactly. I see "several of the optional =
features" and I see "and not others".
>=20
> There appears to be no mention of serialize() specifically, but then =
no mention of xml-to-json() either. :-)
>=20
> If what I should see is indenting (when the serialization option says =
to indent), I will look again more closely at the code to see what could =
be wrong. (That's exactly what I am trying to confirm.)
>=20
> Thanks! Wendell
>=20
>=20
> On Wed, Sep 22, 2021 at 6:10 PM Michael Kay <mike-JkSD5nQpfvpWk0Htik3J/[email protected] =
<mailto:mike-JkSD5nQpfvpWk0Htik3J/[email protected]>> wrote:
> What page are you looking at exactly? At
>=20
> =
https://www.saxonica.com/saxon-js/documentation/index.html#!conformance/xs=
lt30 =
<https://www.saxonica.com/saxon-js/documentation/index.html#!conformance/x=
slt30>
>=20
> I read
>=20
> Saxon-JS implements XSLT 3.0 Basic Level, and several of the optional =
features that are not included in the W3C-defined Basic level - =
specifically the XSLT 1.0 backwards compatibility, Dynamic Evaluation, =
XPath 3.1, Serialization, and Higher-Order Functions features, with =
minor differences noted below.
>=20
> Michael Kay
> Saxonica
>=20
>=20
>> On 22 Sep 2021, at 18:11, Wendell Piez <[email protected] =
<mailto:[email protected]>> wrote:
>>=20
>> Hi again,
>>=20
>> Today I write just to double check the same question on the =
serialize() function, and where at the top of the page at =
/conformance/xslt30 it says it does not implement the serialization =
spec, I should take that to mean I am my own also with formatting =
serialized XML on the page?
>>=20
>> I can live with this (indeed it gives me some control I would like -- =
I try to look at the bright side of things) but again I wanted to make =
sure I am not missing anything.
>>=20
>> Thanks,
>> Wendell
>>=20
>>=20
>>=20
>>=20
>> On Tue, Sep 21, 2021 at 3:02 PM Wendell Piez <[email protected] =
<mailto:[email protected]>> wrote:
>> Hello Mike and Martin,
>>=20
>> Thank you for confirming this. It's the escaping even more than the =
indentation that worries me.
>>=20
>> In my experience, there is no set of whitespace rules that everyone =
will agree is ideal or even very nice. But it is also not so difficult =
to do better than the brick.
>>=20
>> I will definitely look at that XSLT (in the spec). I could perhaps =
use Javascript .stringify except I would like to inject the raw JSON for =
display into the page, which is so easy to do in SaxonJS. Indeed, in =
this case I am afraid the 'right way' is to do it in XSLT. A variant =
could produce markup for syntax coloring.
>>=20
>> Thanks, Wendell
>>=20
>>=20
>> On Tue, Sep 21, 2021 at 12:02 PM Michael Kay <[email protected] =
<mailto:[email protected]>> wrote:
>> Confirmed, we haven't implemented indent:yes in the JSON serializer =
in Saxon-JS.
>>=20
>> Doing a nice indentation algorithm is actually quite tricky, and we =
like to keep the code small, but I guess doing a simple-minded =
indentation might be better than none at all. The main complication is =
deciding when it makes sense to put things on the same line, e.g.=20
>>=20
>> { "name": ["Michael", "Kay"],
>>   "company": "Saxonica"
>> }
>>=20
>> It would be tempting to just generate the JSON and then call parse =3D>=
 stringify, but that would almost certainly apply escaping rules that =
make the result non-conformant.
>>=20
>> Michael Kay
>> Saxonica
>>=20
>>> On 21 Sep 2021, at 15:12, Wendell Piez <[email protected] =
<mailto:[email protected]>> wrote:
>>>=20
>>> Hello Saxonians,
>>>=20
>>> Today I am a bit surprised to find I get no luck, using SaxonJS in =
the browser, when trying to serialize JSON as anything but a data brick, =
when produced by the function xml-to-json(). It is supposed to accept =
$options and 'indent' is the option available, but unless I am missing =
something, map{ 'indent':true() } is not operative.
>>>=20
>>> The documentation says that the function json-to-xml() does not =
support $options but xml-to-json() is not mentioned. Can I confirm that =
it is (not) user error that is preventing me from getting the JSON =
indented, instead of prettified?
>>>=20
>>> If this is not supported what is the recommended workaround: perhaps =
a JSON serializer is not so hard to write? (I have not thought about it =
much.)
>>>=20
>>> Thanks for any insight or advice,
>>> Wendell
>>>=20
>>> --=20
>>> ...Wendell Piez... ...wendell -at- nist -dot- gov...
>>> ...wendellpiez.com <http://wendellpiez.com/>... =
...pellucidliterature.org <http://pellucidliterature.org/>... =
...pausepress.org <http://pausepress.org/>...
>>> ...github.com/wendellpiez. <http://github.com/wendellpiez.>.. =
...gitlab.coko.foundation/wendell...=20
>>> _______________________________________________
>>> saxon-help mailing list archived at http://saxon.markmail.org/ =
<http://saxon.markmail.org/>
>>> [email protected] =
<mailto:[email protected]>
>>> https://lists.sourceforge.net/lists/listinfo/saxon-help =
<https://lists.sourceforge.net/lists/listinfo/saxon-help>
>> _______________________________________________
>> saxon-help mailing list archived at http://saxon.markmail.org/ =
<http://saxon.markmail.org/>
>> [email protected] =
<mailto:[email protected]>
>> https://lists.sourceforge.net/lists/listinfo/saxon-help =
<https://lists.sourceforge.net/lists/listinfo/saxon-help>
>>=20
>> --=20
>> ...Wendell Piez... ...wendell -at- nist -dot- gov...
>> ...wendellpiez.com <http://wendellpiez.com/>... =
...pellucidliterature.org <http://pellucidliterature.org/>... =
...pausepress.org <http://pausepress.org/>...
>> ...github.com/wendellpiez. <http://github.com/wendellpiez.>.. =
...gitlab.coko.foundation/wendell...=20
>>=20
>>=20
>> --=20
>> ...Wendell Piez... ...wendell -at- nist -dot- gov...
>> ...wendellpiez.com <http://wendellpiez.com/>... =
...pellucidliterature.org <http://pellucidliterature.org/>... =
...pausepress.org <http://pausepress.org/>...
>> ...github.com/wendellpiez. <http://github.com/wendellpiez.>.. =
...gitlab.coko.foundation/wendell...=20
>> _______________________________________________
>> saxon-help mailing list archived at http://saxon.markmail.org/ =
<http://saxon.markmail.org/>
>> [email protected] =
<mailto:[email protected]>
>> https://lists.sourceforge.net/lists/listinfo/saxon-help =
<https://lists.sourceforge.net/lists/listinfo/saxon-help>
> _______________________________________________
> saxon-help mailing list archived at http://saxon.markmail.org/ =
<http://saxon.markmail.org/>
> [email protected] =
<mailto:[email protected]>
> https://lists.sourceforge.net/lists/listinfo/saxon-help =
<https://lists.sourceforge.net/lists/listinfo/saxon-help>
>=20
> --=20
> ...Wendell Piez... ...wendell -at- nist -dot- gov...
> ...wendellpiez.com... ...pellucidliterature.org... =
...pausepress.org...
> ...github.com/wendellpiez. <http://github.com/wendellpiez.>.. =
...gitlab.coko.foundation/wendell...
> _______________________________________________
> saxon-help mailing list archived at http://saxon.markmail.org/
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/saxon-help


--Apple-Mail=_2D4A10FB-2637-4EE5-ADCF-1EB645F5B9FA
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=us-ascii

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html; =
charset=3Dus-ascii"></head><body style=3D"word-wrap: break-word; =
-webkit-nbsp-mode: space; line-break: after-white-space;" class=3D"">I =
guess what you're missing is that when talking about conformance, =
"feature" is a technical term referring to one of the conformance =
features in the spec. The serialize() function is part of the =
Serialization feature, the xml-to-json() function is part of Basic =
conformance.<div class=3D""><br class=3D""></div><div class=3D"">Michael =
Kay</div><div class=3D"">Saxonica<br class=3D""><div><br =
class=3D""><blockquote type=3D"cite" class=3D""><div class=3D"">On 23 =
Sep 2021, at 01:09, Wendell Piez &lt;<a =
href=3D"mailto:[email protected]" =
class=3D"">[email protected]</a>&gt; wrote:</div><br =
class=3D"Apple-interchange-newline"><div class=3D""><div dir=3D"ltr" =
class=3D"">Hi Mike,<div class=3D""><br class=3D""></div><div =
class=3D"">That's what I'm looking at exactly. I see "several of the =
optional features" and I see "and not others".<div class=3D""><br =
class=3D""></div><div class=3D"">There appears to be no mention of =
serialize() specifically, but then no mention of xml-to-json() either. =
:-)</div><div class=3D""><br class=3D""></div><div class=3D"">If what I =
should see is indenting (when the serialization option says to indent), =
I will look again more closely at the code to see what could be wrong. =
(That's exactly what I am trying to confirm.)</div><div class=3D""><br =
class=3D""></div><div class=3D"">Thanks! Wendell</div></div><div =
class=3D""><br class=3D""></div></div><br class=3D""><div =
class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Wed, Sep =
22, 2021 at 6:10 PM Michael Kay &lt;<a href=3D"mailto:mike-JkSD5nQpfvpWk0Htik3J/[email protected]" =
target=3D"_blank" class=3D"">mike-JkSD5nQpfvpWk0Htik3J/[email protected]</a>&gt; wrote:<br =
class=3D""></div><blockquote class=3D"gmail_quote" style=3D"margin:0px =
0px 0px 0.8ex;border-left:1px solid =
rgb(204,204,204);padding-left:1ex"><div class=3D"">What page are you =
looking at exactly? At<div class=3D""><br class=3D""></div><div =
class=3D""><a =
href=3D"https://www.saxonica.com/saxon-js/documentation/index.html#!confor=
mance/xslt30" target=3D"_blank" =
class=3D"">https://www.saxonica.com/saxon-js/documentation/index.html#!con=
formance/xslt30</a></div><div class=3D""><br class=3D""></div><div =
class=3D"">I read</div><div class=3D""><br class=3D""></div><div =
class=3D""><span style=3D"color:rgb(61,91,150);font-family:&quot;Lucida =
Sans Unicode&quot;,&quot;Lucida =
Grande&quot;,sans-serif;font-size:13.3333px;background-color:rgb(255,255,2=
55)" class=3D"">Saxon-JS implements XSLT 3.0&nbsp;</span><b =
style=3D"margin:0px;padding:0px;border:0px;font-family:&quot;Lucida Sans =
Unicode&quot;,&quot;Lucida =
Grande&quot;,sans-serif;font-size:13.3333px;font-stretch:inherit;line-heig=
ht:inherit;vertical-align:baseline;color:rgb(61,91,150)" =
class=3D"">Basic</b><span =
style=3D"color:rgb(61,91,150);font-family:&quot;Lucida Sans =
Unicode&quot;,&quot;Lucida =
Grande&quot;,sans-serif;font-size:13.3333px;background-color:rgb(255,255,2=
55)" class=3D"">&nbsp;Level, and several of the optional features that =
are not included in the W3C-defined Basic level - specifically =
the&nbsp;</span><b =
style=3D"margin:0px;padding:0px;border:0px;font-family:&quot;Lucida Sans =
Unicode&quot;,&quot;Lucida =
Grande&quot;,sans-serif;font-size:13.3333px;font-stretch:inherit;line-heig=
ht:inherit;vertical-align:baseline;color:rgb(61,91,150)" class=3D"">XSLT =
1.0 backwards compatibility</b><span =
style=3D"color:rgb(61,91,150);font-family:&quot;Lucida Sans =
Unicode&quot;,&quot;Lucida =
Grande&quot;,sans-serif;font-size:13.3333px;background-color:rgb(255,255,2=
55)" class=3D"">,&nbsp;</span><b =
style=3D"margin:0px;padding:0px;border:0px;font-family:&quot;Lucida Sans =
Unicode&quot;,&quot;Lucida =
Grande&quot;,sans-serif;font-size:13.3333px;font-stretch:inherit;line-heig=
ht:inherit;vertical-align:baseline;color:rgb(61,91,150)" =
class=3D"">Dynamic Evaluation</b><span =
style=3D"color:rgb(61,91,150);font-family:&quot;Lucida Sans =
Unicode&quot;,&quot;Lucida =
Grande&quot;,sans-serif;font-size:13.3333px;background-color:rgb(255,255,2=
55)" class=3D"">,&nbsp;</span><b =
style=3D"margin:0px;padding:0px;border:0px;font-family:&quot;Lucida Sans =
Unicode&quot;,&quot;Lucida =
Grande&quot;,sans-serif;font-size:13.3333px;font-stretch:inherit;line-heig=
ht:inherit;vertical-align:baseline;color:rgb(61,91,150)" class=3D"">XPath =
3.1</b><span style=3D"color:rgb(61,91,150);font-family:&quot;Lucida Sans =
Unicode&quot;,&quot;Lucida =
Grande&quot;,sans-serif;font-size:13.3333px;background-color:rgb(255,255,2=
55)" class=3D"">,&nbsp;</span><b =
style=3D"margin:0px;padding:0px;border:0px;font-family:&quot;Lucida Sans =
Unicode&quot;,&quot;Lucida =
Grande&quot;,sans-serif;font-size:13.3333px;font-stretch:inherit;line-heig=
ht:inherit;vertical-align:baseline;color:rgb(61,91,150)" =
class=3D"">Serialization</b><span =
style=3D"color:rgb(61,91,150);font-family:&quot;Lucida Sans =
Unicode&quot;,&quot;Lucida =
Grande&quot;,sans-serif;font-size:13.3333px;background-color:rgb(255,255,2=
55)" class=3D"">, and&nbsp;</span><b =
style=3D"margin:0px;padding:0px;border:0px;font-family:&quot;Lucida Sans =
Unicode&quot;,&quot;Lucida =
Grande&quot;,sans-serif;font-size:13.3333px;font-stretch:inherit;line-heig=
ht:inherit;vertical-align:baseline;color:rgb(61,91,150)" =
class=3D"">Higher-Order Functions</b><span =
style=3D"color:rgb(61,91,150);font-family:&quot;Lucida Sans =
Unicode&quot;,&quot;Lucida =
Grande&quot;,sans-serif;font-size:13.3333px;background-color:rgb(255,255,2=
55)" class=3D"">&nbsp;features, with minor differences noted =
below.</span></div><div class=3D""><font color=3D"#3d5b96" face=3D"Lucida =
Sans Unicode, Lucida Grande, sans-serif" size=3D"2" class=3D""><span =
style=3D"background-color:rgb(255,255,255)" class=3D""><br =
class=3D""></span></font></div><div class=3D""><font color=3D"#3d5b96" =
face=3D"Lucida Sans Unicode, Lucida Grande, sans-serif" size=3D"2" =
class=3D""><span style=3D"background-color:rgb(255,255,255)" =
class=3D"">Michael Kay</span></font></div><div class=3D""><font =
color=3D"#3d5b96" face=3D"Lucida Sans Unicode, Lucida Grande, =
sans-serif" size=3D"2" class=3D""><span =
style=3D"background-color:rgb(255,255,255)" =
class=3D"">Saxonica</span></font></div><div class=3D""><font =
color=3D"#3d5b96" face=3D"Lucida Sans Unicode, Lucida Grande, =
sans-serif" size=3D"2" class=3D""><span =
style=3D"background-color:rgb(255,255,255)" class=3D""><br =
class=3D""></span></font><div class=3D""><br class=3D""><blockquote =
type=3D"cite" class=3D""><div class=3D"">On 22 Sep 2021, at 18:11, =
Wendell Piez &lt;<a href=3D"mailto:[email protected]" =
target=3D"_blank" class=3D"">[email protected]</a>&gt; =
wrote:</div><br class=3D""><div class=3D""><div dir=3D"ltr" =
style=3D"font-family:Helvetica;font-size:13px;font-style:normal;font-varia=
nt-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;t=
ext-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;tex=
t-decoration:none" class=3D"">Hi again,<div class=3D""><br =
class=3D""></div><div class=3D"">Today I write just to double check the =
same question on the serialize() function, and where at the top of the =
page at /conformance/xslt30 it says it does not implement the =
serialization spec, I should take that to mean I am my own also with =
formatting serialized XML on the page?</div><div class=3D""><br =
class=3D""></div><div class=3D"">I can live with this (indeed it gives =
me some control I would like -- I try to look at the bright side of =
things) but again I wanted to make sure I am not missing =
anything.</div><div class=3D""><br class=3D""></div><div =
class=3D"">Thanks,</div><div class=3D"">Wendell</div><div class=3D""><br =
class=3D""></div><div class=3D""><br class=3D""></div><div class=3D""><br =
class=3D""></div></div><br =
style=3D"font-family:Helvetica;font-size:13px;font-style:normal;font-varia=
nt-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;t=
ext-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;tex=
t-decoration:none" class=3D""><div class=3D"gmail_quote" =
style=3D"font-family:Helvetica;font-size:13px;font-style:normal;font-varia=
nt-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;t=
ext-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;tex=
t-decoration:none"><div dir=3D"ltr" class=3D"gmail_attr">On Tue, Sep 21, =
2021 at 3:02 PM Wendell Piez &lt;<a href=3D"mailto:[email protected]"=
 target=3D"_blank" class=3D"">[email protected]</a>&gt; wrote:<br =
class=3D""></div><blockquote class=3D"gmail_quote" style=3D"margin:0px =
0px 0px 0.8ex;border-left:1px solid =
rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr" class=3D"">Hello =
Mike and Martin,<div class=3D""><br class=3D""></div><div class=3D"">Thank=
 you for confirming this. It's the escaping even more than the =
indentation that worries me.</div><div class=3D""><br =
class=3D""></div><div class=3D"">In my experience, there is no set of =
whitespace rules that everyone will agree is ideal or even very nice. =
But it is also not so difficult to&nbsp;do better than the =
brick.</div><div class=3D""><br class=3D""></div><div class=3D"">I will =
definitely look at that XSLT (in the spec). I could perhaps use =
Javascript .stringify except I would like to inject the raw JSON for =
display into the page, which is so easy to do in SaxonJS. Indeed, in =
this case I am afraid the 'right way' is to do it in XSLT. A variant =
could produce markup for syntax coloring.</div><div class=3D""><br =
class=3D""></div><div class=3D"">Thanks, Wendell</div><div class=3D""><br =
class=3D""></div></div><br class=3D""><div class=3D"gmail_quote"><div =
dir=3D"ltr" class=3D"gmail_attr">On Tue, Sep 21, 2021 at 12:02 PM =
Michael Kay &lt;<a href=3D"mailto:[email protected]" =
target=3D"_blank" class=3D"">[email protected]</a>&gt; wrote:<br =
class=3D""></div><blockquote class=3D"gmail_quote" style=3D"margin:0px =
0px 0px 0.8ex;border-left:1px solid =
rgb(204,204,204);padding-left:1ex"><div class=3D"">Confirmed, we haven't =
implemented indent:yes in the JSON serializer in Saxon-JS.<div =
class=3D""><br class=3D""></div><div class=3D"">Doing a nice indentation =
algorithm is actually quite tricky, and we like to keep the code small, =
but I guess doing a simple-minded indentation might be better than none =
at all. The main complication is deciding when it makes sense to put =
things on the same line, e.g.&nbsp;</div><div class=3D""><br =
class=3D""></div><div class=3D"">{ "name": ["Michael", "Kay"],</div><div =
class=3D"">&nbsp;<span class=3D"">&nbsp;</span>"company": =
"Saxonica"</div><div class=3D"">}</div><div class=3D""><br =
class=3D""></div><div class=3D"">It would be tempting to just generate =
the JSON and then call parse =3D&gt; stringify, but that would almost =
certainly apply escaping rules that make the result =
non-conformant.</div><div class=3D""><br class=3D""></div><div =
class=3D"">Michael Kay</div><div class=3D"">Saxonica</div><div =
class=3D""><div class=3D""><br class=3D""><blockquote type=3D"cite" =
class=3D""><div class=3D"">On 21 Sep 2021, at 15:12, Wendell Piez &lt;<a =
href=3D"mailto:[email protected]" target=3D"_blank" =
class=3D"">[email protected]</a>&gt; wrote:</div><br class=3D""><div =
class=3D""><div dir=3D"ltr" class=3D"">Hello Saxonians,<div class=3D""><br=
 class=3D""></div><div class=3D"">Today I am a bit surprised to find I =
get no luck, using SaxonJS in the browser, when trying to serialize JSON =
as anything but a data brick, when produced by the function =
xml-to-json(). It is supposed to accept $options and 'indent' is the =
option available, but unless I am missing something, map{ =
'indent':true() } is not operative.</div><div class=3D""><br =
class=3D""></div><div class=3D"">The documentation says that the =
function json-to-xml() does not support $options but xml-to-json() is =
not mentioned. Can I confirm that it is (not) user error that is =
preventing me from getting the JSON indented, instead of =
prettified?</div><div class=3D""><br class=3D""></div><div class=3D"">If =
this is not supported what is the recommended workaround: perhaps a JSON =
serializer is not so hard to write? (I have not thought about it =
much.)</div><div class=3D""><br class=3D""></div><div class=3D"">Thanks =
for any insight or advice,</div><div class=3D"">Wendell<br clear=3D"all" =
class=3D""><div class=3D""><br class=3D""></div>--<span =
class=3D"">&nbsp;</span><br class=3D""><div dir=3D"ltr" =
class=3D"">...Wendell Piez... ...wendell -at- nist -dot- gov...<br =
class=3D"">...<a href=3D"http://wendellpiez.com/" target=3D"_blank" =
class=3D"">wendellpiez.com</a>... ...<a =
href=3D"http://pellucidliterature.org/" target=3D"_blank" =
class=3D"">pellucidliterature.org</a>... ...<a =
href=3D"http://pausepress.org/" target=3D"_blank" =
class=3D"">pausepress.org</a>...<br class=3D"">...<a =
href=3D"http://github.com/wendellpiez." target=3D"_blank" =
class=3D"">github.com/wendellpiez.</a>.. =
...gitlab.coko.foundation/wendell...<span =
class=3D"">&nbsp;</span></div></div></div>________________________________=
_______________<br class=3D"">saxon-help mailing list archived at<span =
class=3D"">&nbsp;</span><a href=3D"http://saxon.markmail.org/" =
target=3D"_blank" class=3D"">http://saxon.markmail.org/</a><br =
class=3D""><a href=3D"mailto:[email protected]" =
target=3D"_blank" class=3D"">[email protected]</a><br =
class=3D""><a =
href=3D"https://lists.sourceforge.net/lists/listinfo/saxon-help" =
target=3D"_blank" =
class=3D"">https://lists.sourceforge.net/lists/listinfo/saxon-help</a></di=
v></blockquote></div><br =
class=3D""></div></div>_______________________________________________<br =
class=3D"">saxon-help mailing list archived at<span =
class=3D"">&nbsp;</span><a href=3D"http://saxon.markmail.org/" =
rel=3D"noreferrer" target=3D"_blank" =
class=3D"">http://saxon.markmail.org/</a><br class=3D""><a =
href=3D"mailto:[email protected]" target=3D"_blank" =
class=3D"">[email protected]</a><br class=3D""><a =
href=3D"https://lists.sourceforge.net/lists/listinfo/saxon-help" =
rel=3D"noreferrer" target=3D"_blank" =
class=3D"">https://lists.sourceforge.net/lists/listinfo/saxon-help</a></bl=
ockquote></div><br clear=3D"all" class=3D""><div class=3D""><br =
class=3D""></div>--<span class=3D"">&nbsp;</span><br class=3D""><div =
dir=3D"ltr" class=3D"">...Wendell Piez... ...wendell -at- nist -dot- =
gov...<br class=3D"">...<a href=3D"http://wendellpiez.com/" =
target=3D"_blank" class=3D"">wendellpiez.com</a>... ...<a =
href=3D"http://pellucidliterature.org/" target=3D"_blank" =
class=3D"">pellucidliterature.org</a>... ...<a =
href=3D"http://pausepress.org/" target=3D"_blank" =
class=3D"">pausepress.org</a>...<br class=3D"">...<a =
href=3D"http://github.com/wendellpiez." target=3D"_blank" =
class=3D"">github.com/wendellpiez.</a>.. =
...gitlab.coko.foundation/wendell...<span =
class=3D"">&nbsp;</span></div></blockquote></div><br clear=3D"all" =
style=3D"font-family:Helvetica;font-size:13px;font-style:normal;font-varia=
nt-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;t=
ext-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;tex=
t-decoration:none" class=3D""><div =
style=3D"font-family:Helvetica;font-size:13px;font-style:normal;font-varia=
nt-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;t=
ext-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;tex=
t-decoration:none" class=3D""><br class=3D""></div><span =
style=3D"font-family:Helvetica;font-size:13px;font-style:normal;font-varia=
nt-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;t=
ext-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;tex=
t-decoration:none;float:none;display:inline" class=3D"">--<span =
class=3D"">&nbsp;</span></span><br =
style=3D"font-family:Helvetica;font-size:13px;font-style:normal;font-varia=
nt-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;t=
ext-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;tex=
t-decoration:none" class=3D""><div dir=3D"ltr" =
style=3D"font-family:Helvetica;font-size:13px;font-style:normal;font-varia=
nt-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;t=
ext-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;tex=
t-decoration:none" class=3D"">...Wendell Piez... ...wendell -at- nist =
-dot- gov...<br class=3D"">...<a href=3D"http://wendellpiez.com/" =
target=3D"_blank" class=3D"">wendellpiez.com</a>... ...<a =
href=3D"http://pellucidliterature.org/" target=3D"_blank" =
class=3D"">pellucidliterature.org</a>... ...<a =
href=3D"http://pausepress.org/" target=3D"_blank" =
class=3D"">pausepress.org</a>...<br class=3D"">...<a =
href=3D"http://github.com/wendellpiez." target=3D"_blank" =
class=3D"">github.com/wendellpiez.</a>.. =
...gitlab.coko.foundation/wendell...<span =
class=3D"">&nbsp;</span></div><span =
style=3D"font-family:Helvetica;font-size:13px;font-style:normal;font-varia=
nt-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;t=
ext-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;tex=
t-decoration:none;float:none;display:inline" =
class=3D"">_______________________________________________</span><br =
style=3D"font-family:Helvetica;font-size:13px;font-style:normal;font-varia=
nt-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;t=
ext-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;tex=
t-decoration:none" class=3D""><span =
style=3D"font-family:Helvetica;font-size:13px;font-style:normal;font-varia=
nt-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;t=
ext-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;tex=
t-decoration:none;float:none;display:inline" class=3D"">saxon-help =
mailing list archived at<span class=3D"">&nbsp;</span></span><a =
href=3D"http://saxon.markmail.org/" =
style=3D"font-family:Helvetica;font-size:13px;font-style:normal;font-varia=
nt-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;t=
ext-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" =
target=3D"_blank" class=3D"">http://saxon.markmail.org/</a><br =
style=3D"font-family:Helvetica;font-size:13px;font-style:normal;font-varia=
nt-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;t=
ext-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;tex=
t-decoration:none" class=3D""><a =
href=3D"mailto:[email protected]" =
style=3D"font-family:Helvetica;font-size:13px;font-style:normal;font-varia=
nt-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;t=
ext-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" =
target=3D"_blank" class=3D"">[email protected]</a><br =
style=3D"font-family:Helvetica;font-size:13px;font-style:normal;font-varia=
nt-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;t=
ext-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;tex=
t-decoration:none" class=3D""><a =
href=3D"https://lists.sourceforge.net/lists/listinfo/saxon-help" =
style=3D"font-family:Helvetica;font-size:13px;font-style:normal;font-varia=
nt-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;t=
ext-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" =
target=3D"_blank" =
class=3D"">https://lists.sourceforge.net/lists/listinfo/saxon-help</a><spa=
n =
style=3D"font-family:Helvetica;font-size:13px;font-style:normal;font-varia=
nt-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;t=
ext-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;tex=
t-decoration:none;float:none;display:inline" =
class=3D""></span></div></blockquote></div><br =
class=3D""></div></div>_______________________________________________<br =
class=3D"">
saxon-help mailing list archived at <a href=3D"http://saxon.markmail.org/"=
 rel=3D"noreferrer" target=3D"_blank" =
class=3D"">http://saxon.markmail.org/</a><br class=3D"">
<a href=3D"mailto:[email protected]" target=3D"_blank" =
class=3D"">[email protected]</a><br class=3D"">
<a href=3D"https://lists.sourceforge.net/lists/listinfo/saxon-help" =
rel=3D"noreferrer" target=3D"_blank" =
class=3D"">https://lists.sourceforge.net/lists/listinfo/saxon-help</a> =
</blockquote></div><br clear=3D"all" class=3D""><div class=3D""><br =
class=3D""></div>-- <br class=3D""><div dir=3D"ltr" class=3D"">...Wendell =
Piez... ...wendell -at- nist -dot- gov...<br class=3D"">...<a =
href=3D"http://wendellpiez.com" class=3D"">wendellpiez.com</a>... ...<a =
href=3D"http://pellucidliterature.org" =
class=3D"">pellucidliterature.org</a>... ...<a =
href=3D"http://pausepress.org" class=3D"">pausepress.org</a>...<br =
class=3D"">...<a href=3D"http://github.com/wendellpiez." target=3D"_blank"=
 class=3D"">github.com/wendellpiez.</a>.. =
...gitlab.coko.foundation/wendell... </div>
_______________________________________________<br class=3D"">saxon-help =
mailing list archived at <a href=3D"http://saxon.markmail.org/" =
class=3D"">http://saxon.markmail.org/</a><br class=3D""><a =
href=3D"mailto:[email protected]" =
class=3D"">[email protected]</a><br =
class=3D"">https://lists.sourceforge.net/lists/listinfo/saxon-help =
</div></blockquote></div><br class=3D""></div></body></html>=

--Apple-Mail=_2D4A10FB-2637-4EE5-ADCF-1EB645F5B9FA--


--===============5034785778194740282==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline


--===============5034785778194740282==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
saxon-help mailing list archived at http://saxon.markmail.org/
[email protected]
https://lists.sourceforge.net/lists/listinfo/saxon-help 
--===============5034785778194740282==--