В настоящее время мне приходится жестко кодировать версию схемы (или анализировать ее) вручную в коде Java при работе с сгенерированными классами JAXB. Это может легко привести к ошибкам при изменении версии схемы XML и может показаться неправильным.
Я хочу указать версию схемы в схеме и позволить xjc сгенерировать константу в соответствующем классе корневых элементов.
Я не нашел подключаемый модуль JAXB или механизм привязки, который я мог бы использовать для удовлетворения этих требований.
example.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:my="my:namespace:v1"
targetNamespace="my:namespace:v1"
xmlns="my:namespace:v1"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
<!-- Use this version information in generated class! -->
version="1.0">
<xs:element name="root" type="RootType"/>
<xs:complexType name="RootType">
<xs:sequence>
<xs:element name="name" type="xs:string" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
<xs:attribute name="xsdVersion" type="xs:string" use="required"/>
[...]
</xs:schema>
Сгенерированный RootType.class:
[...]
public class RootType {
protected String name;
protected String xsdVersion;
// This shall be generated too
public static final GENERATED_WITH_VERSION = "1.0";
[...]
}