blob: d47bf5ca465a3202ffec560ddb95e834fa9974b5 [file] [log] [blame]
/*
* Copyright (c) 2004, 2020 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Distribution License v. 1.0, which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
/**
* Defines annotations for customizing Java program elements to XML Schema mapping.
* <p>
* References in this document to JAXB refer to the Jakarta XML Binding unless otherwise noted.
*
* <h2>Package Specification</h2>
* <p>The following table shows the Jakarta XML Binding mapping annotations
* that can be associated with each program element. </p>
* <p>
* <table class="striped">
* <caption>Annotations for customizing Java program elements to XML Schema mapping</caption>
* <thead>
* <tr>
* <th scope="col">Program Element</th>
* <th scope="col">Jakarta XML Binding annotation</th>
* </tr>
* </thead>
* <tbody style="text-align:left">
* <tr>
* <th scope="row" style="vertical-align:top">Package</th>
* <td>
* <ul style="list-style-type:none">
* <li><a HREF="../../../../jakarta/xml/bind/annotation/XmlAccessorOrder.html">XmlAccessorOrder</a></li>
* <li><a HREF="../../../../jakarta/xml/bind/annotation/XmlAccessorType.html">XmlAccessorType</a></li>
* <li><a HREF="../../../../jakarta/xml/bind/annotation/XmlSchema.html">XmlSchema</a></li>
* <li><a HREF="../../../../jakarta/xml/bind/annotation/XmlSchemaType.html">XmlSchemaType</a></li>
* <li><a HREF="../../../../jakarta/xml/bind/annotation/XmlSchemaTypes.html">XmlSchemaTypes</a></li>
* <li><a HREF="../../../../jakarta/xml/bind/annotation/adapters/XmlJavaTypeAdapter.html">XmlJavaTypeAdapter</a></li>
* <li><a HREF="../../../../jakarta/xml/bind/annotation/adapters/XmlJavaTypeAdapters.html">XmlJavaTypeAdapters</a></li>
* </ul>
* </td>
* </tr>
* <tr>
* <th scope="row" style="vertical-align:top">Class</th>
* <td>
* <ul style="list-style-type:none">
* <li><a HREF="../../../../jakarta/xml/bind/annotation/XmlAccessorOrder.html">XmlAccessorOrder</a></li>
* <li><a HREF="../../../../jakarta/xml/bind/annotation/XmlAccessorType.html">XmlAccessorType</a></li>
* <li><a HREF="../../../../jakarta/xml/bind/annotation/XmlInlineBinaryData.html">XmlInlineBinaryData</a></li>
* <li><a HREF="../../../../jakarta/xml/bind/annotation/XmlRootElement.html">XmlRootElement</a></li>
* <li><a HREF="../../../../jakarta/xml/bind/annotation/XmlType.html">XmlType</a></li>
* <li><a HREF="../../../../jakarta/xml/bind/annotation/adapters/XmlJavaTypeAdapter.html">XmlJavaTypeAdapter</a></li>
* </ul>
* </td>
* </tr>
* <tr>
* <th scope="row" style="vertical-align:top">Enum type</th>
* <td>
* <ul style="list-style-type:none">
* <li><a HREF="../../../../jakarta/xml/bind/annotation/XmlEnum.html">XmlEnum</a></li>
* <li><a HREF="../../../../jakarta/xml/bind/annotation/XmlEnumValue.html">XmlEnumValue (enum constant only)</a></li>
* <li><a HREF="../../../../jakarta/xml/bind/annotation/XmlRootElement.html">XmlRootElement</a></li>
* <li><a HREF="../../../../jakarta/xml/bind/annotation/XmlType.html">XmlType</a></li>
* <li><a HREF="../../../../jakarta/xml/bind/annotation/adapters/XmlJavaTypeAdapter.html">XmlJavaTypeAdapter</a></li>
* </ul>
* </td>
* </tr>
* <tr>
* <th scope="row" style="vertical-align:top">JavaBean Property/field</th>
* <td>
* <ul style="list-style-type:none">
* <li><a HREF="../../../../jakarta/xml/bind/annotation/XmlElement.html">XmlElement</a></li>
* <li><a HREF="../../../../jakarta/xml/bind/annotation/XmlElements.html">XmlElements</a></li>
* <li><a HREF="../../../../jakarta/xml/bind/annotation/XmlElementRef.html">XmlElementRef</a></li>
* <li><a HREF="../../../../jakarta/xml/bind/annotation/XmlElementRefs.html">XmlElementRefs</a></li>
* <li><a HREF="../../../../jakarta/xml/bind/annotation/XmlElementWrapper.html">XmlElementWrapper</a></li>
* <li><a HREF="../../../../jakarta/xml/bind/annotation/XmlAnyElement.html">XmlAnyElement</a></li>
* <li><a HREF="../../../../jakarta/xml/bind/annotation/XmlAttribute.html">XmlAttribute</a></li>
* <li><a HREF="../../../../jakarta/xml/bind/annotation/XmlAnyAttribute.html">XmlAnyAttribute</a></li>
* <li><a HREF="../../../../jakarta/xml/bind/annotation/XmlTransient.html">XmlTransient</a></li>
* <li><a HREF="../../../../jakarta/xml/bind/annotation/XmlValue.html">XmlValue</a></li>
* <li><a HREF="../../../../jakarta/xml/bind/annotation/XmlID.html">XmlID</a></li>
* <li><a HREF="../../../../jakarta/xml/bind/annotation/XmlIDREF.html">XmlIDREF</a></li>
* <li><a HREF="../../../../jakarta/xml/bind/annotation/XmlList.html">XmlList</a></li>
* <li><a HREF="../../../../jakarta/xml/bind/annotation/XmlMixed.html">XmlMixed</a></li>
* <li><a HREF="../../../../jakarta/xml/bind/annotation/XmlMimeType.html">XmlMimeType</a></li>
* <li><a HREF="../../../../jakarta/xml/bind/annotation/XmlAttachmentRef.html">XmlAttachmentRef</a></li>
* <li><a HREF="../../../../jakarta/xml/bind/annotation/XmlInlineBinaryData.html">XmlInlineBinaryData</a></li>
* <li><a HREF="../../../../jakarta/xml/bind/annotation/XmlElementDecl.html">XmlElementDecl (only on method)</a></li>
* <li><a HREF="../../../../jakarta/xml/bind/annotation/adapters/XmlJavaTypeAdapter.html">XmlJavaTypeAdapter</a></li>
* </ul>
* </td>
* </tr>
* <tr>
* <th scope="row" style="vertical-align:top">Parameter</th>
* <td>
* <ul style="list-style-type:none">
* <li><a HREF="../../../../jakarta/xml/bind/annotation/XmlList.html">XmlList</a></li>
* <li><a HREF="../../../../jakarta/xml/bind/annotation/XmlAttachmentRef.html">XmlAttachmentRef</a></li>
* <li><a HREF="../../../../jakarta/xml/bind/annotation/XmlMimeType.html">XmlMimeType</a></li>
* <li><a HREF="../../../../jakarta/xml/bind/annotation/adapters/XmlJavaTypeAdapter.html">XmlJavaTypeAdapter</a></li>
* </ul>
* </td>
* </tr>
* </tbody>
* </table>
* <h3>Terminology</h3>
* <p>
* <b>JavaBean property and field:</b> For the purposes of
* mapping, there is no semantic difference between a field and
* a JavaBean property. Thus, an annotation that can be applied
* to a JavaBean property can always be applied to a
* field. Hence in the Javadoc documentation, for brevity, the
* term JavaBean property or property is used to mean either JavaBean
* property or a field. Where required, both are explicitly
* mentioned.
* <p>
* <b>top level class:</b> For the purpose of mapping, there is
* no semantic difference between a top level class and a
* static nested class. Thus, an annotation that can be applied
* to a top level class, can always be applied to a nested
* static class. Hence in the Javadoc documentation, for
* brevity, the term "top level class" or just class is used to
* mean either a top level class or a nested static
* class.
* <p>
* <b>mapping annotation:</b>A Jakarta XML Binding defined program
* annotation based on the JSR 175 programming annotation
* facility.
* <h3>Common Usage Constraints</h3>
* <p>The following usage constraints are defined here since
* they apply to more than annotation:
* <ul>
* <li> For a property, a given annotation can be applied to
* either read or write property but not both. </li>
* <li> A property name must be different from any other
* property name in any of the super classes of the
* class being mapped. </li>
* <li> A mapped field name or the decapitalized name of a
* mapped property must be unique within a class. </li>
* </ul>
* <h3>Notations</h3>
* <b>Namespace prefixes</b>
* <p>The following namespace prefixes are used in the XML Schema
* fragments in this package.
* <p>
* <table class="striped">
* <caption>XML Schema fragments namespace prefixes</caption>
* <thead>
* <tr>
* <th scope="col">Prefix</th>
* <th scope="col">Namespace</th>
* <th scope="col">Notes</th>
* </tr>
* </thead>
* <tbody>
* <tr>
* <th scope="row">xs</th>
* <td>http://www.w3.org/2001/XMLSchema</td>
* <td>Namespace of XML Schema namespace</td>
* </tr>
* <tr>
* <th scope="row">ref</th>
* <td>http://ws-i.org/profiles/basic/1.1/xsd</td>
* <td>Namespace for swaref schema component</td>
* </tr>
* <tr>
* <th scope="row">xsi</th>
* <td>http://www.w3.org/2001/XMLSchema-instance</td>
* <td>XML Schema namespace for instances</td>
* </tr>
* </tbody>
* </table>
*
* @since 1.6, JAXB 2.0
*/
package jakarta.xml.bind.annotation;