Subject: RE: 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: 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: 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>
|