Jens Puruckherr wrote:
Hallo Jens,
Welche Zeichen in einer XML-Datei stehen duerfen und wie diese interpretiert werden, haengt vom Encoding ab, das ist standardmaessig UTF-8. Die Entity ä ist nur bei entsprechender DTD/Schema moeglich, z.B. bei HTML. XML selbst kennt nur sehr wenige Entities.
MESSAGE: Datatype error: Type:InvalidDatatypeValueException, Message:Value 'Gesch�skunde' is not in enumeration .
Hmm, hier wurde der Umlaut zweimal in UTF8 umkodiert...
Vielleicht vergessen in der XML-Processing Instruction das Encoding anzugeben, oder ein falsches angegeben ? (oder gar vergessen ?)
Ich habe zunächst gar nix angegeben.Spuckte schön utf8 aus. Da hatte ich aber noch keine Umlaute drinn (zufällig) Neuerdings wird utf16 ausgespuckt, was mir eher zufällig auffiel. Es wird nirgendwo ein encoding gesetzt, scheint alles elektrisch zu gehen ... Nach ein wenig forschen habe ich gemerkt, dass generell alle Umlaute dieses Problem haben, hat nix mit Enumeration zu tun....
Jens: Wir brauchen die relevanten Teile deiner XML-Datei und deines Schemas um das genaueres zu sagen.
Was genau?
Stückel Schema:
<?xml version="1.0" encoding="UTF-16"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:element name="Personenliste"> .... <xs:element name="Kundenklasse"> xs:annotation xs:documentationPrivat- oder Geschäftskunde</xs:documentation> </xs:annotation> xs:simpleType <xs:restriction base="xs:string"> <xs:enumeration value="Privatkunde"/> <xs:enumeration value="Geschäftskunde"/>
Ich hoffe, das Schema ist auch in UTF-16, wie du es oben schreibst ???
Sowas geht uebrigens gut mit jEdit, der zeigt das Encoding des Textes an und du kannst das auch umstellen, und so einen Text umwandeln.
</xs:restriction> </xs:simpleType>
</xs:element>
.....
Stückel XML:
<?xml version="1.0" encoding="UTF-16" standalone="no" ?>
<Personenliste xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://intern.cyberport.de/intranet/specials/schemas/person.xsd">
.....
<Kundenklasse>Geschäftskunde</Kundenklasse> ...
Gleiche Frage wie oben: Ist die Datei auch UTF-16, wie angegeben ? Nicht das du fleissig UTF-16 reinschreibst, aber deine Zeichen ISO-8859-1 sind.
in XMLSPY: <Kundenklasse>Gesch?skunde</Kundenklasse>
Da stimmt schon was nicht.
Muss ich jedes Stückerll Text vom einfügen in das XML-File irgendwie UTF-encoden?
Wenn du einen normalen Text-Editor nimmst, ja. Der kann ja nur ISO-8859-1, da musst du also aus deinen Umlauten erst die ISO-8859-1 Zeichen machen, die als UTF-16 interpretiert das Zeichen ergeben, das du haben willst. Das geht aber nicht immer und macht dir unnoetig Arbeit. Da alles XML-Werkzeuge mindestens ISO-8859-1, UTF-8 und UTF-16 unterstuetzten sollten, kannst du auch einfach in ISO-8859-1 schreiben. Alternativ suchst du dir einen Editor, der im Encoding deiner Wahl speichern kann. Ich habe mit jEdit und XML gute Erfahrungen gemacht.
Ich habs schon mal versucht, aber dabei kam wohl das Doppelencoduíng zustande ...
Mit freundlichen Grüßen
Jens Puruckherr
Deine restlichen Versuche deuten auch alle darauf hin, dass du ganz kraeftig mit Encoding-Problemen kaempfst ... Da hilft nur eines: Jedes einzelne Stueck Text anschauen und feststellen, ob das was als Zeichen drin stehen soll, auch mit dem richtigen Encoding (sprich Bitmuster) drinsteht.
MfG
Jens