![](/img/trans.png)
[英]Provide schema for xsd:any element while importing WSDL using wsimport
[英]using xsd:any for extensible schema
到目前為止,我一直在通過定義具有“name”和“value”屬性的占位符元素來處理擴展 ,如下例所示
<root>
<typed-content>
...
</typed-content>
<extension name="var1" value="val1"/>
<extension name="var2" value="val2"/>
....
</root>
我現在打算切換到使用xsd:any 。 如果你能幫助我選擇最佳方法,我將不勝感激
謝謝
<xsd:any processContents="strict">
使人們能夠在不更改原始模式的情況下向其XML實例文檔添加擴展。 這是它給你帶來的重要好處。 <xsd:any>
並不重要。 <xsd:any>
。 這是可以理解的,因為它們沒有關於它可能包含什么的信息,所以它們通常會給你一個無類型的占位符。 它是在運行時處理它的應用程序代碼。 JAXB特別(RI,至少)是它的一個拳頭,但它是可行的。 <xsd:any>
使程序員的生活變得更加困難,但如果你需要支持任意擴展點,這就是這樣做的方法。 但是,如果你的擴展名是明確的,並且沒有改變,那么它可能不值得刺激因素。 關於第3點
綁定工具通常不能非常優雅地處理。 這是可以理解的,因為它們沒有關於它可能包含什么的信息,所以它們通常會給你一個無類型的占位符。 它是在運行時處理它的應用程序代碼。 JAXB特別(RI,至少)是它的一個拳頭,但它是可行的。
這對應於JAXB中的@XmlAnyElement批注。 行為如下:
@XmlAnyElement - 將所有內容保存為DOM節點
如果使用此批注對屬性進行批注,則XML文檔的相應部分將保留為DOM節點。
@XMLAnyElement(lax = true) - 將已知元素轉換為域對象
通過設置lax = true ,如果JAXB具有與該QName對應的根類型,則它將該塊轉換為域對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.