Я получил спецификацию для службы SOAP, в которой отправляемый запрос будет содержать следующее:
<eventContexts>
<eventContext name="eventType" value="Unwind"/>
<eventContext name="referenceId" value="26214"/>
</eventContexts>
Я пытаюсь смоделировать этот объект в XSD, но заблокирован ввыбор type
для атрибута value
.Как вы можете видеть в приведенном выше примере, это может быть xs:string
(регистр Unwind
) или xs:long
(регистр 26214
).
Какой тип я должен выбрать, чтобы атрибут value
принимал как xs:string
, так и xs:long
?Пока я могу думать о двух вещах:
1) Должен ли я создать два разных атрибута, например stringValue
и longValue
:
<xs:complexType name="XmlEventContext">
<xs:attribute name="name" type="xs:string"/>Sh
<xs:attribute name="stringValue" type="xs:string" minOccurs="0"/>
<xs:attribute name="longValue" type="xs:long" minOccurs="0"/>
</xs:complexType>
... и позволить клиенту отправитьмне хорошее значение в хорошем атрибуте?(Мне это некрасиво, но я не большой эксперт).
2) Стоит ли расширять автоматически сгенерированный класс XmlEventContext
пользовательским классом, который принимает value
как xs:string
изатем пытается привести его к xs:long
?
public class XmlEventContextComplete extends XmlEventContext {
//code to manage a property referenceId which can either be long or string
}
3) Любое другое более элегантное предложение?
Заранее спасибо!