什么是公共枚举类型的默认命名空间?

时间:2015-10-01 08:21:24

标签: jaxb jaxb2 schemagen

我有一个包含内部枚举类型的类。

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

哪一个是对的?

1 个答案:

答案 0 :(得分:1)

与JAXB(和JDK)一起出现的XML模式生成器schemagen从类Address生成两个.xsd文件(如图所示),非常类似于您从maven插件中作为输出发布的文件。但是,第一个.xsd文件包含

  <xs:import schemaLocation="schema2.xsd"/>

不在您的第一个.xsd中。 您是否删除了此元素?使用此元素,没有理由怀疑这对.xsd文件。

看到单个.xsd文件会很高兴。

您还可以使用xjc从.xsd文件生成Java类并比较结果。