xsl-list
[Top] [All Lists]

Re: Non English characters in attribute values

2004-09-20 09:47:14
Hi Anton,

The problem was fixed by Michael Kays solution - the problem seems to have been caused by the attribute value being escaped, which I now suppress with escape-uri-attributes="no" in an output tag as suggested. I am no longer specifying 2 different encodings. I think this must have been a copy and paste reuse artifact! Thanks for all the help,

David Sinclair.

cking wrote:

Hi David,

Your stylesheet uses xml:output encoding="UTF-8":

  <xsl:output method="html" version="4.01" indent="yes" encoding="UTF-8"/>

Yet in the output html, there's a meta tag with another encoding:

  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

If you take the generated output file and change charset=iso-8859-1 to
charset=utf-8, does the html form field display the correct string?

I don't know how this meta-tag ends up in the result,
but there might be an encoding conflict in your input file:

  <?xml version="1.0" encoding="utf-8"?>
  <result>
      <values>
          <value>Larry</value>
          <value>Gisèle</value>
      </values>
  </result>

If you open that file in a hex-editor, how is the 'è' encoded?
The xml-declaration specifies "utf-8" so that should be two bytes
with hex value 'C3A8'. A 'normal' text-editor would display
"Gisèle" in that case. If the 'è' is encoded as one byte 'E8',
the actual encoding is not utf-8 but probably "iso-8859-1".

If that's the case, you can either stick to "utf-8" and replace "Gisèle" with
"Gisèle" in the input file, or replace "utf-8" with "iso-8859-1" in your
xml-declarations (both xml source and xsl stylesheet) and in xsl:output.

I'm not sure if that will solve the javascript part, probably it will still
show something like "javascript:pushSelectionBackToOpener('Gis%E8le')"
but maybe the html form will show the correct string then.

Good luck,
Anton Triest


----- Original Message ----- From: "David Sinclair" <dsinclair(_at_)teleflex(_dot_)com>
To: <xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com>
Sent: Monday, September 20, 2004 12:55 PM
Subject: [xsl] Non English characters in attribute values


Hi,

I am having a problem with non-english characters and how they appear in
attribute values as apposed to element content.   This is a simplified
version of the code I having a problem with:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
xmlns:fo="http://www.w3.org/1999/XSL/Format";>
<xsl:output method="html" version="4.01" indent="yes" encoding="UTF-8"/>
<xsl:template match="/">
   <html>
      <body><xsl:apply-templates select="//values" /></body>
   </html>
</xsl:template>

<xsl:template match="values">
   <ul><xsl:apply-templates select="value" /></ul>
</xsl:template>

<xsl:template match="value">
   <li>
       <xsl:element name="a">
           <xsl:attribute
name="href">javascript:pushSelectionBackToOpener('<xsl:value-of
select="."/>')</xsl:attribute>
           <xsl:value-of select="."/>
       </xsl:element>
   </li>
</xsl:template>
</xsl:stylesheet>

Here is an example of the source document:
<?xml version="1.0" encoding="utf-8"?>
<result>
   <values>
       <value>Larry</value>
       <value>Gisèle</value>
   </values>
</result>

The result of running this xsl on the source doc is as follows (note
that the href attribute is different from the element content):
<html xmlns:fo="http://www.w3.org/1999/XSL/Format";>
  <head>
     <meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1">

     <title></title>
  </head>
  <body></body>
  <ul>
     <li><a
href="javascript:pushSelectionBackToOpener('Larry')">Larry</a></li>
     <li><a
href="javascript:pushSelectionBackToOpener('Gis%C3%A8le')">Gis&egrave;le</a></li>
  </ul>
</html>

The javascript function puts its parameter into an htm form field, and
appears as "Gisèle" instead of  "Gisèle".  Does anyone know how I can
get the right value to apear in the attribute value?  I am using  Saxon
8 BTW.

David Sinclair.


--+------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--+--


<Prev in Thread] Current Thread [Next in Thread>