2017-02-16 16 views
1

Я пытаюсь ограничить числовые цифры после десятичной точки и разрешить только цифру нуля. Например, если значение равно 3431.0000, это значение действительно. Однако, если это значение равно 3431.1110 или 3431.1000, то оно недействительно. Может ли кто-нибудь помочь мне в том, как я могу добавить правила для ограничения такого требования в моем файле схемы? Я использую валидатор JAXB для проверки схем, а ниже - фрагмент кода из файла схемы.Как ограничить числовые цифры, кроме 0 после десятичной точки

<xs:simpleType name="Decimal8-2"> 
     <xs:restriction base="xs:decimal"> 
     <xs:fractionDigits value="4" /> 
     <xs:minExclusive value="0" /> 
     <xs:pattern value="\d+\.\d{4}" /> 
     </xs:restriction> 
    </xs:simpleType> 
+0

Помните, что когда вы используете фасет для ограничения лексического пространства числового типа, вы делаете жизнь очень трудной для любого приложения, которое должно генерировать этот формат XML. Мой совет будет заключаться в том, что схема должна всегда допускать альтернативные лексические представления, которые сопоставляются с одним и тем же базовым значением. Но, конечно, если вы пытаетесь ограничить данные в соответствии с требованиями существующего приложения, это может не примениться. –

ответ

0

Вы были очень близки. Просто измените

<xs:pattern value="\d+\.\d{4}" /> 

в

<xs:pattern value="\d+\.0{4}" /> 

для того, чтобы требовать, чтобы все фракции цифр быть 0.

+0

Удивительный брат, это сработало! Большое спасибо за указание на правильное направление. – Joe