У меня есть некоторые 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>
Есть ли менее повторяющийся способ сделать это?