Outputting entity references in XUL attributes with XSL

P

Paquette.Jim

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:eek:utput 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;">
 
J

Joseph Kesselman

As you've discovered, text content that contains an ampersand is *NOT*
the same thing as an entity reference until it's been converted all the
way to a text string and reparsed from that.

XSL 2.0 may be able to construct "real" entity references; I don't think
XSL 1.0 can do so.
 
O

Oleg Tkachenko [MVP]

Paquette.Jim said:
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?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,994
Messages
2,570,223
Members
46,815
Latest member
treekmostly22

Latest Threads

Top