簡體   English   中英

如何在XSD中指定屬性名稱空間,以便JAXB正確解釋它?

[英]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>

資料來源: https//stackoverflow.com/a/12111103/32043

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM