JAXB"未知位置"使用目录时

时间:2015-04-26 16:58:03

标签: java xsd jaxb

当引用导入模式中的类型时,我在使用JAXB 2.2生成Java类时遇到困难。我相信目录用于完成我想要的东西。

我有两个XSD文件:

ProductsCommonTypes.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/ProductsCommonTypes"
   xmlns="http://www.example.com/ProductsCommonTypes" elementFormDefault="qualified">
   <xs:simpleType name="nonEmptyString">
      <xs:annotation>
         <xs:documentation>A type that will require a non-empty string value be present
         </xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string">
         <xs:pattern value="(\s*[^\s]\s*)+"></xs:pattern>
      </xs:restriction>
   </xs:simpleType>
</xs:schema>

Products.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:p="http://www.example.com/Products"
   targetNamespace="http://www.example.com/Products" xmlns:common="http://www.example.com/ProductsCommonTypes"
   elementFormDefault="qualified">
   <xs:import schemaLocation="http://www.example.com/ProductsCommonTypes" namespace="http://www.example.com/ProductsCommonTypes"/>
   <xs:element name="products">
      <xs:complexType>
         <xs:sequence>
            <xs:element name="name" type="common:nonEmptyString" minOccurs="1" maxOccurs="unbounded"/>
         </xs:sequence>
      </xs:complexType>
   </xs:element>
</xs:schema>

ProductsSchemaCatalog.xml

<!DOCTYPE catalog
    PUBLIC "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN"
           "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd">
<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
    <public publicId="http://www.example.com/ProductsCommonTypes" uri="ProductsCommonTypes.xsd"/>
</catalog>

当我使用 JAXB-Generate Classes ... 生成类时,我指定Catalog的ProductsSchemaCatalog.xml文件的路径。

我得到的输出是:

parsing a schema...
compiling a schema...
[INFO] generating code
unknown location

com\example\xml\products\ObjectFactory.java
com\example\xml\products\Products.java
com\example\xml\products\package-info.java

不确定是否重要,但Eclipse会正确验证所有文件。

我的两个XSD文件都已添加到我的Eclipse XML目录中,使用命名空间名称作为密钥类型,并使用KeySpace的KeySpace。

输出中导致未知位置消息的原因是什么?

0 个答案:

没有答案