2008-11-18 2 views
4

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

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

Вы хотите, чтобы вы оставили левую нулевую прокладку, т. Е. 0000, 0001 - 9999? – Greg 2008-11-18 20:25:39

+0

Если никакое отступы не требуется, я просто добавил предложение «фиксированного» атрибута – VonC 2008-11-18 20:26:22

ответ

7

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

(minInclusive - maxInclusive)

Например?

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

Но вернемся к totalDigits ограничения, почему вы не установите атрибут верно fixed?

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

<xs:totalDigits value="4" fixed="true" /> 
0

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

Смежные вопросы