# Warum passt diese DTD-Zeile nicht zu diesem Dokument?



## Tobias (26. Feb 2005)

Hi,
ich habe ein Dokument, das gegen eine DTD evaluiert wird. Leider beschwert sich mein Editor, das die beiden nicht zusammenpassen - da ich die DTD entwickle, hab ich ja schon mit sowas gerechnet. Ich finde aber den Fehler nicht!

Hier das Dokument (Elemente der zweiten Ebene hab ich gekürzt):


```
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE collaboration SYSTEM "collaboration-0.0.1c.dtd">

<collaboration>
        <comment>Version 0.0.1c</comment>

        <startWorkflow>
                ...
        </startWorkflow>

        <var name="testVar1" type="Integer" value="3" />
        <var name="testvar2" type="String" value="Hallo!" />

        <comment>Dies ist ein Kommentar</comment>

        <if id="erstesIf">
                ...
        </if>

        <comment ref="erstesIf">Dies ist ein Kommentar zum if-Block "erstesIf"</comment>

        <set name="testVar1" value="2" />

        <while>
                ...
        </while>

        <set name="testVar2">
                ...
        </set>

        <wait>
              ...
        </wait>

</collaboration>
```

Der Inhalt des Root-Elementes <collaboration> wird durch folgende DTD-Zeile definiert:


```
<!ELEMENT collaboration ( (comment* | startWorkflow?), (comment* | startWorkflow* | endWorkflow* | var* | set* | if* | while* | wait*) ) >
```

Meine Absicht war es, eine Head-Body-Aufteilung zu erzwingen, wie sie in HTML auch Usus ist. Im Head darf ein oder mehrere Kommentare stehen, sowie kein oder maximal ein <startWorkflow>-Element. Im Body dürfen alle Elemente stehen und zwar beliebig oft. Meiner Meinung nach passen mein Anspruch und meine Definition durchaus zusammen, nach Meinung meines Rechners nicht - er wird wohl Recht haben... 

mpG
Tobias


----------



## Bleiglanz (26. Feb 2005)

ahhhh welche Zeile, hast du kein Tool das dir sagt wo der fehler ist


(comment* | startWorkflow?)

ENTWEDER ODER ABER NICHT BEIDES


----------



## foobar (26. Feb 2005)

Wenn alle Elemente bleliebig oft und beliebig geschachtelt werden dürfen, dann macht man das so:

```
(comment | startWorkflow | endWorkflow | var | set | if | while | wait)*
```


----------



## Tobias (26. Feb 2005)

@Bleiglanz: Nein, der zeigt mir nur das Element an, das die Bedingungen nicht erfüllt - und das ist wie gesagt das Wurzelelement. Aber deine Anmerkung war (wie immer) hilfreich, wenn auch rüde. Danke.

@foobar: Wo du Recht hast, hast du Recht.

Thema erledigt.

mpG
Tobias

P.S.: Wo ist denn der Button zum "Häkchen hinter Titel"-Machen?


----------



## stev.glasow (26. Feb 2005)

Links unten, ein paar Zentimeter unter "Dieses Thema beobachten" - ist der bei dir nicht zu sehen?


----------



## Tobias (27. Feb 2005)

Nein.







mpG
Tobias


----------



## Roar (27. Feb 2005)

nein, nicht beim schreiben, sondern bei der thread ansicht. unter allen posts links, genau unter "java-forum.org Foren-Übersicht -> XML und Co."


----------



## Tobias (27. Feb 2005)

Alles klar, habs gefunden.

mpG
Tobias


----------

