XSD in einer choice mehrmals das selbe element möglich

Raiden

Mitglied
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.
 
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.
 
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.
 
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.
 
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.
 
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 🙁
 

Zurück
Oben