Тип аннотации XmlSchema
@Retention(value=RUNTIME) @Target(value=PACKAGE) public @interface XmlSchema
Сопоставляет имя пакета с пространством имен XML.
Использование
Аннотация XmlSchema может использоваться с следующими элементами программы:
- пакет
Это аннотация уровня пакета и следует рекомендациям и ограничениям, содержащимся в JSR 175, раздел III, "Аннотации". Таким образом, её использование подчиняется следующим ограничениям и рекомендациям.
- Может быть только одна декларация пакета, как указано в JSR 175, раздел III, "Аннотации".
- JSR 175 рекомендует package-info.java для аннотаций уровня пакета. JAXB-провайдеры, которые следуют этой рекомендации, позволят определять аннотации уровня пакета в package-info.java.
Пример 1: Изменить имя пространства имен XML, к которому сопоставляется пакет.
@javax.xml.bind.annotation.XmlSchema (
namespace = "http://www.example.com/MYPO1"
)
<!-- XML Schema fragment -->
<schema
xmlns=...
xmlns:po=....
targetNamespace="http://www.example.com/MYPO1"
>
<!-- prefixes generated by default are implementation
depedenent --> Пример 2: Изменить сопоставление префикса пространства имён, URI пространства имён
// Package level annotation
@javax.xml.bind.annotation.XmlSchema (
xmlns = {
@javax.xml.bind.annotation.XmlNs(prefix = "po",
namespaceURI="http://www.example.com/myPO1"),
@javax.xml.bind.annotation.XmlNs(prefix="xs",
namespaceURI="http://www.w3.org/2001/XMLSchema")
)
)
<!-- XML Schema fragment -->
<schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:po="http://www.example.com/PO1"
targetNamespace="http://www.example.com/PO1"> Пример 3: Изменить элементFormDefault
@javax.xml.bind.annotation.XmlSchema (
elementFormDefault=XmlNsForm.UNQUALIFIED
...
)
<!-- XML Schema fragment -->
<schema
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:po="http://www.example.com/PO1"
elementFormDefault="unqualified">
- С:
- JAXB2.0
Поля
| Модификатор и тип | Поля и описание |
|---|---|
static String |
NO_LOCATION Значение по умолчанию атрибута |
Необязательные элементы
| Модификатор и тип | Необязательный элемент и описание |
|---|---|
XmlNsForm |
attributeFormDefault Квалификация пространства имен для атрибутов. |
XmlNsForm |
elementFormDefault Квалификация пространства имен для элементов. |
String |
location Указывает, что у этого пространства имен (указанного в |
String |
namespace Имя пространства имен XML. |
XmlNs[] |
xmlns Настройка ассоциаций URI пространства имен, префикса. |
Поля
NO_LOCATION
public static final String NO_LOCATION
Значение по умолчанию атрибута location(), которое указывает, что генератор схемы будет генерировать компоненты в этом пространстве имен.
Элементы
xmlns
public abstract XmlNs[] xmlns
Настройка ассоциаций URI пространства имен, префикса. По умолчанию, префиксы пространства имен для пространства имен XML генерируются JAXB-провайдером способом, зависящим от реализации.
- По умолчанию:
- {}
namespace
public abstract String namespace
Имя пространства имен XML.
- По умолчанию:
- ""
elementFormDefault
public abstract XmlNsForm elementFormDefault
Квалификация пространства имен для элементов. По умолчанию, атрибут element default будет отсутствовать во фрагменте XML-схемы.
- По умолчанию:
- javax.xml.bind.annotation.XmlNsForm.UNSET
attributeFormDefault
public abstract XmlNsForm attributeFormDefault
Квалификация пространства имен для атрибутов. По умолчанию, атрибут attributeFormDefault будет отсутствовать во фрагменте XML-схемы.
- По умолчанию:
- javax.xml.bind.annotation.XmlNsForm.UNSET
location
public abstract String location
Указывает, что у этого пространства имен (указанного в namespace()) уже есть схема, доступная внешне по этому адресу.
Это указывает генераторам схем JAXB просто ссылаться на указанную схему, а не генерировать компоненты в схему. Предполагается, что эта схема соответствует тому, что было бы сгенерировано генератором схемы (те же имена элементов, те же имена типов...).
Эта функция предназначена для использования в тех случаях, когда набор Java-классов изначально генерируется из существующей схемы, написанной вручную для соответствия внешне определённой схеме, или сгенерированная схема была изменена вручную.
Значение может быть любым абсолютным URI, например http://example.org/some.xsd. Также можно указать пустую строку, чтобы указать, что схема доступна внешне, но расположение не указано (и поэтому ответственность за поиск схемы лежит на читателе сгенерированной схемы). Наконец, значение по умолчанию этого свойства "##generate" указывает, что генератор схемы будет генерировать компоненты для этого пространства имен (как он делал в JAXB 2.0).
Разрешается использование нескольких аннотаций XmlSchema на нескольких пакетах для управления тем же namespace(). В таком случае все они должны иметь одинаковые значения location().
Примечание для разработчика
Более точно, значение должно быть либо "", либо "##generate", либо корректное лексическое представление xs:anyURI, которое начинается с <scheme>:.
Генератор схем должен сгенерировать соответствующий <xs:import namespace="..." schemaLocation="..."/> (или не использовать атрибут schemaLocation вовсе, если указана пустая строка). Однако генератор схем может использовать другое значение в атрибуте schemaLocation (включая отсутствие такого атрибута), например, чтобы пользователь мог указать локальную копию ресурса через командную строку.
- С:
- JAXB2.1
- По умолчанию:
- "##generate"
© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.