2014-03-29 52 views
1

我試圖從EurID提供的* .xsd文件生成Java代碼。JAXB SAXParseException從EURID(EPP協議)提供的* .xsd生成模型

目前我收到一些例外:

Error while parsing schema(s).Location [ file:~/src/main/resources/epp-1.0.xsd{375,32}]. 
org.xml.sax.SAXParseException; systemId: file:~/src/main/resources/epp-1.0.xsd; lineNumber: 375; columnNumber: 32; src-resolve: Cannot resolve the name 'eppcom:minTokenType' to a(n) 'type definition' component. 

[ERROR] Error while parsing schema(s).Location [ file:~/src/main/resources/nsgroup-1.0.xsd{86,42}]. 
org.xml.sax.SAXParseException; systemId: file:~/src/main/resources/nsgroup-1.0.xsd; lineNumber: 86; columnNumber: 42; src-resolve: Cannot resolve the name 'euridcom:nsgType' to a(n) 'type definition' component. 

[ERROR] Error while parsing schema(s).Location [ file:~/src/main/resources/domain-1.0.xsd{94,53}]. 
org.xml.sax.SAXParseException; systemId: file:~/src/main/resources/domain-1.0.xsd; lineNumber: 94; columnNumber: 53; src-resolve: Cannot resolve the name 'host:addrType' to a(n) 'type definition' component. 

的Maven插件配置看起來像如下:

<plugin> 
       <groupId>org.jvnet.jaxb2.maven2</groupId> 
       <artifactId>maven-jaxb2-plugin</artifactId> 
       <version>0.8.3</version> 
       <configuration> 
        <schemaDirectory>src/main/resources</schemaDirectory> 
        <bindingDirectory>src/main/resources</bindingDirectory> 
        <bindingIncludes> 
         <include>bindings.xml</include> 
        </bindingIncludes> 
        <extension>true</extension> 
        <debug>true</debug> 
        <args> 
         <arg>-extension</arg> 
         <arg>-Xnamespace-prefix</arg> 
        </args> 
       </configuration> 
       <executions> 
        <execution> 
         <goals> 
          <goal>generate</goal> 
         </goals> 
        </execution> 
       </executions> 
       <dependencies> 
        <dependency> 
         <groupId>org.jvnet.jaxb2_commons</groupId> 
         <artifactId>jaxb2-namespace-prefix</artifactId> 
         <version>1.1</version> 
        </dependency> 
       </dependencies> 
      </plugin> 

而且bindings.xml文件:

<?xml version="1.0"?> 
<jxb:bindings version="1.0" 
       xmlns:jxb="http://java.sun.com/xml/ns/jaxb" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xmlns:namespace="http://jaxb2-commons.dev.java.net/namespace-prefix" 
       xsi:schemaLocation="http://java.sun.com/xml/ns/jaxb http://java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd 
       http://jaxb2-commons.dev.java.net/namespace-prefix http://java.net/projects/jaxb2-commons/sources/svn/content/namespace-prefix/trunk/src/main/resources/prefix-namespace-schema.xsd"> 

