[英]How to specify an attribute namespace in XSD so that JAXB interprets it correctly?
我在現有XSD中的屬性命名空間有一個小問題。 我必須修改此XSD才能使用第三方軟件的所有功能。
我的目標是將元素與命名空間屬性混合,如下所示:
<graphics type="RECTANGLE" cy:nodeLabel="Label 1" />
<graphics>
元素在默認命名空間中定義,特定命名空間中的屬性cy:nodeLabel
。
目前,我在XSD中的屬性定義如下所示:
<xsd:attribute name="nodeLabel" type="xsd:string" form="qualified" xmlns="http://www.cytoscape.org"/>
選項form="qualified"
強制JAXB使用namespace="...."
注釋@XmlAttribute
,但它采用默認命名空間,而不是http://www.cytoscape.org 。 如果我在生成的Java類中手動更改它,則XML輸出是所需的。
我想在XSD中定義屬性名稱空間,這樣我就可以依賴JAXB(相應的xjc)來生成正確的Java類。
如何為XSD中的一個屬性指定屬性命名空間?
單個XSD文件只能定義一個命名空間。 你需要一個單獨的 xsd來定義第二個命名空間,然后將其導入原始的xsd(並相應地引用該屬性)。
感謝jtahlborn的回答 ,我找到了合適的解決方案:
導入單獨的XSD:
新文件cytoscape-additions.xsd
<?xml version='1.0' encoding='UTF-8'?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.cytoscape.org" elementFormDefault="unqualified"
attributeFormDefault="qualified">
<!-- Cytoscape additions Graphics -->
<xsd:attributeGroup name="cytoscape-addition-graphics">
<xsd:attribute name="nodeLabel" type="xsd:string" form="qualified"
xmlns="http://www.cytoscape.org" />
</xsd:attributeGroup>
</xsd:schema>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.