我试图从EurID提供的* .xsd文件中生成Java代码。
目前我收到了几个例外:
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插件选项组合等。 SO社区是我现在的最后一次机会。 提前感谢您的提示。
答案 0 :(得分:1)
我改了xsd。添加属性schemaLocation以导入所有xsd架构中的元素。然后生成课程就可以了。
如果我使用目录来解析名称空间,那么我就会遇到一些元素的双重定义问题。
答案 1 :(得分:0)
我用过的JRE / JDK并不完整。使用Java EE安装JDK解决了JaxB的问题。
答案 2 :(得分:0)
尝试使用epp-1.0.xsd(http://www.iana.org/assignments/xml-registry/schema/epp-1.0.xsd)验证xml并替换
时遇到同样的问题<import namespace="urn:ietf:params:xml:ns:eppcom-1.0"/>
在带有
的epp-1.0.xsd文件中<import namespace="urn:ietf:params:xml:ns:eppcom-1.0" schemaLocation="http://www.iana.org/assignments/xml-registry/schema/eppcom-1.0.xsd"/>
解决了这个问题。