Re: [xsl] LF and serialize()?

Subject: Re: [xsl] LF and serialize()?
From: "Martin Honnen martin.honnen@xxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Fri, 25 Oct 2019 13:22:16 -0000
Am 25.10.2019 um 15:08 schrieb Martin Honnen martin.honnen@xxxxxx:
Am 25.10.2019 um 15:04 schrieb Birnbaum, David J djbpitt@xxxxxxxx:
When I run serialize() (in Saxon-HE XSLT) over an XML
snippet, it does what I need, except that it replaces LF inside
attribute values with SP. This seems to be consistent with what I
read at, and the
workaround described there (use a numerical character reference to LF
instead of the raw LF character) works. But Ibd like to avoid having
to specify in the XML something that I would prefer to manage during
the XSLT transformation, and I would also like to avoid
pre-processing the XML outside an XML environment and replacing the
LF with a numerical character reference there, before passing the
modified XML into the XSLT transformation.

So: Would anyone happen to know of a way within just an XSLT
stylesheet to retain LF within an attribute value as distinct from SP
in the output of serialize()?

What is an XML snippet? Are you sure it is the serialization that converts linefeeds to spaces or just the XML parsing (that is also what the spec you cite refers to)?

To illustrate, this XSLT snippet with XSLT 3 constructs some XML with an
attribute value containing line feeds and Saxon, when using the
"serialize" function, rightly then escapes them as numeric character
references, so

B B B  <xsl:variable name="xml-snippet">
B B B B B B B  <element>
B B B B B B B B B B B  <xsl:attribute name="att1">Line 1.
Line 2.
Line 3.</xsl:attribute>
B B B B B B B  </element>
B B B  </xsl:variable>
B B B  <xsl:value-of select="serialize($xml-snippet, map { 'method' :
'xml' })"/>


<element att1="Line 1.&#xA;Line 2.&#xA;Line 3."/>

But of course serialize doesn't convert spaces any previous parsing step has introduced back to line feeds.

Current Thread