Avatar billede js26 Nybegynder
01. oktober 2001 - 00:21 Der er 10 kommentarer og
1 løsning

UTF-16

Er der nogen der kan sige mig, hvad der er galt med nedenstående xslt. Jeg danner et nyt xml ducument, men det jeg får ud af det, er i UTF-16 format.
Derud over går det galt hvis der er æøå i input-xml\'en.

<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\">
<xsl:output method=\'xml\' encoding=\'UTF-8\'/>
<xsl:template match=\'/\'>
<ROOTFOLDER>
<FOLDER NAME=\"Import\">
  <xsl:apply-templates select=\'ROOTFOLDER/DL/H3\'/>
</FOLDER>
</ROOTFOLDER>   
</xsl:template>

<xsl:template match=\'H3\'>
<FOLDER NAME=\'{text()}\'>
  <xsl:apply-templates select=\'following-sibling::DL[1]\'/> 
</FOLDER>
</xsl:template>

<xsl:template match=\'DL\'>
<xsl:apply-templates select=\'H3\'/>
<xsl:apply-templates select=\'A\'/>
</xsl:template>

<xsl:template match=\'A\'>
<LINK>
  <URL><xsl:value-of select=\'@HREF\'/></URL>
  <TEKST><xsl:value-of select=\'text()\'/></TEKST>
</LINK>
</xsl:template>

</xsl:stylesheet>
Avatar billede stigc Nybegynder
01. oktober 2001 - 00:24 #1
ÆØÅ med denne encoding

<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>
Avatar billede janegil Nybegynder
01. oktober 2001 - 15:16 #2
Hvis du fåt UTF-16 ut av et stylesheet som spesifiserer encoding=\'UTF-8\', så er det prosessoren som er feil, ikke stilarket.

Hvilken prosessor bruker du?
Avatar billede js26 Nybegynder
01. oktober 2001 - 22:08 #3
MSXML3
Avatar billede janegil Nybegynder
02. oktober 2001 - 09:36 #4
Ja, det ser ut til at MSXML3 insisterer på UTF-16 output. Ser i hvert fall i min http://heima.olivant.fo/~styrheim/xml/prisliste/prisliste.xml at MSXML3 føyer til sin egen &lt;META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-16\"&gt;

Antar at du tranformerer på serveren, og at du gjør det for at fx. Netscape 4 skal kunne lese sidene dine? Men N4 forstår godt nok ikke UTF-16, bare UTF-8. (Som er standard-tegnsett for XML). Bill Gates Strikes Again!

Kanskje du skal finne deg en annen prosessor. Men jeg er ikke kommet langt nok til å anbefale noen. Vet bare at jeg ikke vil anbefale JRun (fordi den ikke kan overstyre PARAM-elementer).

Hvis du kan tillate deg å transformere på forhånd, med en .bat-fil, vil jeg anbefale Sablotron fra www.gingerall.cz. Den pleide å være bundet til UTF-8 output. (I nyeste versjon skal man visstnok kunne velge tegnsett.)
Avatar billede js26 Nybegynder
02. oktober 2001 - 09:51 #5
Her er mit scenario:
Jeg agerer som server og vil gerne importere min clients browsers favoritlinks.
Min client exporterer dem inde i MIExplore til en fil som jeg importerer.
Derefter vil jeg have den omdannet til en xml-fil.
Først redigerer jeg via JavaScript til en well-formed XML-fil.
Derefter vil jeg tranformere denne fil via en XSLT til en valid XML-fil af mit eget format.
Her går det galt. Hvis der er æøå i dokumentet melder xslt\'en fejl.
Hvis der ikke er æøå\'er, laver den den UTF-16 fil. Når jeg returnere fra xslt\'en, kan jeg dog overskrive utf-16 med utf-8. Og det fungerer, omend jeg ikke bryder mig om løsningen.
Så mit største problem er faktisk min æøå\'er. 
Avatar billede janegil Nybegynder
02. oktober 2001 - 10:18 #6
stigc\'s løsning - å angi tegnsett til \"ISO-8859-1\" i den XML inputfila som inneholder ÆØÅ - virker ikke den?

Hvis ikke, så skulle jeg tror javascriptet ditt kunne bytte om iso-8859-1 \"Æ\" med UTF-8 \"Æ\" osv?

(Prøv å se hvordan avsnittet ovenfor ser ut når du skifter mellom iso-8859-1 og UTF-8?)
Avatar billede janegil Nybegynder
02. oktober 2001 - 10:24 #7
(Virker ikke å skifte tegnsett her, fordi eksperten - klokt nok - skriver non-ASCII som &AELIG; og &ATILDE;)
Avatar billede js26 Nybegynder
02. oktober 2001 - 10:58 #8
Min xslt accepterer ikke iso-8859-1.
Men løsningen er nok at bruge &aelig;&oslash;&aring; for æøå.
Avatar billede janegil Nybegynder
02. oktober 2001 - 12:42 #9
Ja, så lenge resultatet av tranformasjonen er HTML, er utvilsomt &aelig;&oslash;&aring; en smartere måte å skrive æøå enn å hacke UTF-8 ut av javascript.

Men i annen XML-output enn HTML vil &aelig; etc. være udefinerte entiteter, hvis ikke du har definert dem selv. I XML-sammenheng vil kanskje &#x00E6;&#x00F8;&#x00E5;&#x00C6;&#x00D8;&#x00C5; være mere å stole på.

En ting jeg ikke forstår: Du har bare IE-klienter, de forstår da UTF-16, så hva er problemet med UTF-16?
Avatar billede js26 Nybegynder
03. oktober 2001 - 23:42 #10
Nu har jeg fået rettet til utf-16 alle steder. Dvs. i xml og xslt declarationen. Og jeg har fået gemt både xml og xslt dokumenterne som utf-16 dokumenter. Det var det der skulle til. Så du har derfor ret i at der ikke er noget problem med utf-16.
Jeg fandt iøvrigt følgende artikel, der går i dybden med emnet.
http://msdn.microsoft.com/library/default.asp?URL=/library/en-us/dnxml/html/xmlencodings.asp
Avatar billede janegil Nybegynder
04. oktober 2001 - 09:35 #11
Ja, det er visst litt viktig å ha samme encoding gjennon hele dokumentet sitt. Ute i verden strir folk med lignende problemer: Lycos avansert søk etter \"ære\" leverer en herlig blanding av ISO-8859-1 og UTF-8 i resultatet:
http://lycospro.lycos.com/srchpro/?aloc=sb_init_content&first=1&lpv=1&query=%E6re&t=all&type=advwebsites&x=16&y=5
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester