Xml ANSI X3.9的XSD验证

Xml ANSI X3.9的XSD验证,xml,validation,xsd,Xml,Validation,Xsd,我正试图创建一个XSD文件,用于验证DICOM中定义的十进制字符串(DS): 这基本上是一个16字节的限制,特殊值-Inf、+Inf和NaN是不可接受的 到目前为止,我试过: <xsd:simpleType name="DecimalString"> <xsd:restriction base="xsd:decimal"> <xsd:totalDigits value="16"/> </xsd:restriction> </xs

我正试图创建一个XSD文件,用于验证DICOM中定义的十进制字符串(DS):

这基本上是一个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>

根据: