XML Schema und date
edean
- xml
0 MudGuard
Ich erstelle gerade ein XML Schema und habe aktuell ein Problem, wenn ich einem Element den Typ "date" gebe, aber dieses Element nicht unbedingt Daten enthält.
Wird dieses Element im XML dann mit
<fooDate/>
eingetragen, schlägt natürlich die Validierung des XML fehl.
Also habe ich das entsprechende Schema folgendermaßen erweitert:
<xsd:element name="fooDate" type="xsd:date" minOccurs="0">
Jetzt kann das Element weggelassen werden, wenn es keine Daten enthält.
Das klappt soweit gut, aber es sind weitere Elemente enthalten, die ebenfalls keine Daten enthalten müssen, aber den type="xsd:string" haben.
Diese können mit
<fooText/>
im XML enthalten sein.
Mir persönlich gefällt diese unterschiedliche Handhabung nicht. Ein Element mit /, das andere muss weggelassen werden.
Das lässt sich auch in einer Doku schlecht beschreiben, finde ich.
Gleichzeitig sind Elemente enthalten, die Daten enthalten müssen. Ich kann also nicht die komplette Sequence mit beispielsweise minOccurs="0" weglassen.
Ich würde das gerne vereinheitlichen, habe aber keine Idee wie ich damit umgehen soll und bin daher für jeden Tipp dankbar.
Hi,
aber es sind weitere Elemente enthalten, die ebenfalls keine Daten enthalten müssen, aber den type="xsd:string" haben.
Diese können mit
<fooText/>
im XML enthalten sein.
Der Inhalt dieses Elements ist ein String der Länge 0. Das ist etwas anderes als kein String (wenn also das Element komplett fehlen würde).
Mir persönlich gefällt diese unterschiedliche Handhabung nicht. Ein Element mit /, das andere muss weggelassen werden.
Du siehst hier einen Unterschied, der nicht existiert.
Bei <fooDate/> ist der Inhalt leer, was aber kein gültiges Datum ist.
Bei <fooText/> ist der Inhalt ebenfalls leer - aber ein leerer String ist immer noch ein String.
Wenn Du kein Datum haben willst, mußt Du das fooDate-Element weglassen.
Ebenso mußt Du das fooText-Element weglassen, wenn Du keinen Text haben willst.
cu,
Andreas