Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Outputting entity references in XUL attributes with XSL

10 views
Skip to first unread message

Paquette.Jim

unread,
Feb 5, 2007, 4:12:46 PM2/5/07
to
Hello,

I'm trying to get XUL output with an element that has an attribute
containing an entity reference. Can this be done? I saw another post
exactly like this...but the solutions they gave didn't work for me.


[-------------XML------------]

<contextMenu>
<building />
<contact/>
<company/>
</contextMenu>


[-----------XSL---------------]
...
<xsl:output method="xml" version="1.0" encoding="ISO-8859-1"
indent="yes"/>
....
<xsl:template match="contextMenu">
<menuitem>
<xsl:attribute name="label" disable-output-escaping="yes">
&amp;context.add.<xsl:value-of select="name()" class="text" />;
</xsl:attribute>
</menuitem>
<xsl:template>


<building />
<contact/>
<company/>
</contextMenu>


[-----------expected XUL---------------]
...
<menuitem label="&context.add.building;">
<menuitem label="&context.add.contact;">
<menuitem label="&context.add.company;">


[-----------actual XUL---------------]
...
<menuitem label="&amp;context.add.building;">
<menuitem label="&amp;context.add.contact;">
<menuitem label="&amp;context.add.company;">

Oleg Tkachenko [MVP]

unread,
Feb 6, 2007, 4:28:56 AM2/6/07
to
Paquette.Jim wrote:

> I'm trying to get XUL output with an element that has an attribute
> containing an entity reference. Can this be done? I saw another post
> exactly like this...but the solutions they gave didn't work for me.

> <xsl:attribute name="label" disable-output-escaping="yes">


> &amp;context.add.<xsl:value-of select="name()" class="text" />;
> </xsl:attribute>

Unfortunately disable-output-escaping doesn't work on attributes:

"It is an error for output escaping to be disabled for a text node that
is used for something other than a text node in the result tree. Thus,
it is an error to disable output escaping for an xsl:value-of or
xsl:text element that is used to generate the string-value of a comment,
processing instruction or attribute node;"

You can do this with XSLT 2.0, can you use XSLT 2.0?

--
Oleg Tkachenko [XML MVP, MCPD]
http://blog.tkachenko.com | http://www.XmlLab.Net | http://www.XLinq.Net

Paquette.Jim

unread,
Feb 6, 2007, 9:31:31 AM2/6/07
to
I'm doing this using xulrunner 1.8.0.x which uses the same engine as
firefox 1.5. Unfortunately, it doesn't support XSLT 2. Any other
ideas?

Oleg Tkachenko [MVP]

unread,
Feb 6, 2007, 10:10:50 AM2/6/07
to
Paquette.Jim wrote:
> I'm doing this using xulrunner 1.8.0.x which uses the same engine as
> firefox 1.5. Unfortunately, it doesn't support XSLT 2. Any other
> ideas?

Then your only option probably is to build XML element entirely as text.
Something crazy like this:

<xsl:text disable-output-escaping="yes">&lt;menuitem
label="&amp;context.add.</xsl:text>
<xsl:value-of select="name()"/>
<xsl:text>;"></xsl:text>
<xsl:text disable-output-escaping="yes">&lt;/menuitem></xsl:text>

0 new messages