ThomasM: XML: Entity in externer DTD

Beitrag lesen

Hallo Michael,

Außerdem würde ich gern wissen, wie man ein Attribut als "Default" setzen kann, in dem Fall bei Telefonnummer das Attribut privat.

Das sieht in der DTD richtig aus.

<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE Uebung2Aufgabe3dtd SYSTEM "Uebung3 Aufgabe 2.dtd">

^^^ Hier gehört das Wurzelelement hin, also:

<!DOCTYPE Personeninformationen SYSTEM "Uebung3 Aufgabe 2.dtd">

<Personeninformationen> <Person matrNr="000001">

000001 ist kein gültiger ID-Wert, soll dieser beibehalten werden ggf. in der DTD den Typ auf CDATA ändern.

  <Name> Peter </Name>
  <Vorname> Hans </Vorname>
  <PLZ> 01234 </PLZ>
  <Ort> Buxtehude </Ort>
  <Straße> Kartoffelecke 5 </Straße>
  <Telefonnummer> 0015456833 </Telefonnummer>
  <Hochschule> &HL; </Hochschule>

Hochschule ist hier lt. DTD nicht erlaubt, also ergänzen:

<!ELEMENT Person (Name,Vorname?,PLZ,Ort,(Straße|Postfach),Telefonnummer*,Hochschule)+>

</Person>

...

<!ENTITY HL SYSTEM "Hochschule Lausitz (FH) &#8722; University of Applied Sciences"> <!ENTITY BTU SYSTEM "Brandenburgische Technische Universität Cottbus &#8722; Brandenburg University of Technology">

SYSTEM bedeutet Verweis auf eine externe Datei, etwa:

<!ENTITY HL SYSTEM "text1.txt"> <!ENTITY BTU SYSTEM "text2.txt">

und in den Textdateien dann am besten UTF-8-kodiert speichern:

Hochschule Lausitz (FH) − University of Applied Sciences

bzw.

Brandenburgische Technische Universität Cottbus − Brandenburg University of Technology

Allerdings braucht man zur Anzeige der Inhalte auch validierende Parser, welche in aktuellen Browsern nicht verfügbar sind. Firefox sagt dazu: "XML-Verarbeitungsfehler: Nicht definierte Entität".

Neuere IEs können das nur noch im Kompatibilitätsmodus (F12 --> IE8 auswählen).

Grüße, Thomas