# XSD in einer choice mehrmals das selbe element möglich



## Raiden (2. Apr 2014)

Hallo ich bin auf ein problem gestoßen und weiß nicht so recht wie ich es lösen kann.

Ich habe ein XML Schema wo ich entweder eine komplette person erfassen kann oder jedes element einzeln.
wenn ich es dann aber die XML Datei mit dem Schema validieren möchte bekomme ich einen Fehler ausgegeben.
Es soll halt unterschieden werden ob ich 

Max Mustermann
01.01.2000

oder 

Max
Mustermann
01.01.2000

bekomme
ein kleiner code schnipsel:
[XML]
<xsd:complexType name="Person">
    <xsd:sequence>
      <xsd:choice>
        <xsd:sequence>
          <xsd:element name="vorname" type="xsd:string" minOccurs="0"/>
          <xsd:element name="nachname" type="xsd:string" minOccurs="0"/>
         <xsd:element name="geburtsdatum" type="xsd:string" minOccurs="0"/>
        </xsd:sequence>
        <xsd:sequence>
          <xsd:element name="name_komplett" type="xsd:string" minOccurs="0"/>
       <xsd:element name="geburtsdatum" type="xsd:string" minOccurs="0"/>
        </xsd:sequence>
      </xsd:choice>
    </xsd:sequence>
[/XML]

hoffe mein anliegen ist verständlich :/

besten Dank vorab.


----------



## fisherman (2. Apr 2014)

Wenn du die Fehlermeldung dazuschreibst, lässt sich das Ganze vielleicht auch nachvollziehen.
Ich nehme an, die Fehlermeldung gibt an, mit welcher Stelle der XML-Datei das Schema nicht einverstanden ist.


----------



## Raiden (3. Apr 2014)

Da hast du allerdings recht... sorry das ich den nicht schon von anfang an mit beigefügt habe.

"[...Pfad... und stelle des Fehlers] element complexType: Schemas parser error : complex type 'Person': The content model is not determinist. [...] failed to compile "

Wenn ich das  [XML]<xsd:element name="geburtsdatum" type="xsd:string" minOccurs="0"/>[/XML]in einem oder beiden Fällen auskommentiere funktioniert es.


----------



## fisherman (3. Apr 2014)

W3C schreibt dazu: 





> The content of an element matches a content model if and only if it is possible to trace out a path through the content model, obeying the sequence, choice, and repetition operators and matching each element in the content against an element type in the content model. For compatibility, it is an error if the content model allows an element to match more than one occurrence of an element type in the content model.


Link

_geburtstagdatum_ kommt zweimal vor. Dein Schema kann dazu keinen eindeutigen Pfad auflösen. D.h. du müsstest dein Schema so anpassen, dass du _geburtstagdatum_ mehrfach verwenden kannst und der Pfad zum Element trotzdem eindeutig bleibt.


----------



## Raiden (3. Apr 2014)

Ah okay, danke dann schaue ich mir das mal genauer an und hoffe das ich es hinbekommen den Pfad einditugen für beide Elemente zu machen.


----------



## Raiden (3. Apr 2014)

Der Doppelpost tut mir leid, aber ich komme da gerade nicht auf einen grünen zweig...

ich bin zwar nun soweit das ich verstanden habe wo der fehler liegt. Also das das Schema nicht wissen kann um welches geburtsdatum es konkret geht da die sequenz nicht weiter abgearbeitet wird und ich nun deutlich machen muss das

das geburtsdatum sowohl zu vorname un dnachname gehören kann oder halt nur zum namen_komplett.

also quasi (geburtsdatum(vorname&nachname|name_komplett)) nur wie, ich werd da irgendwie nicht schlau draus


----------