<jxb:bindings schemaLocation="authInfo-1.0.xsd"> 
     <jxb:schemaBindings> 
      <jxb:package name="eu.eurid.xml.epp.authInfo"/> 
     </jxb:schemaBindings> 
     <jxb:bindings> 
      <namespace:prefix name="authInfo"/> 
     </jxb:bindings> 
    </jxb:bindings> 

    <jxb:bindings schemaLocation="epp-1.0.xsd"> 
     <jxb:schemaBindings> 
      <jxb:package name="eu.eurid.xml.epp.epp"/> 
     </jxb:schemaBindings> 
     <jxb:bindings> 
      <namespace:prefix name="epp"/> 
     </jxb:bindings> 
    </jxb:bindings> 

    <jxb:bindings schemaLocation="eppcom-1.0.xsd"> 
     <jxb:schemaBindings> 
      <jxb:package name="eu.eurid.xml.epp.eppcom"/> 
     </jxb:schemaBindings> 
     <jxb:bindings> 
      <namespace:prefix name="eppcom"/> 
     </jxb:bindings> 
    </jxb:bindings> 

    <jxb:bindings schemaLocation="contact-1.0.xsd"> 
     <jxb:schemaBindings> 
      <jxb:package name="eu.eurid.xml.epp.contact"/> 
     </jxb:schemaBindings> 
     <jxb:bindings> 
      <namespace:prefix name="contact"/> 
     </jxb:bindings> 
    </jxb:bindings> 

    <jxb:bindings schemaLocation="contact-ext-1.0.xsd"> 
     <jxb:schemaBindings> 
      <jxb:package name="eu.eurid.xml.epp.contact.ext"/> 
     </jxb:schemaBindings> 
     <jxb:bindings> 
      <namespace:prefix name="contact-ext"/> 
     </jxb:bindings> 
    </jxb:bindings> 

    <jxb:bindings schemaLocation="domain-1.0.xsd"> 
     <jxb:schemaBindings> 
      <jxb:package name="eu.eurid.xml.epp.domain"/> 
     </jxb:schemaBindings> 
     <jxb:bindings> 
      <namespace:prefix name="domain"/> 
     </jxb:bindings> 
    </jxb:bindings> 

    <jxb:bindings schemaLocation="domain-ext-1.0.xsd"> 
     <jxb:schemaBindings> 
      <jxb:package name="eu.eurid.xml.epp.domain.ext"/> 
     </jxb:schemaBindings> 
     <jxb:bindings> 
      <namespace:prefix name="domain-ext"/> 
     </jxb:bindings> 
    </jxb:bindings> 

    <jxb:bindings schemaLocation="dss-1.0.xsd"> 
     <jxb:schemaBindings> 
      <jxb:package name="eu.eurid.xml.epp.dss"/> 
     </jxb:schemaBindings> 
     <jxb:bindings> 
      <namespace:prefix name="dss"/> 
     </jxb:bindings> 
    </jxb:bindings> 

    <jxb:bindings schemaLocation="dynUpdate-1.0.xsd"> 
     <jxb:schemaBindings> 
      <jxb:package name="eu.eurid.xml.epp.dynupdate"/> 
     </jxb:schemaBindings> 
     <jxb:bindings> 
      <namespace:prefix name="dynupdate"/> 
     </jxb:bindings> 
    </jxb:bindings> 

    <jxb:bindings schemaLocation="euridcom-1.0.xsd"> 
     <jxb:schemaBindings> 
      <jxb:package name="eu.eurid.xml.epp.euridcom"/> 
     </jxb:schemaBindings> 
     <jxb:bindings> 
      <namespace:prefix name="euridcom"/> 
     </jxb:bindings> 
    </jxb:bindings> 

    <jxb:bindings schemaLocation="host-1.0.xsd"> 
     <jxb:schemaBindings> 
      <jxb:package name="eu.eurid.xml.epp.host"/> 
     </jxb:schemaBindings> 
     <jxb:bindings> 
      <namespace:prefix name="host"/> 
     </jxb:bindings> 
    </jxb:bindings> 

    <jxb:bindings schemaLocation="idn-1.0.xsd"> 
     <jxb:schemaBindings> 
      <jxb:package name="eu.eurid.xml.epp.idn"/> 
     </jxb:schemaBindings> 
     <jxb:bindings> 
      <namespace:prefix name="idn"/> 
     </jxb:bindings> 
    </jxb:bindings> 

    <jxb:bindings schemaLocation="keygroup-1.1.xsd"> 
     <jxb:schemaBindings> 
      <jxb:package name="eu.eurid.xml.epp.keygroup"/> 
     </jxb:schemaBindings> 
     <jxb:bindings> 
      <namespace:prefix name="keygroup"/> 
     </jxb:bindings> 
    </jxb:bindings> 

    <jxb:bindings schemaLocation="nsgroup-1.0.xsd"> 
     <jxb:schemaBindings> 
      <jxb:package name="eu.eurid.xml.epp.nsgroup"/> 
     </jxb:schemaBindings> 
     <jxb:bindings> 
      <namespace:prefix name="nsgroup"/> 
     </jxb:bindings> 
    </jxb:bindings> 

    <jxb:bindings schemaLocation="poll-1.0.xsd"> 
     <jxb:schemaBindings> 
      <jxb:package name="eu.eurid.xml.epp.poll"/> 
     </jxb:schemaBindings> 
     <jxb:bindings> 
      <namespace:prefix name="poll"/> 
     </jxb:bindings> 
    </jxb:bindings> 

    <jxb:bindings schemaLocation="secDNS-1.1.xsd"> 
     <jxb:schemaBindings> 
      <jxb:package name="eu.eurid.xml.epp.secdns"/> 
     </jxb:schemaBindings> 
     <jxb:bindings> 
      <namespace:prefix name="secdns"/> 
     </jxb:bindings> 
    </jxb:bindings> 

    <jxb:bindings schemaLocation="registrar-1.0.xsd"> 
     <jxb:schemaBindings> 
      <jxb:package name="eu.eurid.xml.epp.registrar"/> 
     </jxb:schemaBindings> 
     <jxb:bindings> 
      <namespace:prefix name="registrar"/> 
     </jxb:bindings> 
    </jxb:bindings> 
</jxb:bindings> 

對於參考host.xsd文件內容在這裏:http://pastebin.com/ZdAGrNXF 和eppcom.xsd是在這裏:http://pastebin.com/hYSwXQ11

我已經花了像5天嘗試弄清楚什麼是錯的 - 嘗試的Maven插件選項的不同組合等 所謂的社區是我現在最後的機會。 預先感謝您的提示。

回答

0

我用過的JRE/JDK並不完整。使用Java EE安裝JDK解決了JaxB的問題。

1

我改變了xsd。添加屬性schemaLocation以導入所有xsd模式中的元素。然後生成類是好的。

如果我使用目錄解析名稱空間,那麼我有一些元素的duplicit定義問題。

0

我不得不試圖驗證XML與EPP-1.0.xsd(http://www.iana.org/assignments/xml-registry/schema/epp-1.0.xsd)和EPP-1.0.xsd文件替換

<import namespace="urn:ietf:params:xml:ns:eppcom-1.0"/> 

同樣的問題

<import namespace="urn:ietf:params:xml:ns:eppcom-1.0" schemaLocation="http://www.iana.org/assignments/xml-registry/schema/eppcom-1.0.xsd"/> 

解決了這個問題。