[xsl] 'disable-output-escaping' seque to entities

Subject: [xsl] 'disable-output-escaping' seque to entities
From: Benjamin Franz <snowhare@xxxxxxxxxxx>
Date: Fri, 29 Dec 2000 06:36:16 -0800 (PST)
On Thu, 28 Dec 2000, Evan Lenz wrote:

> I agree that disable-output-escaping should not be used in this case.  The
> only defensible use of disable-output-escaping that I remember seeing is the
> rendering of non-well-formed HTML in a browser (where the HTML markup is
> actually content, not markup).

Yuppers. This is actually one of a few items (the most significant being
that Java servlet threads go runaway with no fix apparent in Tomcat or
Apache JServ on Linux in mere minutes under real load) that caused me to
drop Cocoon as our default XSLT rendering engine here. We then wandered
through Xalan-J as applet, Xalan-J at command-line, Xalan-C at
command-line, XT as applet, and finally to XT at command-line - since
supplemented with XT->FOP as a combined op as needed. I'll consider
Sablotron when its performance exceeds XT. (I've actually written a
in-house Perl module that wraps all of them selectibly with smart caching
and a single API - :) )

I am firmly of the opinion that Cocoon has made a *SERIOUS* mistake by
intentionally not supporting 'disable-output-escaping'. It isn't needed
often - but when needed there is no acceptable substitute.

On to the seque: Something I noticed that was different between some of
the rendering engines was that some engines render '&amp;amp;' as '&amp;'
and others as '&amp;amp;'. Reading the spec, it seems unclear which is
correct (it speaks on the lines of 'must be valid' rather than spelling it
out - so as long as you kill invalid output I'm not sure it is specified).

This causes issues assembling '<a href="...">' tags with parameters
portably:

I want something like:

 <a href="/cgi-bin/script?sdf=er&amp;ewr=2">Link</a>

To get it, depending on the rendering engine, I have to use two different
constructs:

 Way 1) (Cocoon 1.74, Xalan-C, Xalan-J 1.x)
  <xsl:element name="a">
   <xsl:attribute name="href">/cgi-bin/script?sdf=er&amp;amp;ewr=2</xsl:attribute>
   Link
  </xsl:element>

 Way 2) (Xalan-J 2.x, XT)
  <xsl:element name="a">
   <xsl:attribute name="href">/cgi-bin/script?sdf=er&amp;ewr=2</xsl:attribute>
   Link
  </xsl:element>

Personally, I think way #2 is right. Expert opinions as to which way is
actually correct? Or is this simply a spec ambiguity?

-- 
Benjamin Franz

... with proper design, the features come cheaply. This 
approach is arduous, but continues to succeed.

                                     ---Dennis Ritchie


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread