/ / Erfordert eine Anzahl von Nachkommastellen mit einem XML-Schema - xml, xsd

Erfordert eine Anzahl von Nachkommastellen mit einem XML-Schema - xml, xsd

Ich möchte die Anzahl der Nachkommastellen einer Zahl auf genau 2 beschränken.

Zum Beispiel - 1.00 ist gültig, aber 1, 1.0 und 1.000 sind alle ungültig.

Dies ist eine ähnliche Frage: Geben Sie die Anzahl der Dezimalstellen eines xs: decimal in einem XML-Schema an
und das war die Antwort:

<xs:simpleType name="twoPlacesDecimal" id="twoPlacesDecimal">
<xs:restriction base="xs:decimal">
<xs:fractionDigits fixed="true" value="2" />
</xs:restriction>
</xs:simpleType>

Leider beschränkt dies nur die Anzahl der Dezimalstellen auf 2 und erlaubt Zahlen mit null oder einer Nachkommastelle.

Antworten:

2 für die Antwort № 1

Wenn ich das in der Vergangenheit gemacht habe, habe ich einen Regex-Matcher verwendet. Der Regex, den Sie verwenden können, ist ungefähr so:

<xsd:simpleType name="exactlyTwoAfterDecimal">
<xsd:restriction base="xsd:token">
<xsd:pattern value="^-?d+.dd$"/>
</xsd:restriction>
</xsd:simpleType>

3 für die Antwort № 2

Ich glaube nicht, dass du das mit dem tun kannst total und fractionDigits Einschränkungen, aber es kann möglich sein, mit einer Regex-Muster-Beschränkung, etwa wie folgt:

<xs:restriction base="decimal">
<xs:pattern value="[+-]?d+.d{2}"/>
</xs:restriction>

3 für die Antwort № 3

Sie können die Anzahl der Dezimalstellen erzwingengenau zwei mit einer Regex, aber ist das klug? Sie machen das Leben schwieriger für jeden, der Dokumente erzeugt, die diesem Schema entsprechen sollen. Zum Beispiel werden sie nicht in der Lage sein, die Standard-Serialisierung von XSLT oder XQuery zu verwenden, sondern sie müssen ihre eigenen schreiben. Ist es nicht besser, die Spezifikation zu ändern, um ein bisschen liberaler zu sein, was es akzeptiert?