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

DTD/XML Syntax

frznx

Neues Mitglied
Ich muss folgenden Code so ergänzen bzw verändern dass ein valides XML Dokument entsteht, jedoch dürfen keine Elemente entfernt werden.

Ich stehe bei dieser Aufgabe ziemlich auf dem Schlauch.

Ich habe den Code durch den XML Validator überprüft, und er zeigt mir keine Fehler bzw dass es valide ist.
Kann mir vllt jemand einen Tipp geben wo ich hier was ändern muss?

Danke im Voraus.


Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE Firma [ 
	  <!ELEMENT Firma (Name,Adresse+)> 
	  <!ELEMENT Name (#PCDATA)> 
	  <!ELEMENT Adresse (Strasse,Nr,PLZ,Ort,Kommentar?)> 
	  <!ATTLIST Adresse Typ (Privat|Buero|Postfach) #REQUIRED > 
	  <!ATTLIST Adresse AdresseID ID #REQUIRED > 
	  <!ELEMENT Strasse (#PCDATA)> 
	  <!ELEMENT PLZ (#PCDATA)> 
	  <!ELEMENT Ort (#PCDATA)> 
	  <!ELEMENT Kommentar (#PCDATA)> 
	]>
<Firma>
  <Name>Hochschule Offenburg</Name>
  <Adresse AdresseID="12">
    <Strasse>Badstrasse</Strasse>
    <Nr>24</Nr>
    <PLZ>77652</PLZ>
    <Ort>Offenburg</Ort>
    <Ort>Suedstadt</Ort>
  </Adresse>
  <Adresse AdresseID="12">
    <Postfach>0815</Postfach>
    <PLZ>77658</PLZ>
    <Ort>Offenburg</Ort>
  </Adresse>
</Firma>
 
Werbung:
Darauf lässt sich ja aus der Aufgabenstellung schließen, jedoch sehe ich nicht was an der DTD falsch deklariert ist bezüglich der XML...
 
Werbung:
Ich sage dir mal einen „Fehler“:

Das Element Adresse muss etwa ein Element Nr enthalten, was das zweite Element im Dokument aber nicht tut.


Edit: Visualisierung der derzeitigen DTD angehängt. Man beachte auch den leeren Kasten und dessen Ursache.
 

Anhänge

  • bla.jpg
    bla.jpg
    14 KB · Aufrufe: 5
Zuletzt bearbeitet:
danke, muss ich hier also lediglich die Quantifikatoren richtig setzen?

edit: da fällt mir dann auf, dass "Postfach" garnicht aufgeführt ist.

richtig?
 
Zuletzt bearbeitet:
Die Grafik meint Nr, aber Postfach fehlt auch, ja.

Da sind so etliche Dinge im Argen (außer den Quantifikatoren). Ich will dir die aber nicht alle vorsagen, weil du es dann vermutlich nicht lernst. Ich kann dir aber nachher sagen, ob du alles gefunden hast.

Wenn du absolut keine Idee hast, schnapp dir einen DTD-Validator und jag die Datei dort durch.

XMLStarlet scheint recht nett zu sein.

- XMLStarlet Command Line XML Toolkit: News
 
Werbung:
ok, werde mich dann wohl noch dransetzen müssen.

Vielen Dank für deine Hilfe, werde dann heute Abend posten wie weit ich gekommen bin.

Edit: so habe nun nochmal überarbeitet und hoffe ich habe diesmal alle Fehler gefunden. (Rot), so ein Validator war für mich keine Option, da ich es verstehen wollte :p dennoch danke für den Tipp.
Wäre super wenn du mir sagen könntest ob ich nun alle Fehler korrigiert habe :p

PS: liegt vielleicht ein Fehler bei dieser Adress ID vor? macht mich etwas verwunderlich, dass da kein Fehler drin stecken soll^^

Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><!DOCTYPE Firma [ 
      <!ELEMENT Firma (Name,Adresse+)> 
      <!ELEMENT Name (#PCDATA)> 
      <!ELEMENT Adresse (Straße,[COLOR=#b22222]NR,PLZ+,ORT+,Postfach[/COLOR]) 
      <!ATTLIST Adresse Typ (Privat|Buero|Postfach) #REQUIRED > 
      <!ATTLIST Adresse AdresseID ID #REQUIRED > 
      <!ELEMENT Strasse (#PCDATA)> 
[COLOR=#b22222]      <!ELEMENT NR (#PCDATA)>[/COLOR]
      <!ELEMENT PLZ (#PCDATA)> 
      <!ELEMENT Ort (#PCDATA)>
[COLOR=#b22222]      <!ELEMENT Postfach (#PCDATA) [/COLOR]
      <!ELEMENT Kommentar (#PCDATA)> 
    ]>
<Firma>
  <Name>Hochschule Offenburg</Name>
  <Adresse AdresseID="12">
    <Strasse>Badstrasse</Strasse>
    <Nr>24</Nr>
    <PLZ>77652</PLZ>
    <Ort>Offenburg</Ort>
    <Ort>Suedstadt</Ort>
  </Adresse>
  <Adresse AdresseID="12">
    <Postfach>0815</Postfach>
    <PLZ>77658</PLZ>
    <Ort>Offenburg</Ort>
  </Adresse>
</Firma>
 
Zuletzt bearbeitet:
Es heißt „Strasse“ (nicht „Straße“) und „Nr“ (nicht „NR“) und „Ort“ (nicht „ORT“).

Nr ist optional.

Ergibt es Sinn, mehr als eine PLZ zu haben?

Kommentar? würde ich bei Adresse beibehalten.

Das Typ-Attribut bei Adresse ist #REQUIRED, muss also gesetzt sein.

AdresseID ist vom „Typ“ ID. Das heißt, jeder Wert darf nur einmal vorkommen.
 
war wohl etwas zu blöd für diese Aufgabe :/, dennoch vielen Dank nochmal für deine Unterstützung ... :) *schäm*
 
Werbung:
Zurück
Oben