我有一个包含内部枚举类型的类。
String
这是我的@XmlRootElement
public class Address {
@XmlEnum
@XmlType(name="addressType")
public static enum Type {
}
}
。
package-info.java
当我使用JAXBContex#generateSchema时,它可以找到。
但是org.codehaus.mojo:jaxb2-maven-plugin:schemagen生成了单独的模式。
一个@XmlSchema(
attributeFormDefault = XmlNsForm.UNQUALIFIED,
elementFormDefault = XmlNsForm.QUALIFIED,
namespace = "http://some",
xmlns = {
@XmlNs(prefix = "xsi",
namespaceURI = XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI)
}
) @XmlAccessorType(XmlAccessType.NONE)
package some;
,它有一个命名空间,
address
和另一个没有命名空间的<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:tns="..."
targetNamespace="...">
<xs:complexType name="address">
...
<xs:sequence>
...
<xs:element name="type" type="addressType"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
。
addressType
哪一个是对的?
答案 0 :(得分:1)
与JAXB(和JDK)一起出现的XML模式生成器schemagen
从类Address生成两个.xsd文件(如图所示),非常类似于您从maven插件中作为输出发布的文件。但是,第一个.xsd文件包含
<xs:import schemaLocation="schema2.xsd"/>
不在您的第一个.xsd中。 您是否删除了此元素?使用此元素,没有理由怀疑这对.xsd文件。
看到单个.xsd文件会很高兴。
您还可以使用xjc从.xsd文件生成Java类并比较结果。