Xml 如何在XSD中设置货币限制?

Xml 如何在XSD中设置货币限制?,xml,xsd,Xml,Xsd,我有一个关于XSD的问题 假设我的货币是500美元 如何设置值应在$0.00至$1000.00范围内的限制 我不能直接使用xsd:float,因为前面有美元符号 我该怎么办?非常感谢您的帮助。如果您将内容视为一个数字(例如:xs:decimal),您可以限制最大值和最小值: <xs:element name="money"> <xs:simpleType> <xs:restriction base="xs:decimal">

我有一个关于XSD的问题

假设我的货币是500美元

如何设置值应在$0.00至$1000.00范围内的限制

我不能直接使用xsd:float,因为前面有美元符号


我该怎么办?非常感谢您的帮助。

如果您将内容视为一个数字(例如:
xs:decimal
),您可以限制最大值和最小值:

<xs:element name="money">
    <xs:simpleType>
        <xs:restriction base="xs:decimal">
            <xs:pattern value="\d*\.\d{2}"/>
            <xs:maxInclusive value="1000" />
            <xs:minInclusive value="0" />
        </xs:restriction>
    </xs:simpleType>
</xs:element>
<xs:element name="money">
    <xs:simpleType>
        <xs:restriction base="xs:string">
            <xs:pattern value="\$\d{1,4}\.\d{2}"/>
        </xs:restriction>
    </xs:simpleType>
</xs:element>
这将允许值介于$0.00和$9999.99之间,但它不是验证数字,而是验证字符串。这意味着它还将验证$0001.00等值


如果您决定分别处理数字和字符串,将数字存储在一个属性或简单内容中,将字符串存储在另一个属性或简单内容中,请查看此问题的答案:

首先,如果必须添加$符号,则基值必须是字符串。这里举个例子,

 <xs:simpleType name="decimalType">
    <xs:restriction base="xs:string">
       <xs:pattern value="\$\d{1,4}\,*\d*" />
    </xs:restriction>
 </xs:simpleType>

最好将数字单独存储在另一个属性中或作为简单内容。例如,您可以有
,`。然后,您可以更轻松地验证字符串和数字。如果您需要处理字符串“$500.00”,则可以使用正则表达式限制(请参见
)也可以参见:如果您决定使用模式。