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是同一个数的不同写法