Не знаю, решает ли это часть вопроса «почему», но вы можете попробовать переписать часть последовательности следующим образом:
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="errorMessages" type="some:ErrorMessageWSType"/>
</xs:sequence>
OTOH, какой может быть механизм, который позволяет работать второму случаю, но не первому?
Может ли быть так, что маршаллер должен выяснить, что означает xsd:string
, прежде чем проверять, что означает some:ErrorMessageWSType
, а затем должен разбудить распознаватель или что-то еще?
Эта линия мысли ведет ко второму подходу, который я бы попробовал, который должен был бы объявить ErrorMessageWSType
перед SomeFault
(и, возможно, в другом пространстве имен, просто чтобы посмотреть, исправит ли это что-нибудь).
Только мои (уставшие) два цента, и я полагаю, что оба эти подхода предполагают какую-то ошибку в маршаллере, потому что я не вижу, что что-то в вашем примере кода не соответствует схеме XML определение.