2017-01-13 6 views
0

Как создать поле, которое позволяет использовать значение true, false, или (NULL)? То, что я сейчас делаю это:Nullable boolean field in xsd

<xs:element name="IsPromotional" minOccurs="0"> 
    <xs:simpleType> 
     <xs:restriction base="xs:string"> 
      <xs:pattern value="(true|false)?" /> 
     </xs:restriction> 
    </xs:simpleType> 
</xs:element> 

Вместо того чтобы делать:

<xsd:element name="IsPromotional" type="xsd:boolean" minOccers="0" /> 

Поскольку IsPromotional также принимает пустое значение. Как я могу создать настраиваемое поле xsd, чтобы разрешить true, false или ''?

ответ

2

Я думаю, что когда вы пишете (NULL), вы имеете в виду пустую строку?

Это зависит немного, что вы используете схему для. Если это только для проверки, то нет существенной разницы между строковым полем, которое допускает «true» и «false» и логическое поле, которое допускает «true» и «false», и в этом случае поле строки с перечисляемыми значениями (" true "," false "," ") работает нормально. Но если это также для ввода данных (например, JAXB или XSLT/XQuery с поддержкой схемы), тогда лучше сделать это логическим.

Мой предпочтительный подход состоит в определении типа, который представлен список булевы с MINLENGTH 0 MAXLENGTH 1.

(Это также позволяет 0 и 1, которые можно предотвратить с помощью подтипировании хз: булевы)

+0

спасибо за ответ, и мне нравится ваш «0»/«1» подход. Не могли бы вы опубликовать код xsd для определения этого специального типа, и я приму ваш ответ? – David542

+0

Нет, я оставлю вас сделать это. Обычно я предпочитаю указывать людям в правильном направлении, а не держать их за руку и добираться до места назначения: они узнают больше. –