Braindump SS2010 Aufgabe 7 XML

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Braindump SS2010 Aufgabe 7 XML
Hier mal mein Lösungsansatz. Bin mir aber sehr unsicher.

<!DOCTYPE plugins[

]>


Ich hätts auch so gemacht, aber XML ist wirklich nicht meine Sache…
was mir nur auffällt ist dass die dicke Klammer laut Skript da nicht hingehört wenn eine Attlist folgt. Sinn macht es für mich aber auch keinen nachdem hinter Attlist auch keine zweite geschlossen wird.


Mit einer Wahrscheinlichkeit von 99% ein Tippfehler im Script. Denn das ist Quatsch ;).
Man kann die Reihenfolge auch verändern. Man könnte beispielsweise erst alle ELEMENT-Elemente definieren und dann erst alle ATTLIST(Also gruppiert). Wäre irgendwie ein bisschen seltsam, wenn dann etliche ELEMENT-Elemente keine schließende Klammer hätten. Denn die gehört da ziemlich sicher hin ;).

Wer mir nicht glaubt, kann ja bspw. mal hier nachlesen: http://www.w3schools.com/dtd/default.asp
Ihr werdet dort keine nicht geschlossenen spitzen Klammern finden ;).


Ok danke, war auch der Meinung dass das Unsinn ist, aber der hat das in JEDEM Beispiel gemacht. Und ich merk mir sowas :blush:


copy&paste fail? Auf Folie 9.32 ist es richtig, dass ist dem Schriftsatz nach copy&paste aus einer anderen Quelle. Mal im Ernst, mich würde ja echt mal interessieren was ein guter Plagiatschecker zu den Vorlesungsfolien sagt, mir kommt da vieles recht reinkopiert vor… (Hoffentlich von eigenem Material oder mit ausdrücklicher Gehmigung :wink: )


ich hätt mal ne Frage dazu.

Woher weiß man denn hier jetzt, dass da das rein muss?

Also zum einen wie erkennt man, wo die ATTLIST hin muss (hab das wohl nicht so verstanden) und woher weiß man in dem beispiel, dass da #REQUIRED hin muss?


Der Unterschied ist vorallem, dass du bei einem Element nameE(#PCDATA) den Inhalt nach Auswertung des XML Dokuments siehst und bei einem „Attlist nameE nameA CDATA #“ den Inhalt nicht sehen wirst. (Attlistelemente stehen innerhalb der Klammern und sind Metadaten) Bsp:

während:

<!DOCTYPE plugins[
<!ELEMENT     extensions(command)>
<!ATTLIST      extensions point CDATA #REQUIRED>
<!ELEMENT     command(#PCDATA)>

]>

ja so aussieht:

foo

Auswertung:
foo


während:

<!DOCTYPE plugins[
<!ELEMENT     extensions(command, point)>
<!ELEMENT     point (#PCDATA)>
<!ELEMENT     command(#PCDATA)>

]>

org.eclipse.ui.commons foo

Auswertung:
org.eclipse.ui.commons
foo


hmm irgendwie versteh ichs immer noch nicht.

wenn ich jetzt das gegeben hab und soll ne DTD dazu schreiben:

foo

dann weiß ich ja dass foo in der auswertung kommt.
dann geh ich von oben nach unten und fang an mit DOCTYP für das plugins
und dann gehe ich jede zeile ab und schreib immer die jeweilige zeile und dahinter die zeile darunter in klammern. und # pcdata schreib ich nur dahin wo quasi das was nach der auswertung stehen bleibt in die klammer müsste.

wenn ich das schema so durchziehe erhalte ich:

<!DOCTYPE plugins[
 <!ELEMENT     extension point=blubb(command)>
 <!ELEMENT     command(#PCDATA)>

]>

was ja irgendwie sinnfrei is.
Also liegt das ATTLIST an dem point=irgendfwas… ?

woran erkenn ich denn wann ich ein ATTLIST reinmachen muss?


Du hast hier dein Attribut einfach im Element deklariert, keine Ahnung ob soetwas überhaupt geht (ich kanns mir nicht vorstellen) aber wenn ich das Umsetzten sollte würde das dann so aussehen:

foo

also muss ich das Attribut immer als ATTLIST schreiben. Aber wieso muss hier REQUIERED hintendran? woran erkenne ich dass das vorhanden sein muss?


#required #fixed und #implied sind deine Optionen und im Zweifelsfall nehm ich einfach immer #required. Vorallem weil wir hier ja nur eine Ausarbeitung dieses Dokumenttyps haben und damit nicht sehen können welches wir nehmen sollen.

/edit

So mach ich es zumindest, aber XML und UML sind nicht gerade meine Lieblingsbereiche hier. :scared:


okay, also echt fast beliebig wählen.

Okay, danke. Ja weil sehen kann mans ja irgendwie nicht.

Danke!