2012-11-19 106 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生成类时,它不会生成任何类。它甚至没有给我一个错误。 –

相关问题