XSD SCHEMA: Как указать количество цифр в значении?

StackOverflow https://stackoverflow.com/questions/4228607

  •  26-09-2019
  •  | 
  •  

Вопрос

Я хочу ограничить количество цифр, разрешенных в элементе до 6:

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

Спецификация форматирования поля составляет 6 цифр, нулевой, числовой.

Я прочитал, что я мог бы использовать то totalDigits Ограничение, основанное на:

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>

Какое предложенное ограничение для указания точного количества цифр разрешено?

Это было полезно?

Решение

Вам нужно использовать xs:pattern и предоставить регулярное выражение, чтобы ограничить его номеру.

<xs:simpleType name="AccountNumber">
   <xs:restriction base="xs:int">
      <xs:pattern value="\d{6}"/>
   </xs:restriction>
</xs:simpleType>

Другие советы

Это самый простой способ

    <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> 

Я бы, вероятно, использовал XS: Mininclusive и xs: maxinclusive..

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top