public 枚举类型的默认命名空间是什么?
What is default namespace for public enum type?
我有一个 class 包含内部枚举类型。
@XmlRootElement
public class Address {
@XmlEnum
@XmlType(name="addressType")
public static enum Type {
}
}
这是我的package-info.java
。
@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;
当我使用 JAXBContex#generateSchema.
时可以找到
但是 org.codehaus.mojo:jaxb2-maven-plugin:schemagen 生成单独的模式。
一个用于 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
没有命名空间。
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0">
<xs:simpleType name="addressType">
<xs:restriction base="xs:string">
<xs:enumeration value="CC"/>
<xs:enumeration value="BCC"/>
<xs:enumeration value="TO"/>
<xs:enumeration value="REPLY_TO"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
哪一个是正确的?
JAXB(和JDK)附带的XML模式生成器schemagen
从class地址生成两个.xsd文件(如图所示),非常类似于您作为 Maven 插件输出发布的那些。但是,第一个 .xsd 文件包含
<xs:import schemaLocation="schema2.xsd"/>
这不是你的第一个。xsd。 你删除了这个元素吗?有了这个元素,就没有理由怀疑这对.xsd文件了。
如果能看到单个 .xsd 文件就好了。
您还可以使用 xjc 从 .xsd 文件生成 Java classes 并比较结果。
我有一个 class 包含内部枚举类型。
@XmlRootElement
public class Address {
@XmlEnum
@XmlType(name="addressType")
public static enum Type {
}
}
这是我的package-info.java
。
@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;
当我使用 JAXBContex#generateSchema.
时可以找到但是 org.codehaus.mojo:jaxb2-maven-plugin:schemagen 生成单独的模式。
一个用于 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
没有命名空间。
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0">
<xs:simpleType name="addressType">
<xs:restriction base="xs:string">
<xs:enumeration value="CC"/>
<xs:enumeration value="BCC"/>
<xs:enumeration value="TO"/>
<xs:enumeration value="REPLY_TO"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
哪一个是正确的?
JAXB(和JDK)附带的XML模式生成器schemagen
从class地址生成两个.xsd文件(如图所示),非常类似于您作为 Maven 插件输出发布的那些。但是,第一个 .xsd 文件包含
<xs:import schemaLocation="schema2.xsd"/>
这不是你的第一个。xsd。 你删除了这个元素吗?有了这个元素,就没有理由怀疑这对.xsd文件了。
如果能看到单个 .xsd 文件就好了。
您还可以使用 xjc 从 .xsd 文件生成 Java classes 并比较结果。