Ich versuche einen Elementtyp in XSD zu definieren, für den ich ein optionales Attribut haben möchte, das, wenn es vorhanden ist, entweder ein float enthalten kann oder leer (aber immer noch vorhanden).
d. h .:
%Vor%Benötigt "Fixieren", um alle folgenden xml zuzulassen: -
%Vor% Der einzige Weg, den ich sehen kann, ist, den Typ in xs:string
zu ändern und xs:restriction
mit einem regulären Ausdruck zu verwenden. Aber das scheint mir nicht sehr ideal zu sein. Gibt es einen besseren Weg?
Und ich habe , um diese Variationen des xml zu unterstützen - das Programm und existierende xml sind Legacy, und ich versuche ein Schema zurückzuschreiben, um den unzähligen Variationen zu entsprechen, die ich sehe was wir als gültiges xml betrachten müssen.
Ich denke nicht, dass es einen Weg gibt, dies zu handhaben und xs:float
zu verwenden. Grundsätzlich kommt es darauf an, dass leere Strings keine gültige Zahl sind. Sie würden normalerweise entweder einen Wert von 0 erwarten oder das Element würde ganz fehlen. Es gibt eine gute Erklärung als Antwort auf die folgende Frage:
Leere Elemente für primitive Datentypen, die in XSD verboten sind
Es scheint, dass die Option, xs: string und eine regexp zu verwenden, Ihr bester Plan sein könnte.
Wenn Sie lieber ein Element als ein Attribut verwenden würden, könnten Sie das xs: float nillable machen. Auf diese Weise können Sie das xsi: nil="true" in Ihrem Instanzdokument verwenden, um anzugeben, dass das Element keinen Wert hat:
%Vor%Keine Entsprechung für Attribute.
Tags und Links xsd