You are making things ridiculously complicated. If you are producing
output that you want to view in an editor that can't understand UTF-8,
just set <xsl:output encoding="us-ascii"/> as you were initially
advised.
Michael Kay
Software AG
home: Michael(_dot_)H(_dot_)Kay(_at_)ntlworld(_dot_)com
work: Michael(_dot_)Kay(_at_)softwareag(_dot_)com
-----Original Message-----
From: owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
[mailto:owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com] On Behalf Of
Marco Guazzone
Sent: 20 December 2002 11:55
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: Re: [xsl] Yet Another Entity Ref question!
Hi David,
your idea is good.
Currently I'm using the LibXSLT processor version 1.0.23
(with libxml2 version 2..4.30). However, with this I will
produce the encode UNICODE char in the output
(HTML) doc; i.e.
XML:
<doc>
<label>Foobar<entity>copy</entity></label>
<entity-dict>
<entity-item name="copy" value="©" />
</entity-dict>
</doc>
XSL:
<!-- ... like the previous except for: -->
<xsl:template match="entity">
<xsl:value-of select="/doc/entity-dict/entity-item[(_at_)name =
current()]/@value" /> </xsl:template>
This produce as output
Foobar(C)Foobar(C)Foobar(C)
where (C) is the encoded value of ©
This may cause problem in non-UNICODE editors or browser,
especially if I include the result in a source document (e.g.
Perl, C) as a return value of a function (problems may arise
in compiling/interpreting phase). Instead what I would
generate is: Foobar© or more generally: Foobar&ent;
where "ent" is specified by an anonymous user in XML via:
<entity>ent</entity> What do you think about it?
--------------------------------
Marco Guazzone
Software Engineer
Kerbero S.r.L. - Gruppo TC
Viale Forlanini, 36
Garbagnate M.se (MI)
20024 - Italy
mail: marco(_dot_)guazzone(_at_)kerbero(_dot_)com
www: http://www.kerbero.com
Tel. +39 02 99514.247
Fax. +39 02 99514.399
--------------------------------
On Fri, 20 Dec 2002, David Carlisle wrote:
<xsl:template match="doc">
<xsl:apply-templates select="label" /> <!-- ok! -->
<xsl:variable name="label">
<xsl:apply-templates select="label" />
</xsl:variable>
<xsl:value-of select="$label" /> <!-- not ok -->
<xsl:value-of disable-output-escaping="yes" select="$label" />
<!-- ok
-->
</xsl:template>
which processor are you using?
d-o-e is optional so a processor can ignore it altogether,
but if it
supports it at all I think that in xslt1 the character
should keep the
d-o-e property even when it goes through the variable.
Is your input form fixed?
It would be easier if your
<ent>xxx</ent>
only took entity names, as then you could convert them easily to
characters without using d-o-e just by looking them up in a
document
of the form
<entity name="copy" char="©"/>
...
There is no need to have an input form of
<ent>#x0A</ent>
as the user can more simply write


which then doesn't need any processing at all at the xslt level.
David
_____________________________________________________________________
This message has been checked for all known viruses by Star
Internet
delivered through the MessageLabs Virus Scanning Service.
For further
information visit http://www.star.net.uk/stats.asp or alternatively
call Star Internet for details on the Virus Scanning Service.
XSL-List info and archive:
http://www.mulberrytech.com/xsl/xsl-list
XSL-List
info and archive: http://www.mulberrytech.com/xsl/xsl-list
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list