2012-11-19 102 views
4

我有一個xsd其中有幾個孩子XSD嵌入(使用「xsd:include」。)在它(但每個xsd屬於相同的命名空間)。我被要求在獨立的子包(每個孩子XSD一個子包)而不是一個包中生成jaxb類。我們可以爲多個包中的一組xsd生成JAXB類嗎?

據我到目前爲止閱讀,我們可以添加jaxb:schemaBindings這些單獨的XSD並生成單獨的包中的類,如果只是這些的XSD屬於不同的命名空間

但在我的情況下,我想要做的是在幾個子包中創建屬於相同名稱空間的一組xsds的類。你能幫我用JAXB做這個嗎?


編輯:我已經加入多一點說明我的問題,以澄清它多一點。

我所有的XSD都有以下標題。因此同名空間

<?xml version="1.0" encoding="utf-8"?> 
<xs:schema xmlns:srm="http://www.mycompany.com/srm/" 
    targetNamespace="http://www.mycompany.com/srm/" xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="2.0" elementFormDefault="qualified" 
    attributeFormDefault="unqualified" version="1.0"> 

假設我的模式文件名是A.xsd,B.xsd和C.xsd。

  • 在C.xsd中,我已經用上面提到的頭文件定義了一些元素(字符串類型)。

  • 在B.xsd中,我已經使用「xsd:include」標籤包含C.xsd,然後使用C.xsd中定義的複雜類型定義了complexType定義(具有與上面提到的相同的標頭)

  • 在A.xsd中,我已經使用「xsd:include」標籤包含了B.xsd,然後使用B.xsd中定義的複雜類型定義了complexType定義(具有與上面提到的相同的標頭)

我想生成JAXB類,就像我在下面提到的那樣。

  • 有關A.xsd的JAXB類以產生com.generate.packageA包。

  • 與B.xsd相關的JAXB類在com.generate.packageB包中生成。

  • 與C.xsd相關的JAXB類在com.generate.packageC包中生成。

+0

你有沒有找到一個解決這個?我試圖實現類似的東西,並希望有一個解決方案 – indybee

回答

2

您可以將每個「包含」模式的JAXB類分別生成單獨的包並利用XJC工具中提供的情節機制。

例子(從答案堆棧溢出給出)

+0

嗨@Blaise Doughan,感謝您的快速響應,但據我所知,所有上述鏈接都與多個xsds中使用多個名稱空間相關聯。可能是我錯過了一些東西,可否請檢查我對我的文章所做的修改,並給我一些關於這個的想法?謝謝。 –

+0

我試圖使用.episode文件。但是,當我使用先前創建的.episode文件(使用C.xsd)爲B.xsd生成類時,它不會生成任何類。它甚至沒有給我一個錯誤。 –

相關問題