代码之家  ›  专栏  ›  技术社区  ›  Ian Boyd

XSD schema:如何指定值中的位数?

  •  5
  • Ian Boyd  · 技术社区  · 14 年前

    我想将元素中允许的位数限制为6:

    <AccountNumber>123456</AccountNumber>
    <AccountNumber>999999</AccountNumber>
    <AccountNumber>000000</AccountNumber>
    

    字段格式规范为6位数字、零填充、数字。

    i read that i might want to use 这个 totalDigits 限制,基于:

    总位数 指定允许的确切位数。必须大于零

    所以我有一个简单的类型:

    <xs:simpleType name="AccountNumber">
       <xs:restriction base="xs:int">
          <xs:totalDigits value="6"/>
       </xs:restriction>
    </xs:simpleType>
    

    当它捕获无效数字时,例如:

    <AccountNumber>1234567</AccountNumber>
    <AccountNumber>0000000</AccountNumber>
    <AccountNumber></AccountNumber>
    

    它不会捕获无效的数字:

    <AccountNumber>12345</AccountNumber>
    <AccountNumber>01234</AccountNumber>
    <AccountNumber>00123</AccountNumber>
    <AccountNumber>00012</AccountNumber>
    <AccountNumber>00001</AccountNumber>
    <AccountNumber>00000</AccountNumber>
    <AccountNumber>0000</AccountNumber>
    <AccountNumber>000</AccountNumber>
    <AccountNumber>00</AccountNumber>
    <AccountNumber>0</AccountNumber>
    

    建议使用什么限制来指定允许的确切位数?

    3 回复  |  直到 14 年前
        1
  •  6
  •   Jeff Yates    14 年前

    你需要使用 xs:pattern 并提供正则表达式将其限制为数字。

    <xs:simpleType name="AccountNumber">
       <xs:restriction base="xs:int">
          <xs:pattern value="\d{6}"/>
       </xs:restriction>
    </xs:simpleType>
    
        2
  •  0
  •   Artur    10 年前

    这是最简单的方法

        <xs:element name="prodid">
         <xs:simpleType>
          <xs:restriction base="xs:integer">
           <xs:pattern value="[0-9][0-9][0-9][0-9][0-9]"/>
          </xs:restriction>
         </xs:simpleType>
        </xs:element> 
    
        3
  •  -1
  •   Anon    14 年前