Я пытаюсь написать определение WSDL 1.1 для устаревшей службы, в документации которой указана схема XML, перегружающая корневые (и другие) элементы различными определениями для разных сообщений.
ТривиальноПример включает в себя следующую схему для одного сообщения:
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="urn:example:namespace">
<element name="message" type="boolean"/>
</schema>
и следующее для другого:
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="urn:example:namespace">
<element name="message" type="date"/>
</schema>
Поэтому нельзя напрямую импортировать схему каждого сообщения, заданную в WSDL, поскольку она вводитнеоднозначность в отношении определения {urn:example:namespace}message
.
Также нельзя переписать схему так, чтобы такие перегруженные элементы проверяли оба типа сообщений, поскольку это могло бы ошибочно предполагать, что любой тип допустим для любого сообщения:
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="urn:example:namespace">
<element name="message">
<simpleType>
<union memberTypes="boolean date"/>
</simpleType>
</element>
</schema>
Мне кажется, что каждое сообщение должно быть определено в его собственном пространстве имен, или же использовать однозначные имена элементов в том же пространстве имен.Тем не менее, такие изменения могут нарушить унаследованный контракт на обслуживание и поэтому, к сожалению, не вариант.
Благодарен за ваши мысли и предложения о том, как вообще можно решить эту дилемму!