View Full Version : xml åäö
Boogaloo
2002-09-17, 13:06
Jag försöker att skriva ut åäö i en xmlfil.
Eftersom xml inte gillar dessa så använder jag mig utav ä osv.
När jag sedan försöker parsa denna via en t.ex. ie så säger den att det är inte giltig xml-kod.
Vad är det för fel?
Exempel på http://ctrlalt.com/rss2.xml
De enda specialtecken - eller "entiteter" som det heter formellt - som finns inbyggda i XML är: &amp; ("&"), &lt; ("<"), &gt; (">"), &apos; ("'") och &quot; (dubbelfnutt ;) )
Om du vill använda &auml; osv, måste du deklarera dem i din DTD.
Eftersom du inte gör det så "kräks" MSXML på din kod...
I xhtml har man löst problemet med en extern fil med entitetsdeklarationer (för teckenkodningen ISO-8859-1) som man inkluderar in i de olika DTD:erna så här:
Tag t.ex. http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd.
Där skapar man först (nästan överst i koden) entiteten "HTMLlat1" som är en referens till filen "xhtml-lat1.ent" (alltså en "extern entitet")
<!ENTITY % HTMLlat1 PUBLIC
"-//W3C//ENTITIES Latin 1 for XHTML//EN"
"xhtml-lat1.ent">
och sedan använder man entiteten direkt genom att skriva %HTMLlat1; vilket motsvarar att man inkluderar deklarationerna från filen "xhtml-lat1.ent" in i DTD:n
Filen xhtml-lat1.ent (finns på http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent )
innehåller deklarationer av teckenkoder, typ:
<!ENTITY nbsp "&#160;"> <!-- no-break space = non-breaking space,
U+00A0 ISOnum -->
<!ENTITY iexcl "&#161;"> <!-- inverted exclamation mark, U+00A1 ISOnum -->
<!ENTITY cent "&#162;"> <!-- cent sign, U+00A2 ISOnum -->
osv.
Du kan naturligtvis skippa hela inkluderings-joxet och lägga in <!ENTITY...>-deklarationer för de specialtecken du vill använda direkt i din DTD istället om du vill. ;)
BTW:
De numeriska teckenvärdena som definieras (#160 betyder teckenkod 160 decimalt) är enligt ISO-Latin-1 som jag har fått för mig stämmer överens med ISO-8859-1... Vill du ha dem kodade i Unicode eller något annat format måste du klura ut teckenvärdena "manuellt" ;)
Lycka till!
Marcus E
2002-09-17, 14:51
Ett annat sätt är att ange vilken teckentabell som ska användas.
T.ex:
<?xml version="1.0" encoding="ISO-8859-1"?>
Då kan du använda alla tecken i den teckentabellen.
Boogaloo
2002-09-17, 15:48
Jo fast om du kollar på koden som jag har så har jag angivit ISO-8859-1 som encoding.
Det är det som är så otroligt störande.
Marcus E
2002-09-17, 15:55
Det är inte svenska tecken som är problemet. Om du byter ut &ouml; mot ö för du ett annat problem. Och det är att filen slutar tvärt.
vBulletin® v3.8.6, Copyright ©2000-2013, Jelsoft Enterprises Ltd.