Re: [xsl] Initial whitespace in PI from XSLT, main body

Subject: Re: [xsl] Initial whitespace in PI from XSLT, main body
From: "Dimitre Novatchev dnovatchev@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Sat, 7 May 2022 22:52:22 -0000
Syd, I see two ways (if you really need to) to maintain a PI whose string
value starts with a whitespace character:

  1. Enclose this value in some strippable non-whitespace characters (say
apostrophes or quotes), or,

  2. If the value is guaranteed not to end with a space character, just use
the reversed string value, and when you get that in your code, reverse it
back.

Hope this helps,

Dimitre

On Sat, May 7, 2022 at 3:23 PM Bauman, Syd s.bauman@xxxxxxxxxxxxxxxx <
xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:

> MH> The relevant XSLT 3 spec section is
> https://www.w3.org/TR/xslt-30/#constructing-simple-content
>
<https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.w3.org
%2FTR%2Fxslt-30%2F%23constructing-simple-content&data=05%7C01%7Cs.bauman%40no
rtheastern.edu%7Cf7d75cb09c2b4004a57f08da3072f8d5%7Ca8eec281aaa34daeac9b9a398
b9215e7%7C0%7C0%7C637875568061834037%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAw
MDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=IvUU
Grl1Pg7%2Bms%2FUToogBhl8idaun40GEvxAf%2Bn5aCk%3D&reserved=0>
> and clearly says "6. In the case of xsl:processing-instruction
>
<https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.w3.org
%2FTR%2Fxslt-30%2F%23element-processing-instruction&data=05%7C01%7Cs.bauman%4
0northeastern.edu%7Cf7d75cb09c2b4004a57f08da3072f8d5%7Ca8eec281aaa34daeac9b9a
398b9215e7%7C0%7C0%7C637875568061990277%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wL
jAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=I
cC2BVnqQQf0D5o4zlusIcLtGpzwNvU%2BtA%2Foxtuc9Xk%3D&reserved=0>,
> any leading spaces in the resulting string are removed."
>
> DN> https://www.w3.org/TR/xslt-30/#constructing-simple-content
>
<https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.w3.org
%2FTR%2Fxslt-30%2F%23constructing-simple-content&data=05%7C01%7Cs.bauman%40no
rtheastern.edu%7C9db73cd3a721407df65b08da3073d667%7Ca8eec281aaa34daeac9b9a398
b9215e7%7C0%7C0%7C637875571320678621%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAw
MDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=skqp
rH7CYK0yWW4psy8dTVb70sX9dXmWCVrgC4OyIKY%3D&reserved=0>
> : " .  .  . 6. In the case of xsl:processing-instruction
>
<https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.w3.org
%2FTR%2Fxslt-30%2F%23element-processing-instruction&data=05%7C01%7Cs.bauman%4
0northeastern.edu%7C9db73cd3a721407df65b08da3073d667%7Ca8eec281aaa34daeac9b9a
398b9215e7%7C0%7C0%7C637875571320678621%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wL
jAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=q
YVrPuaEXCFFSZ79WMJaPNnD8IJqt0ev1KDhpBVpffw%3D&reserved=0>,
> any leading spaces in the resulting string are removed."
>
> MK> Yes, Saxon strips any leading whitespace included in the content when
> you create a processing instruction using XSLT or XQuery.
> MK> XQuery 3.1 mandates this in B'3.9.3.5. XSLT 3.0 also does so, in
B'5.7.2.
> MK> The problem is that there is no way of serializing a PI in such a way
> that leading whitespace in the content round-trips when the serialised
> output is re-parsed. But the serialization spec mandates that you should
> serialize the XML in such a way that round-tripping works.
> MK> It's unfortunate that the Data Model in B'6.5.1 doesn't state a
> constraint that the content of a PI must not contain leading whitespace.
> MK> XSLT 1.0 didn't say that xsl:processing-instruction should strip
> leading whitespace; and XSLT 2.0 didn't explicitly list this as an
> incompatible change. But then, in XSLT 1.0, there is no way of reading a
> processing instruction created by the transformation other than
> serialization followed by parsing, and this process loses any leading
> whitespace.
>
> Thank you, gentlemen!
>
> Seems to me, then, that Saxon is correct in stripping leading space on
> writing a PI; and that xsltproc (since it is only processing XSLT 1.0) is
> not *wrong* to include it, but will have a minor problem with this if and
> when it grows up to process XSLT 3.0.
>
> Thanks again, this has been yet another learning moment brought to you by
> the XSLT community. p
>
> XSL-List info and archive
>
<https://nam12.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.mulberr
ytech.com%2Fxsl%2Fxsl-list&data=05%7C01%7Cs.bauman%40northeastern.edu%7C60161
6d493e64c00492d08da30761864%7Ca8eec281aaa34daeac9b9a398b9215e7%7C0%7C0%7C6378
75581017378461%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLC
JBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=o%2FLF7jAteBqm6gssBF3t3KEd
JVSqUNV4XdKeb%2FQxuXY%3D&reserved=0>
> EasyUnsubscribe
>
<https://nam12.safelinks.protection.outlook.com/?url=http%3A%2F%2Flists.mulbe
rrytech.com%2Funsub%2Fxsl-list%2F649132&data=05%7C01%7Cs.bauman%40northeaster
n.edu%7C601616d493e64c00492d08da30761864%7Ca8eec281aaa34daeac9b9a398b9215e7%7
C0%7C0%7C637875581017378461%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQI
joiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=4%2ByPRY41HK9
Qsm5E0wPbU82HWokYmN9T1M9PBk%2B8VRQ%3D&reserved=0>
> (by email)
> XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list>
> EasyUnsubscribe <http://lists.mulberrytech.com/unsub/xsl-list/782854> (by
> email <>)
>


--
Cheers,
Dimitre Novatchev
---------------------------------------
Truly great madness cannot be achieved without significant intelligence.
---------------------------------------
To invent, you need a good imagination and a pile of junk
-------------------------------------
Never fight an inanimate object
-------------------------------------
To avoid situations in which you might make mistakes may be the
biggest mistake of all
------------------------------------
Quality means doing it right when no one is looking.
-------------------------------------
You've achieved success in your field when you don't know whether what
you're doing is work or play
-------------------------------------
To achieve the impossible dream, try going to sleep.
-------------------------------------
Facts do not cease to exist because they are ignored.
-------------------------------------
Typing monkeys will write all Shakespeare's works in 200yrs.Will they write
all patents, too? :)
-------------------------------------
Sanity is madness put to good use.
-------------------------------------
I finally figured out the only reason to be alive is to enjoy it.

Current Thread