Avatar billede galaxy Nybegynder
17. marts 2005 - 19:09 Der er 13 kommentarer og
1 løsning

problem med karakter-sæt

Jeg har en XML-fil som jeg får generet af et program. Det er derfor IKKE muligt, at ændre ved selve XML-filen.

Det sjove er, at selv om filen er encoded med us-ascii har jeg absolut ingen problemer med æ, ø og å. Til gengæld er der en del andre tegn, som blot vises som en firkant. Bl.a. indeholder filen – som i programmet vises som en -
Men når jeg kører den sammen med min XSL-fil vises – i stedet som den omtalte firkant. Det samme er tilfældet med flere andre tegn :-(

Hvis !Entity og DTD foreslåes, vil jeg være meget glad for et eksempel.
Avatar billede janegil Nybegynder
17. marts 2005 - 21:23 #1
– er europeisk tankestrek i windows-1252, men kontrolltegnet "start of guarded area" i ISO-8859-1 og UTF-8.

Så hvis kilden unneholder disse tegnene, er den trolig kodet i UTF-8 eller ISO-8859-1. Og hvis den selv påstår den er kodet i US-ASCII, så lyver den. Og hvis du ikke har anledning til å rette den feilen, så er det bare leit. (I XML er det heldigvis en nokså sterk kultur på at feil skal rettes ved å rettes, ikke ved å introdusere nye feil som motvirker den opprinnelige.)
Avatar billede galaxy Nybegynder
18. marts 2005 - 08:55 #2
Tak for svaret. Jeg HAR prøvet, at ændre encoding til både windows-1252, ISO-8859-1 og UTF-8. Intet hjælper.

En så lille ændring som encoding vil være mulig, bare jeg ikke skal ændre i data.
Avatar billede janegil Nybegynder
18. marts 2005 - 09:30 #3
Hvilken software bruker du til XSLT-transformasjonen?

Leser den XML-kilden fra fil eller via http:?

Er det mulig å få se et lite eksempel på data og stilark?
Avatar billede galaxy Nybegynder
18. marts 2005 - 10:15 #4
Eksempel på data:

<Overview>Den ber&#248;mte krimiforfatter Mort Rainey (Depp) slikker sine s&#229;r efter en bitter skilsmisse i sin isolerede bjerghytte og bliver uventet ops&#248;gt af den ukendte og uligev&#230;gtige John Shooter (Turturro). Den psykopatiske Shooter p&#229;st&#229;r, at Rainey har plagieret hans novelle og kr&#230;ver retf&#230;rdighed. Da Shooters krav udvikler sig til trusler &#150; og mord &#150; s&#248;ger Rainey hj&#230;lp hos en privatdetektiv (Dutton). Men Rainey kan ikke forhindre, at tingene l&#248;ber l&#248;bsk og opdager, at han ikke kan stole p&#229; nogen eller noget. En chokerende psykologisk gyser af David Koepp, som ogs&#229; skrev Panic Room.  &#13;&#10;&#13;&#10;Den Oscar&#174;-nominerede Johnny Depp (2003 Bedste skuespiller for Pirates of the Caribbean &#150; den sorte forbandelse) leverer sin hidtil mest fascinerende pr&#230;station i denne actionthriller, som har de ypperste skuespillere p&#229; rollelisten &#150; bl.a. John Turturro, Maria Bello, Oscar&#174;-vinder Timothy Hutton (1981 Bedste birolle for En ganske almindelig familie) og Charles S. Dutton.</Overview>
Avatar billede galaxy Nybegynder
18. marts 2005 - 10:16 #5
Mit udtræk:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<body>
<script language="javascript">
// Load XML
var xml = new ActiveXObject("Microsoft.XMLDOM")
xml.async = false
xml.load("dvd.xml")

// Load the XSL
var xsl = new ActiveXObject("Microsoft.XMLDOM")
xsl.async = false
xsl.load("dvd.xsl")

// Transform
document.write(xml.transformNode(xsl))
</script>

</body>
</html>
Avatar billede galaxy Nybegynder
18. marts 2005 - 10:17 #6
Min XSL:

<?xml version="1.0" encoding="windows-1252"?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">

<xsl:template match="/">

<html>

<body>
<table
width="100%"
border="1">

<thead>
<th>Titel</th>
<th>År</th>
<th>Udgivelsesdato</th>
<th>Resumé</th>
</thead>
<xsl:for-each select="Collection/DVD" order-by="+ Title">
<tr align="left">
<td><b><xsl:value-of select="Title"/></b></td>
<td><xsl:value-of select="ProductionYear"/></td>
<td><xsl:value-of select="Released"/></td>
<td><xsl:value-of select="Overview"/></td>
</tr>
</xsl:for-each>
</table>

</body>
</html>
</xsl:template>
</xsl:stylesheet>
Avatar billede janegil Nybegynder
18. marts 2005 - 10:36 #7
Aha! Fine teologiske nyanser, her. Du sa jo at filen inneholder &#150;, og det er en gyldig us-ascii koding av europeisk tankestrek. (Jeg misforstod, trodde det stod – i kilden.)

Forslag: Skift til et namespace som fortsatt er anbefalt av W3C: <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

Angi windows-1252 som output tegnsett fra XSLT. Resultatet vil så bli leselig på windowsmaskiner, jeg vet ikke hvor stor problemer det blir annetsteds. Se "encoding" i http://www.w3.org/TR/xslt#output
Avatar billede galaxy Nybegynder
18. marts 2005 - 11:51 #8
Det med namespace har jeg allerede prøvet. Når jeg bruger den du foreslår, får jeg en helt tom side frem, altså INTET output.
Avatar billede galaxy Nybegynder
18. marts 2005 - 13:18 #9
Håber du har flere forslag janegil :-)
Avatar billede janegil Nybegynder
18. marts 2005 - 13:48 #10
Når det gjelder http://www.w3.org/TR/WD-xsl, så melder jeg pass.

Dog vil jeg påpeke at kildeeksemplet ditt ikke inneholder noe Collection-element, så det virker rimelig nok at tabellen blir nokså tom.

For øvrig er for-each som regel en uvane vi med programmørbakgrunn sliter med, som regel  går det minst like greit med bare templates.
Avatar billede galaxy Nybegynder
18. marts 2005 - 14:00 #11
Har fundet ud af, at jeg godt kan bruge <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform">, hvis bare jeg ikke sætter version til 1.0
Avatar billede galaxy Nybegynder
18. marts 2005 - 14:02 #12
Mit kilde-eksempel er i øvrigt kun et MEGET lille udpluk af XML-filen. Der ER et Collection-element i den fulde kilde.
Avatar billede janegil Nybegynder
18. marts 2005 - 14:17 #13
OK, så kjører toget igjen.

Har du så prøvd
<xsl:output encoding="windows-1252" method="html"></xsl:output>
?
Avatar billede galaxy Nybegynder
23. maj 2005 - 14:06 #14
fik det aldrig til at virke, men tak for forsøget janegil
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