Och Leute, die DTD muss ich ja erst noch schreiben und genau da liegt ja das Problem, bzw. da ist es mir aufgefallen.
Also es sieht etwa so aus:
<!ELEMENT DatabaseTable (Name, Columns)>
<!ELEMENT Name (#PCDATA)>
<!ELEMENT Columns (Column*)>
<!ELEMENT Column (Name, Type, MaxLength, IsNullable,
IsPrimaryKey, DefaultValue , Description)>
Frage ist halt nun, ob das Element "Name" in "Column" sich auf das darüber liegende "Name" beziehen kann.
Einmal ist halt der Tabellenname gemeint, das andere mal der SPaltenname.
Für Type, Maxlength, usw, fehlt da jetzt noch die DTD, aber das ist alles #PCDATA und hier nicht weiter wichtig.
Und wenn es eben zwei Elemente "Name" in verschiedenem Kontext gibt, ob das dann gültig wäre, ist die Frage.
Oder wenn beide Element den gleichen Namen haben, aber unterschiedliche Kindelemente, beispielsweise so:
<!ELEMENT Name (#PCDATA)>
<!ELEMENT Name (Vorname, Nachname)>
Kann man das so notieren?
Es ist ja dann nicht mehr eindeutig, wenn ich dann schreibe:
<!ELEMENT DatabaseTable (Name, Columns)>
da man nicht weiß, auf was sich das "Name" nun bezieht. Oder ist das dann egal und es ist beides gültig?
MfG!
Hallo,
habe eine kleine Frage zum Aufbau eines gültigen XML Dokuments:
Kann ein Element mit dem GLEICHEN Namen öfters in verschiedenem Kontext bzw. verschiedenen Kind/Elternelementen genutzt werden?
Natürlich.
Also ich möchte eine Datenbanktabelle beschreiben. Den Namen der Tabelle beschreibe ich mit dem Element <name>...</name>.
Jede Spalte der Tabelle enthält (bisher) jedoch auch das Element <name>
Ist das gültig?
Das kann dir niemand sagen, wenn du die DTD oder Schema dazu nicht bekanntgibst.
Also es sieht etwa so aus:
<databasetable>
<name>Beispiel</name>
<columns>
<column>
<name>Test</name>
<type>varchar</type>
...Hier ist zwar der Inhalt noch gleich, nämlich string bzw. #PCDATA, aber mal angenommen, man hätte noch weitere Kindelemente in einem der beiden <name> elemente.
Dann gäb es doch Probleme, bei der DTD.Also ist das oben valide?
Das kann dir niemand sagen, wenn du die DTD oder Schema dazu nicht bekanntgibst.
Grüße
Thomas