RE: [xsl] disable-output-escaping for attributes

Subject: RE: [xsl] disable-output-escaping for attributes
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Tue, 31 May 2005 22:44:13 +0100
Sorry, the documentation is out of date. disable-output-escaping was added
to xsl:attribute in a draft of XSLT 2.0 but was subsequently removed. It's
no longer supported in Saxon, and neither is the Saxon extension
saxon:disable-output-escaping. In Saxon 8.x, use character maps.

Michael Kay
http://www.saxonica.com/ 

> -----Original Message-----
> From: Victor [mailto:xsl-list@xxxxxxxxx] 
> Sent: 31 May 2005 22:09
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Re: [xsl] disable-output-escaping for attributes
> 
> I tried it with saxon 6.5.3 but it didn't seem to work.
> After reading through the docs I found this in the docs for 
> xsl:attribute:
> 
> The attribute |disable-output-escaping| is new in XSLT 2.0. 
> If this is 
> set to the value "yes", then the attribute value will be 
> output as-is, 
> without escaping of special characters. This affects both the 
> normal XML 
> escaping (e.g. of ampersand) and the special URL escaping that occurs 
> with non-ASCII characters in HTML URL attributes (e.g. href) which 
> normally causes a space to be output as %20. Saxon's 
> extension attribute 
> |saxon:disable-output-escaping|, which served the same purpose in 
> previous Saxon releases, is no longer available.
> 
> But I can't get it to work either way.
> 
> Victor
> 
> 
> Michael Kay wrote:
> 
> >You can do this in XSLT 2.0 by using character maps. Assign 
> two special
> >characters (for example, #xAB and #x BB) to the role of "<%" 
> and "%>" and
> >then define a character map to replace them on serialization.
> >
> >Michael Kay
> >http://www.saxonica.com/  
> >
> >  
> >
> >>-----Original Message-----
> >>From: Victor [mailto:xsl-list@xxxxxxxxx] 
> >>Sent: 30 April 2005 16:12
> >>To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> >>Subject: [xsl] disable-output-escaping for attributes
> >>
> >>Some weeks ago I began converting some HTML pages which 
> >>contain asp tags 
> >>to xml to have only the structure without any layout 
> related overhead 
> >>(to easy conversion to new layouts via XSL).
> >>
> >>Some of these asp tags are "text" or could be treated as 
> text nodes. 
> >>These are the nodes I tested my xsl templates with.
> >>However some of the HTML elements use the result of asp calls 
> >>as values 
> >>for attributes.
> >>After many, many pages of really bad HTML have been manually 
> >>converted I 
> >>noticed to my horror that these attributes were actually 
> >>escaped where I 
> >>didn't want them to.
> >>
> >>After reading a lot of other post I am lost. It seems that 
> no one has 
> >>thought about someone needing unescaped text as an attribute 
> >>value and 
> >>therefore "disable-output-escaping" does not work for attibutes.
> >>
> >>Does a tool exist which supports a non-compliant mode to get 
> >>the things 
> >>done? Or is there a workaround?
> >>
> >>Thanks,
> >>Victor
> >>
> >>
> >>old HTML:
> >><select name="myValue">
> >><option valu="0" selected="<% is_sel("myValue","0","selected")%>" 
> >> >0</option>
> >><option valu="1" selected="<% is_sel("myValue","1","selected")%>" 
> >> >1</option>
> >></select>
> >>
> >>XML:
> >><select name="myValue">
> >>    <option valu="0">
> >>        <attribute name="selected"><![CDATA[<% 
> >>is_sel("myValue","0","selected")%>]]></attribute>
> >>        <text>0</text>
> >>    </option>
> >>    <option valu="1">
> >>        <attribute name="selected"><![CDATA[<% 
> >>is_sel("myValue","1","selected")%>]]></attribute>
> >>        <text>1</text>
> >>    </option>
> >></select>
> >>
> >>
> >>XSL:
> >><xsl:template match="attribute">
> >>    <xsl:attribute name="{@name}"><xsl:value-of select="." 
> >>disable-output-escaping="yes"/></xsl:attribute>
> >></xsl:template>

Current Thread