RE: [xsl] output encoding problem (second try)

Subject: RE: [xsl] output encoding problem (second try)
From: "Gabriel K" <gabriel.klappenbach@xxxxxxxxxxxx>
Date: Fri, 19 Aug 2005 21:57:17 +0200
Yes, I know that the encoding declared is not actually the one used for EDV.
That is the given problem. What I want to know is why and how it can be
fixed.
Anyway, I have narrowed down the problem now, so perhaps now we can solve
it.

I'm using the MS IXSLProcessor to do the transformation:

' output with IXSLProcessor -----------------------------------------
Set template = Server.CreateObject("MSXML2.XSLTemplate.5.0")
template.stylesheet = domXSL
set processor = template.createProcessor()
processor.input = oStream
'processor.input = domXML
processor.output = Response
processor.transform()

Now. If I use the oStream object as input, I get incorrect encodings (that
are actually used). It seems that IXSLProcessor reads the adodbStream in
ISO-8859-1 for some reason.
The oStream object loads it data directly from a COM-object, that outputs a
UTF-8 encoded XML file. This XML file seems to be totally correct:
http://gabbah.no-ip.org/mirakel/default.asp?ctype=KSP&cdoc=object&cnBookmark
=ARNEBACKEN&transform=no
So we assume there is nothing wrong with the input. The link above is a
direct output of the contents in the oStream variable.
oStream is created through:

' setup ADODB Stream -------------------------------------------------
dim oStream
set oStream = createobject("Adodb.Stream")
oStream.Type = 2
oStream.Charset = "utf-8"
oStream.open
oStream.writeText o.document
oStream.position = 0


On the other hand, if I *save the XML to disk* first, then load it from disk
(via "domXML.load(Server.MapPath('KSP.xml')) ") and use THAT as input to the
IXSLProcessor, the actual encoding is correct, and everything looks fine!

So, it seems to me that the problem is in how IXSLProcessor reads its input.
It seems it reads it as ISO-8859-1 when it reads from a Stream but not when
it reads from a DOMDocument?
It sounds weird to me, but that's all I can think of. So does anyone know
more about IXSLProcessor and it's input? I couldn't find any relevant
settings for it in the documentation.

(Same behaviour in Firefox as in IE. Transformation is done on the server)

/Gabriel



> -----Ursprungligt meddelande-----
> Fren: Michael Kay [mailto:mike@xxxxxxxxxxxx]
> Skickat: den 17 augusti 2005 16:00
> Till: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Dmne: RE: [xsl] output encoding problem (second try)
>
> I don't know if I'm the only regular on this list who generally makes a
> point of not following links, especially links that cause programs to
> execute. It's partly general caution, partly that I'm always busy, and
> partly in a case like this because I don't think following the link will
> tell me much, since there is so much happening between the output of the
> XSLT transformation and the pixels that I see in my browser window.
>
> What's needed is to look at the input and output files of the
> transformation
> directly (with a hex editor) to see:
>
> (a) what the declared encoding is (what's in the XML declaration)
> (b) what the actual encoding is (what hex codes are used to represent E D
> V)
>
> The chances are that the two don't match.
>
> Michael Kay
> http://www.saxonica.com.
>
> > -----Original Message-----
> > From: Gabriel K [mailto:gabriel.klappenbach@xxxxxxxxxxxx]
> > Sent: 17 August 2005 13:40
> > To: XSL-list
> > Subject: [xsl] output encoding problem (second try)
> >
> > Hi.
> > I've been going at this problem for quite some time with no luck.
> > The problem is one of encodings. My XSL-file transforms an
> > XML document, and
> > also reads from another one using document(). For some
> > reason, these two
> > never display the characters E D V in them correctly *at the
> > same time*
> > (that is, using a specific encoding).
> >
> > Below is a link to the output of the transformation. First I
> > output with
> > IXSLprocessor, and below that using transformNode().
> >
> > http://gabbah.no-ip.org/mirakel/ex.asp?ctype=KSP&cdoc=object&c
> > nBookmark=ARNE
> > BACKEN&cpKNP=*
> >
> >
> > As you can see, with IXSLprocessor, the XML read with document() is
> > displayed correctly, but the main XML is not (the word
> > 'TrollhC$ttan' is
> > from the main XML).
> > With transformNode(), the main XML is displayed correctly, while the
> > 'imported' one is not. (the word Kabelsk?p is from the imported)
> >
> > I'm trying to output everything in UTF-8. The output element
> > controls the
> > output encoding only when I use transformNode(), not with
> > IXSLProcessor.
> > If you change the encoding used in the browser, either the
> > main XML or the
> > imported will not look good!
> > *OBSERVE* that the transformation is successful if I
> > transform it in XMLSPY;
> > all characters display fine. (Then the main XML has been
> > saved to disk first
> > and the transformed).
> > So the problem is when I go via ASP!
> >
> > The asp:
> > http://gabbah.no-ip.org/mirakel/ex.asp.txt
> > the XSL:
> > http://gabbah.no-ip.org/mirakel/XSL/PC/KSPex.xsl
> > the main XML:
> > http://gabbah.no-ip.org/mirakel/ex.asp?ctype=KSP&cdoc=object&c
> > nBookmark=ARNE
> > BACKEN&cpKNP=*&transform=no
> > the XML imported with document():
> > http://gabbah.no-ip.org/mirakel/XML/languageDependent.xml
> > XML-engine:
> > MSXML3
> >
> > Any help with this would be MUCH appreciated.. I've been
> > struggling with
> > this for many many days!
> >
> > /Gabriel

Current Thread