Как разрешить типизированным значениям быть пустыми с помощью XML-схемы?

У меня есть некоторые XML-документы, над которыми я вообще не могу контролировать. Их структура четко определена, но она описана в нескольких PDF-файлах, которые, несмотря на свою точность, не делают автоматическую проверку легко управляемой. Я пытаюсь написать схему XML, чтобы сделать (большую часть) правил в этих файлах PDF исполняемыми.

Все элементы являются обязательными. Но примерно половина из них может быть либо пустой, либо иметь простое типизированное содержимое.

При определении типов данных для этих элементов я определил две версии каждого: «нормальный», и еще один, который может быть пустым. Я сделал это, определив объединения с пустым типом данных:

<xs:simpleType name="empty">
  <xs:restriction base="xs:string">
    <xs:length value="0"/>
  </xs:restriction>
</xs:simpleType>

<xs:simpleType name="codPostal">
  <xs:restriction base="xs:string">
    <xs:pattern value="^[0-9]{4}-[0-9]{3}$"/>
  </xs:restriction>
</xs:simpleType>
<xs:simpleType name="opt_codPostal">
  <xs:union memberTypes="empty codPostal"/>
</xs:simpleType>

Есть ли менее повторяющийся способ сделать это?

7
задан R. Martinho Fernandes 28 April 2011 в 10:40
поделиться