2012-10-25 53 views
3

我正在使用jaxb從xsd文件生成java源代碼。不能在單個xsd元素上使用jaxb綁定

我希望能夠指定哪些程序包的源產生的每個元素的基礎上,但是每當我生成來源,我得到以下錯誤:

[ERROR] ****/src/main/xjb/common.xjb[8,24] 
com.sun.istack.SAXParseException2: compiler was unable to honor this schemaBinding customization. It is attached to a wrong place, or its inconsistent with other bindings. 

我綁定文件common.xjb嘗試該元件放置的名稱(屬性值)在封裝 'com.myxml.common.api' 'API':

<jxb:bindings version="1.0" xmlns:jxb="http://java.sun.com/xml/ns/jaxb" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 

    <jxb:bindings schemaLocation="../xsd/common/common.xsd" node="/xs:schema"> 

     <jxb:bindings node="//xs:element[@name='api']"> 
      <jxb:schemaBindings> 
       <jxb:package name="com.myxml.common.api" /> 
      </jxb:schemaBindings> 
     </jxb:bindings> 

    </jxb:bindings> 

</jxb:bindings> 

我的XSD文件common.xsd是:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.1" xml:lang="en"> 

    <xs:element name='api'> 
     <xs:complexType> 
      <xs:simpleContent> 
       <xs:extension base="xs:string" /> 
      </xs:simpleContent> 
     </xs:complexType> 
    </xs:element> 

</xs:schema> 

而且我使用以下Maven插件得到的一切準備:

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>jaxb2-maven-plugin</artifactId> 
    <version>1.5</version> 

    <executions> 
     <execution> 
      <id>schema00-generate</id> 
      <phase>generate-sources</phase> 
      <goals> 
       <goal>xjc</goal> 
      </goals> 
      <configuration> 
       <schemaFiles>common/common.xsd</schemaFiles> 
       <bindingFiles>common.xjb</bindingFiles> 
       <bindingDirectory>${project.basedir}/src/main/xjb</bindingDirectory> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

爲什麼會出現這個錯誤,我該如何解決呢?在這個階段我沒有任何其他綁定正在使用,我知道。從相同的命名空間

回答

3

元素不能被映射到不同的包,因此包不能用於除頂層以外的任何其他定義