xsl-list
[Top] [All Lists]

Re: [xsl] Question on space normalization in serialization

2015-09-01 17:26:37
As it happens I’ve been experimenting over the last couple of days (encouraged 
by friends at oXygen) with bypassing the XML parser’s attribute-value 
normalization when applied to stylesheets, so that the XPath expression as 
parsed is the expression as written, enabling more accurate diagnostics 
especially with long multi-line XPath expressions.

The trouble is it breaks edge cases where people really want those newlines in 
string literals turned into spaces. Or rather, where they wrote test cases that 
break if you change this.

Michael Kay
Saxonica


On 1 Sep 2015, at 22:37, David Carlisle 
d(_dot_)p(_dot_)carlisle(_at_)gmail(_dot_)com 
<xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com> wrote:

On 1 September 2015 at 22:16, David Sewell dsewell(_at_)virginia(_dot_)edu
<xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com> wrote:
I am probably forgetting something basic in the XSLT specs about how string
variables are created and evaluated, but I was experimenting with including
CSS rules within an XSLT stylesheet and then writing them at run time along
with the output of my transformation via xsl:result-document. I discovered
that if I put the CSS into a string variable using the @select attribute,
linefeeds are not preserved in the output; but if I put the CSS text into a
sequence constructor, the linefeeds are preserved in the output. What's the
underlying reason, assuming this isn't implementation-dependent? (I'm
testing with Saxon; XSLT 2 and 3 produce identical results.)

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
 xmlns:xs="http://www.w3.org/2001/XMLSchema";
 exclude-result-prefixes="xs"
 version="2.0">
 <xsl:variable name="CSS1" as="xs:string" select="'
   p { color:pink; }
   a { font-family: fantasy}
   '"/>
 <xsl:variable name="CSS2" as="xs:string">
   p { color:pink; }
   a { font-family: fantasy}
 </xsl:variable>
 <xsl:template name="main">
   <xsl:result-document href="test1.css" method="text">
     <xsl:value-of select="$CSS1"/>
   </xsl:result-document>
   <xsl:result-document href="test2.css" method="text">
     <xsl:value-of select="$CSS2"/>
   </xsl:result-document>
 </xsl:template>
</xsl:stylesheet>

--
David Sewell, Editorial and Technical Manager
ROTUNDA, The University of Virginia Press
PO Box 400318, Charlottesville, VA 22904-4314 USA
Email: dsewell(_at_)virginia(_dot_)edu   Tel: +1 434 924 9973
Web: http://rotunda.upress.virginia.edu/
--------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: -list/293509
or by email: 
--~--
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--

<Prev in Thread] Current Thread [Next in Thread>