Я пытаюсь написать свой первый xsd, в котором будут сгенерированные JAXB POJO, сгенерированные из него, для использования в веб-сервисе. Будет три связанных класса, которые я хотел бы видеть выраженными в xml как ...
<stringKey systemName="string key 1" businessName="Customer">Glorious strings</stringKey>
<numberKey systemName="number key 1" businessName="Invoice number">1025.52</numberKey>
<dateKey systemName="date key 1" businessName="Invoice date">1970-01-01</dateKey>
Я пытаюсь повторно использовать объявление аннотаций, чтобы сгенерированные JAXB POJO могли принадлежать одному интерфейсу. Пока у меня есть следующие xsd ...
<xs:complexType name="dateKey">
<xs:simpleContent>
<xs:extension base="namedElement">
<xs:attribute type="xs:dateTime" name="keyValue" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="namedElement" abstract="true">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="businessName" />
<xs:attribute type="xs:string" name="systemName" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
Это дает мне часть пути, это дает мне XML как ...
<dateKey systemName="date key 1" businessName="Invoice date"><keyValue>1970-01-01</keyValue></dateKey>
Мне трудно повторно использовать тип, который объявляет аннотации, переопределяя базу этого типа. (Обратите внимание, я пытаюсь избавиться от элемента 'keyValue' в приведенном выше примере). Есть идеи?
РЕДАКТИРОВАТЬ: я заметил, что xsd-фрагмент не проверяет следующий xml-фрагмент - кажется, что он был потерян в рефакторинге, но я надеюсь, вы поняли ...