У меня есть ситуация, когда элемент в XML-файле может быть двух разных типов в XSD.
То, что я хочу сделать, - это сначала проверить введенное значение для более строгого типа (если это лицо, заполняющее форму), а если оно не выполнено, проверить его для менее строгого типа (если оно организация, которая заполняет форму), в противном случае допустим сбой проверки, если она вообще не проверяется.
Так что это в основном это:
<xsd:complexType name="ForminfoType"> `
<xsd:sequence>
<xsd:element name="formname" type="xsd:string" />
<xsd:element name="timestamp" type="xsd:dateTime" />
<xsd:element name="sender" type="PersonType" minOccurs="0" />
<xsd:element name="receiver" type="OrganizationType" minOccurs="0" />
<xsd:element name="signature" type="xsd:string" minOccurs="0" />
</xsd:sequence>
</xsd:complexType>
То, что объявляет PersonType, в основном представляет собой 12-значное число, построенное по определенному шаблону. Тип организации объявляется в основном просто десятизначным числом.
Итак, что я логично хотел бы сделать, это поставить:
<xsd:element name="sender" type="OrganizationType" minOccurs="0" />
в последовательность, но вы не можете иметь два элемента с одинаковым именем и разными типами. Поэтому я считаю, что должен решить это другим способом.
Что я нашел, так это:
http://xsd.stylusstudio.com/2007Oct/post05003.htm
Это то, что я хочу сделать, но я не уверен, что это возможно.
Кто-нибудь получил дальнейшие идеи о том, как решить эту проблему?
Заранее спасибо.