В настоящее время я переписываю XSD, чтобы быть более конкретным при приеме данных. Существует сложный тип, который принимает все элементы с именем «часть», содержащие атрибут «имя части», без проверки каких-либо дочерних узлов в части. Вот текущий XSD-код сложного типа:
<xs:complexType name="partType" mixed="true">
<xs:sequence>
<xs:any maxOccurs="unbounded" processContents="lax" />
</xs:sequence>
<xs:attribute name="partname" type="stringtype" use="required" />
</xs:complexType>
А вот пример типов «частей», которые я получаю в XML:
<part partname="customer">
<seq>1</seq>
<type>owner</type>
<part partname="conviction">
<convictionCode>12345</convictionCode>
<convictionDate>2011-06-02</convictionDate>
<fine />
<term />
<type />
<age>22</age>
<suspension>0</suspension>
</part>
<part partname="claim">
<dateOfLoss>2010-05-05</dateOfLoss>
<claimType>Accident</claimType>
<claimCost />
<claimFault>No</claimFault>
<type>owner</type>
</part>
</part>
У меня возникли проблемы с поиском информации о том, как добиться проверки содержимого, когда один и тот же элемент представлен в нескольких формах и может вкладываться друг в друга.
Приветствуются любые рекомендации о том, какой синтаксис может быть уместным.