我想寫我的第一個xsd,它將有從它生成的JAXB映射POJO,用於web服務。將有三個相關的類,我想看到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片段 - 這似乎已經在重構已經輸了,但我希望你明白了吧...
決定不要單獨維護模式和pojos,反思這是一個瘋狂的想法。我只是刪除了屬性並將常用元素提取爲基本類型。在xml中看起來不太漂亮,但代碼生成現在可以在.net和java中使用(使用超類)。 – 2010-12-02 13:07:30