Как установить минимальную длину для целого числа в XML-схеме? - PullRequest
4 голосов
/ 18 ноября 2008

Я нахожусь в процессе создания XML-схемы, и одним из моих значений является год. Поэтому я хотел бы убедиться, что все значения имеют ровно 4 символа. Для этого я использую следующий синтаксис:

<xs:element name="publish_year" maxOccurs="1">
  <xs:simpleType>
    <xs:restriction base="xs:positiveInteger">
      <xs:totalDigits value="4"/>
    </xs:restriction>
  </xs:simpleType>                                      
</xs:element>

Если я правильно понимаю «totalDigits», кто-то может передать значение «publish_year» в «2008» или «200». Оба будут действительны. Таким образом, как я могу структурировать свой XSD, чтобы обеспечить 4 цифры? На первый взгляд, я предполагаю, что использовал бы регулярное выражение, но я хотел бы знать, пропускаю ли я что-то, что уже запечено (например, "totalDigits")

UPDATE:

Я выбрал следующее решение. Это может быть излишним, но оно получает смысл:

<xs:simpleType>
    <xs:restriction base="xs:positiveInteger">
        <xs:totalDigits value="4" fixed="true"/>
        <xs:minInclusive value="1900"/>
        <xs:pattern value="^([1][9]\d\d|[2]\d\d\d)$"/>
    </xs:restriction>
</xs:simpleType>

Ответы [ 2 ]

7 голосов
/ 18 ноября 2008

А как насчет стоимости в качестве дополнительного ограничения?

( minInclusive - maxInclusive )

Например?

<xs:minInclusive value="1900"/> et <xs:maxInclusive value="2008"/>

Но чтобы вернуться к ограничению totalDigits , почему бы не установить для атрибута fixed значение true?

Если {fixed} равно true, то типы, для которых текущий тип является {определением базового типа}, не могут указывать значение для totalDigits, отличное от {value}.

<xs:totalDigits value="4" fixed="true" />
0 голосов
/ 24 августа 2011

Я бы использовал базовый тип xs: gYear, с необходимыми дополнительными фасетами. Для получения дополнительной информации может помочь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...