我正在尝试创建一个 XSD 文件来验证 DICOM 中定义的十进制字符串 (DS):
xsd:double
,限制为 16 个字节,特殊值 -Inf
、+Inf
和 NaN
是不可接受的。
到目前为止,我尝试过:
<xsd:simpleType name="DecimalString">
<xsd:restriction base="xsd:decimal">
<xsd:totalDigits value="16"/>
</xsd:restriction>
</xsd:simpleType>
但这不起作用,因为它不接受科学记数法(“E”或“e”符号)。我也尝试过:
<xsd:simpleType name="DecimalString">
<xsd:restriction base="xsd:double"/>
</xsd:simpleType>
但它不仅接受
NaN
/Inf
特殊值,而且也不允许指定 totalDigits
值 16。
如何在 XSD 中指定此类验证规则?
一个可能的解决方案可能是:
<xsd:simpleType name="DecimalString">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?"/>
<xsd:maxLength value="16" />
</xsd:restriction>
</xsd:simpleType>
基于: