Hallo zusammen, bin gerade dabei mich in DTD zur Validierung von XML-Dateien einzulesen und hätte eine Frage dazu. Ist es möglich innerhalb einer DTD Elemente anderer DTDs zu referenzieren? Zum Hintergrund: Ich habe ein fest vorgegebens DTD, das die Struktur eines Dokuments vorgibt. Jetzt sollen Teile dieser Dokumentenstruktur in andere Dateien ausgelagert werden und dann per Perl-Script an die entsprechende Stelle eingefügt werden. Das funktioniert auch schon soweit und das resultierende XML kann genauso wie das Ausgangsdokument gegen das DTD validiert werden. Jetzt möchte ich aber auch noch den ausgelagerten Teil gegen ein DTD validieren. Dafür schreibe ich mir ein eigenes DTD. Und hier würde ich gerne Teile des fest vorgegebenen DTDs referenzieren (falls sich im fest vorgegebenen DTD doch mal etwas ändert muss ich das natürlich mitbekommen). Als Beispiel habe ich fünf Dateien angehangen: - compDtd.dtd ist der fest vorgegebene DTD - myDtd.dtd ist mein neu erstelltes DTD - partXml.xml ist der ausgelagerte Teil des XML-Dokuments - result.xml ist das von dem Perl-Script prozessierte XML-Dokument - xml.xml ist das XML-Dokument, in dem der 'Marker' durch das Perl-Script ersetzt wird In der myDtd.dtd ist jetzt die Definition des indexes die gleiche wie im compDtd.dtd und genau das möchte ich verhindern. Danke fürs Lesen und viele Grüße
Hugo schrieb: > bin gerade dabei mich in DTD zur Validierung von XML-Dateien einzulesen Spar dir die Zeit und nutz' gleich XSDs ;) Hugo schrieb: > Ist es möglich innerhalb einer DTD Elemente anderer DTDs zu > referenzieren? http://xml.silmaril.ie/dtdincludes.html
Läubi .. schrieb: > Spar dir die Zeit und nutz' gleich XSDs Geht nicht, das DTD ist von der Firma vorgegeben... Läubi .. schrieb: > http://xml.silmaril.ie/dtdincludes.html Danke für den Link. Da steht zwar auch was, dass man Teile eine DTDs einbinden kann, aber entweder bin ich blind oder er bindet doch das ganze DTD ein (was ich an der Stelle ja nicht machen kann). Gibt es da eine spezielle Syntax um nur einen Teil des DTDs einzubinden (also nur <index> von compDtd.dtd)? Danke und viele Grüße
Hi, nochmal ich. Vergiss den letzten Post, ich habe den Fehler gefunden - er lag nicht im DTD sondern im XML-Dokument. Danke für die Hilfe und viele Grüße
puh... dan mußt du das so klein "hacken" das es keine Konflikte gibt, DTDs sind halt in vielem Beschränkt weswegen das: Michael K. schrieb: > Läubi .. schrieb: >> Spar dir die Zeit und nutz' gleich XSDs > Geht nicht, das DTD ist von der Firma vorgegeben... dein eigentliches Problem sein wird ;) Wieso kannst du nicht das "Teil DTD" in einer eigenen Datei auslagern und in der "HauptDTD" diese komplett einbinden? Die Rootelemente dann ggf. in jeweils eigenen Dateien?
Hi, Läubi .. schrieb: > Wieso kannst du nicht das "Teil DTD" in einer eigenen Datei auslagern > > und in der "HauptDTD" diese komplett einbinden? Weil der "HauptDTD" nicht von mir erstellt wird und firmenweit (große Firma!) eingesetzt wird. Der gilt nicht nur für die von mir zu erstellenden Dokumente sondern für alles mögliche andere auch noch. Hab aber gesehen, dass das kein Problem ist, war wie geschrieben ein Problem der XML-Datei, nicht des DTDs. Viele Grüße
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.