[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

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 16:19:39 +0100

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
Keywords