XSD: Attribut auf xs: float oder "" beschränken

8

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.

    
slippyr4 26.07.2011, 15:39
quelle

3 Antworten

1

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.

    
Jon Egerton 26.07.2011, 15:55
quelle
5

Sie können einen benutzerdefinierten Typ dafür definieren, indem Sie float und eine leere Zeichenfolge kombinieren:

%Vor%

Oder mit regExp:

%Vor%     
Victor 14.05.2015 16:16
quelle
4

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.

    
tom redfern 26.07.2011 18:40
quelle

Tags und Links