У меня есть ситуация, когда элемент в 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-значное число, построенное по определенному шаблону. То, что объявляет тип организации, представляет собой просто 10-значное число.
Так что я логически хотел бы сделать это:
<xsd:element name="sender" type="OrganizationType" minOccurs="0" />
в последовательность, но вы не можете иметь два элемента с одинаковым именем и разными типами. Поэтому я считаю, что я должен решить это каким-то другим способом.
Я нашел следующее: http://xsd.stylusstudio.com/2007Oct/post05003.htm
Это в значительной степени то, что я хочу сделать, но я не уверен, что это возможно. Кто-нибудь получил какие-либо дальнейшие идеи о том, как это решить?
Спасибо заранее.