• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

"ISO-8859-1" wird trotz Angabe bei externer Entity nicht angewandt

Status
Für weitere Antworten geschlossen.

Bampa

Neues Mitglied
Hallo,

folgendes Problem. In dieser XML-Datei:

Code:
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<!DOCTYPE MUSIKSAMMLUNG SYSTEM "ms.dtd">
<MUSIKSAMMLUNG>
	<ALBUM>
		<AUTOR>&hs;</AUTOR>
		<INTERPRET>Moby</INTERPRET>
		<TITEL>Play</TITEL>
		<GESAMTZEIT>63:03</GESAMTZEIT>
		<LABEL>&MRL;</LABEL>
		<JAHR>1999</JAHR>
		<BILD typ="jpg" quelle="images/moby_play1.jpg" />
		<BILD typ="jpg" quelle="images/moby_play2.jpg" />
		<LIED>Honey</LIED>
		<LIED>Find my baby</LIED>
		<LIED>Porcelain</LIED>
		<LIED>Why does my heart feel so bad?</LIED>
	</ALBUM>
	<ALBUM typ="Vinyl">
		<AUTOR>&hs;</AUTOR>
		<GRUPPE>a-ha</GRUPPE>
		<TITEL>Minor earth major sky</TITEL>
		<GESAMTZEIT>63:03</GESAMTZEIT>
		<LABEL>&MRL;</LABEL>
		<JAHR>1999</JAHR>
		<BILD typ="gif" quelle="images/aha_minor.gif" />
		<LIED>Minor earth major sky</LIED>
		<LIED>Little black</LIED>
		<LIED>Velvet</LIED>
		<LIED>Summer moved on</LIED>
	</ALBUM>
</MUSIKSAMMLUNG>

... wird auf die ms.dtd verwiesen. Die DTD-Datei beinhaltet diesen Code:

Code:
<!NOTATION jpg PUBLIC "-//ISO DIS 10918//NOTATION JPEG Graphics Format//EN">
<!NOTATION gif PUBLIC "-//Compuserve//NOTATION Graphics Interchange Format//EN">
<!ENTITY hs "Heiko Schröder">
<!ENTITY MRL "Mute Records Limited">
<!ELEMENT MUSIKSAMMLUNG (ALBUM+)>
<!ELEMENT ALBUM (AUTOR, (GRUPPE | SAENGER | INTERPRET),
                         TITEL, GESAMTZEIT?, LABEL?, JAHR?, BILD*, LIED*)>
<!ATTLIST ALBUM typ (CD | Vinyl | MC) "CD">
<!ELEMENT AUTOR (#PCDATA)>
<!ELEMENT INTERPRET (#PCDATA)>
<!ELEMENT SAENGER (#PCDATA)>
<!ELEMENT GRUPPE (#PCDATA)>
<!ELEMENT TITEL (#PCDATA)>
<!ELEMENT GESAMTZEIT (#PCDATA)>
<!ELEMENT LABEL (#PCDATA)>
<!ELEMENT JAHR (#PCDATA)>
<!ELEMENT BILD (#PCDATA)>
<!ATTLIST BILD
   typ NOTATION (gif | jpg) #REQUIRED
   quelle CDATA #REQUIRED
>
<!ELEMENT LIED (#PCDATA)>

Wenn die Entität "hs" intern in der XML-Datei eingefügt wird, wird sie erkannt. Wenn allerdings wie hIer beschrieben, die Entität extern in der DTD-Datei eingefügt wird, wird das "Ö" im Namen "Heiko Schröder" nicht mehr angenommen.

Weiß jemand warum? Danke Bampa
 
Etwas Kontext wäre auch nicht schlecht.

Wenn allerdings wie hIer beschrieben, die Entität extern in der DTD-Datei eingefügt wird, wird das "Ö" im Namen "Heiko Schröder" nicht mehr angenommen.

Was heißt "wird [...] nicht mehr angenommen"?
 
@ threadi: Beide Dateien (ms.xml und ms.dtd) waren in einem zip-Ordner. Sie liegen beide im entpackten Ordner bei mir auf der Festplatte. Wie erkenne ich, ob die Datei in ISO-8859-1 gespeichert wurde?

@ mermshaus: Folgende Fehlermeldung gibt der IE aus
Code:
Im Textinhalt wurde ein ungültiges Zeichen gefunden. Fehler beim Bearbeiten der Ressource 'file:///C:/Dokumente und Einstel...

<!ENTITY hs "Heiko Schr
 
Öffne sie in einem Editor deiner Wahl und schaue nach was der Editor für einen Zeichensatz anzeigt. Wie das aussieht und geht hängt vom Editor ab. Windows Notepad ist dafür ungeeignet.
 
Code:
<!ENTITY hs "Heiko Schr&<!-- das Forum frisst Entities -->#246;der">
Afaik dürfen DTDs nur ASCII sein.
 
Oh man, das ist aber verzwickt. Kann es sein das einige Programme die Dateien in anderen Kodierungen öffnen, als in denen man sie speichert? Zumindest kommt mir das so bei dem Programm "Bonfire Studio" so vor. Habe die Dateien jetzt mit dem Editor "Notepad++" bearbeitet. Mit dem funktioniert es. Danke für eure Tipps. Gruß Bampa
 
Ja, ich kann mir sehr gut vorstellen, dass manche Programme sowas machen (oder je nachdem auch beim Öffnen still und heimlich umkodieren). Mit sowas kann man eine ganze Menge Spaß haben, wenn man keine Idee hat, dass da etwas mit der Kodierung nicht passt bzw. was da überhaupt genau passiert. (Manchmal hilft nur noch der Blick in den Hex-Editor.)

Schön finde ich in dem Zusammenhang auch immer wieder, dass Servereinstellungen (etwa per .htaccess) das Encoding, in dem eine Seite ausgeliefert wird, überschreiben können, auch wenn im HTML-Dokument (oder wo auch immer) explizit ein Encoding angegeben wurde. Der Vorgang selbst ist eigentlich okay und logisch, der Umgang damit auch nicht weiter kompliziert -- jedenfalls sobald man es einmal gemacht hat. ;)

Kannst du denn jetzt die Umlaute in Reinschrift (also "öäü") in der DTD stehen haben oder sind dort tatsächlich nur ASCII-Zeichen erlaubt? (Kann ich mir eigentlich nicht vorstellen.)
 
Die Umlaute kann ich jetzt in Reinschrift eingeben. Es war so wie von dir beschrieben, mermshaus. Erst das neue Erstellen der Dateien in einem Editor und das Speichern in UTF-8 (im XML-Dokument heißt es jetzt auch "encoding="UTF-8") brachte das Gewünschte Resultat. Für das Hochladen auf den Webserver musste ich auch erst einmal schauen welche Kodierungen das FTP-Programm bei Hochladen nutzt. Jetzt klappt es auch übers Internet.

Jetzt verstehe ich es auch. Puh, schwere Geburt. Vielen Dank nochmal. Bampa
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben