XSD 中正则表达式的限制基础
Restriction's base for regex in XSD
我是 XML 的新手,想知道 XSD 文件中这些属性的限制基础是什么?字符串、正整数还是小数?
<xs:attribute name="sku" use="required">
<xs:simpleType>
<xs:restriction base="xs:positiveInteger">
<xs:pattern value="\d{5}"></xs:pattern>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="price" use="required">
<xs:simpleType>
<xs:restriction base="xs:decimal">
<xs:pattern value="\d+\.\d{2}"></xs:pattern>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
就个人而言,我倾向于怀疑使用正则表达式限制数字类型的尝试。
例如,模式 \d{5}
表明 01234 是合法的,但 1234 不是。这有一些实际问题,因为许多输出整数的应用程序可能更喜欢将其格式化为 1234。这也表明 01234 和 1234 不等价,这让我怀疑这是否真的是一个整数,或者只是一个由数字组成的字符串.添加其中两个值是否有意义?如果不是,我会质疑将其建模为整数是否正确。
(这里的一个经典示例是 phone 数字,其中前导零很重要,加法没有意义。因此,将 phone“数字”建模为整数是错误的。)
同样,我可以理解为什么您可能希望将值表示为 8.10 而不是 8.1,因为这是金额通常的书写方式。但是我感觉不对:如果是小数,那么8.10和8.1是同一个数的不同写法
我是 XML 的新手,想知道 XSD 文件中这些属性的限制基础是什么?字符串、正整数还是小数?
<xs:attribute name="sku" use="required">
<xs:simpleType>
<xs:restriction base="xs:positiveInteger">
<xs:pattern value="\d{5}"></xs:pattern>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="price" use="required">
<xs:simpleType>
<xs:restriction base="xs:decimal">
<xs:pattern value="\d+\.\d{2}"></xs:pattern>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
就个人而言,我倾向于怀疑使用正则表达式限制数字类型的尝试。
例如,模式 \d{5}
表明 01234 是合法的,但 1234 不是。这有一些实际问题,因为许多输出整数的应用程序可能更喜欢将其格式化为 1234。这也表明 01234 和 1234 不等价,这让我怀疑这是否真的是一个整数,或者只是一个由数字组成的字符串.添加其中两个值是否有意义?如果不是,我会质疑将其建模为整数是否正确。
(这里的一个经典示例是 phone 数字,其中前导零很重要,加法没有意义。因此,将 phone“数字”建模为整数是错误的。)
同样,我可以理解为什么您可能希望将值表示为 8.10 而不是 8.1,因为这是金额通常的书写方式。但是我感觉不对:如果是小数,那么8.10和8.1是同一个数的不同写法