当引用导入模式中的类型时,我在使用JAXB 2.2生成Java类时遇到困难。我相信目录用于完成我想要的东西。
我有两个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>
<?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>
<!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。
输出中导致未知位置消息的原因是什么?