Spec-Zone.ru › OpenJDK 8

Тип аннотации 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

Значение по умолчанию атрибута location(), которое указывает, что генератор схемы будет генерировать компоненты в этом пространстве имен.

Необязательные элементы

Модификатор и тип Необязательный элемент и описание
XmlNsForm attributeFormDefault

Квалификация пространства имен для атрибутов.

XmlNsForm elementFormDefault

Квалификация пространства имен для элементов.

String location

Указывает, что у этого пространства имен (указанного в namespace()) уже есть схема, доступная внешне по этому адресу.

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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API