Что такое пространство имен по умолчанию для публичного типа enum?

У меня есть класс, который содержит внутренний тип перечисления.

@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>

Какой из них прав?

1 ответ

Решение

Генератор XML-схемы schemagen который поставляется вместе с JAXB (и JDK) генерирует два файла.xsd из класса Address (как показано), очень похожий на те, которые вы опубликовали в качестве вывода из плагина maven. Тем не менее, первый файл.xsd содержит

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

которого нет в вашем первом.xsd. Вы удалили этот элемент? С этим элементом нет оснований сомневаться в паре файлов.xsd.

Было бы неплохо увидеть один файл.xsd.

Вы также можете использовать xjc для генерации классов Java из файлов.xsd и сравнения результатов.

Другие вопросы по тегам