<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<title>XmlType</title>
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>

<link rel="shortcut icon" href="/img/jakarta-favicon.ico">
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="XmlType";
        }
    }
    catch(err) {
    }
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../jakarta/xml/bind/annotation/XmlTransient.html" title="annotation in jakarta.xml.bind.annotation"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../jakarta/xml/bind/annotation/XmlType.DEFAULT.html" title="class in jakarta.xml.bind.annotation"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?jakarta/xml/bind/annotation/XmlType.html" target="_top">Frames</a></li>
<li><a href="XmlType.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Required&nbsp;|&nbsp;</li>
<li><a href="#annotation.type.optional.element.summary">Optional</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#annotation.type.element.detail">Element</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">jakarta.xml.bind.annotation</div>
<h2 title="Annotation Type XmlType" class="title">Annotation Type XmlType</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>@Retention(value=RUNTIME)
 @Target(value=TYPE)
public @interface <span class="memberNameLabel">XmlType</span></pre>
<div class="block"><p>
 Maps a class or an enum type to a XML Schema type.

 <p><b>Usage</b></p>
 <p> The <code>@XmlType</code> annnotation can be used with the following program
 elements:
 <ul>
   <li> a top level class </li>
   <li> an enum type </li>
 </ul>

 <p>See "Package Specification" in jakarta.xml.bind.package javadoc for
 additional common information.</p>

 <h2> Mapping a Class </h2>
 <p>
 A class maps to a XML Schema type. A class is a data container for
 values represented by properties and fields. A schema type is a
 data container for values represented by schema components within a
 schema type's content model (e.g. model groups, attributes etc).
 <p> To be mapped, a class must either have a public no-arg
 constructor or a static no-arg factory method. The static factory
 method can be specified in <code>factoryMethod()</code> and
 <code>factoryClass()</code> annotation elements. The static factory
 method or the no-arg constructor is used during unmarshalling to
 create an instance of this class. If both are present, the static
 factory method overrides the no-arg constructor.
 <p>
 A class maps to either a XML Schema complex type or a XML Schema simple
 type. The XML Schema type is derived based on the
 mapping of JavaBean properties and fields contained within the
 class. The schema type to which the class is mapped can either be
 named or anonymous. A class can be mapped to an anonymous schema
 type by annotating the class with <code>@XmlType(name="")</code>.
 <p>
 Either a global element, local element or a local attribute can be
 associated with an anonymous type as follows:
 <ul>
   <li><b>global element: </b> A global element of an anonymous
      type can be derived by annotating the class with @<a href="../../../../jakarta/xml/bind/annotation/XmlRootElement.html" title="annotation in jakarta.xml.bind.annotation"><code>XmlRootElement</code></a>. See Example 3 below. </li>

   <li><b>local element: </b> A JavaBean property that references
      a class annotated with @XmlType(name="") and is mapped to the
      element associated with the anonymous type. See Example 4
      below.</li>

   <li><b>attribute: </b> A JavaBean property that references
      a class annotated with @XmlType(name="") and is mapped to the
      attribute associated with the anonymous type. See Example 5 below. </li>
 </ul>
 <b> Mapping to XML Schema Complex Type </b>
 <ul>
   <li>If class is annotated with <code>@XmlType(name="") </code>, it
   is mapped to an anonymous type otherwise, the class name maps
   to a complex type name. The <code>XmlName()</code> annotation element
   can be used to customize the name.</li>

   <li> Properties and fields that are mapped to elements are mapped to a
   content model within a complex type. The annotation element
   <code>propOrder()</code> can be used to customize the content model to be
   <code>xs:all</code> or <code>xs:sequence</code>.  It is used for specifying
   the order of XML elements in <code>xs:sequence</code>. </li>

   <li> Properties and fields can be mapped to attributes within the
        complex type.  </li>

   <li> The targetnamespace of the XML Schema type can be customized
        using the annotation element <code>namespace()</code>. </li>
 </ul>

 <p>
 <b> Mapping class to XML Schema simple type </b>
 <p>
 A class can be mapped to a XML Schema simple type using the
 <code>@XmlValue</code> annotation. For additional details and examples,
 see @<a href="../../../../jakarta/xml/bind/annotation/XmlValue.html" title="annotation in jakarta.xml.bind.annotation"><code>XmlValue</code></a> annotation type.
 <p>
 The following table shows the mapping of the class to a XML Schema
 complex type or simple type. The notational symbols used in the table are:
 <ul>
   <li> -&gt;    : represents a mapping </li>
   <li> [x]+  : one or more occurrences of x </li>
   <li> [ <code>@XmlValue</code> property ]: JavaBean property annotated with
         <code>@XmlValue</code></li>
   <li> X     : don't care
 </ul>
 <blockquote>
   <table class="striped">
     <caption>Mapping class to XML Schema simple type</caption>
     <thead>
       <tr>
         <th scope="col">Target</th>
         <th scope="col">propOrder</th>
         <th scope="col">ClassBody</th>
         <th scope="col">ComplexType</th>
         <th scope="col">SimpleType</th>
       </tr>
     </thead>

     <tbody>
       <tr>
         <td>Class</td>
         <td>{}</td>
         <th scope="row">[property]+ -&gt; elements</th>
         <td>complexcontent<br>xs:all</td>
         <td> </td>
       </tr>

       <tr>
         <td>Class</td>
         <td>non empty</td>
         <th scope="row">[property]+ -&gt; elements</th>
         <td>complexcontent<br>xs:sequence</td>
         <td> </td>
       </tr>

       <tr>
         <td>Class</td>
         <td>X</td>
         <th scope="row">no property -&gt; element</th>
         <td>complexcontent<br>empty sequence</td>
         <td> </td>
       </tr>

       <tr>
         <td>Class</td>
         <td>X</td>
         <th scope="row">1 [<code>@XmlValue</code> property] &amp;&amp; <br> [property]+ -&gt; attributes</th>
         <td>simplecontent</td>
         <td> </td>
       </tr>

       <tr>
         <td>Class</td>
         <td>X</td>
         <th scope="row">1 [<code>@XmlValue</code> property] &amp;&amp; <br> no properties -&gt; attribute</th>
         <td> </td>
         <td>simpletype</td>
       </tr>
     </tbody>
   </table>
 </blockquote>

 <h3> Mapping an enum type </h3>

 An enum type maps to a XML schema simple type with enumeration
 facets. The following annotation elements are ignored since they
 are not meaningful: <code>propOrder()</code> , <code>factoryMethod()</code> ,
 <code>factoryClass()</code> .

  <h3> Usage with other annotations </h3>
 <p> This annotation can be used with the following annotations:
 <a href="../../../../jakarta/xml/bind/annotation/XmlRootElement.html" title="annotation in jakarta.xml.bind.annotation"><code>XmlRootElement</code></a>, <a href="../../../../jakarta/xml/bind/annotation/XmlAccessorOrder.html" title="annotation in jakarta.xml.bind.annotation"><code>XmlAccessorOrder</code></a>, <a href="../../../../jakarta/xml/bind/annotation/XmlAccessorType.html" title="annotation in jakarta.xml.bind.annotation"><code>XmlAccessorType</code></a>,
 <a href="../../../../jakarta/xml/bind/annotation/XmlEnum.html" title="annotation in jakarta.xml.bind.annotation"><code>XmlEnum</code></a>. However, <a href="../../../../jakarta/xml/bind/annotation/XmlAccessorOrder.html" title="annotation in jakarta.xml.bind.annotation"><code>XmlAccessorOrder</code></a> and <a href="../../../../jakarta/xml/bind/annotation/XmlAccessorType.html" title="annotation in jakarta.xml.bind.annotation"><code>XmlAccessorType</code></a> are ignored when this
 annotation is used on an enum type.

 <p> <b> Example 1: </b> Map a class to a complex type with
   xs:sequence with a customized ordering of JavaBean properties.
 </p>

 <pre>
   &#64;XmlType(propOrder={"street", "city" , "state", "zip", "name" })
   public class USAddress {
     String getName() {..};
     void setName(String) {..};

     String getStreet() {..};
     void setStreet(String) {..};

     String getCity() {..};
     void setCity(String) {..};

     String getState() {..};
     void setState(String) {..};

     java.math.BigDecimal getZip() {..};
     void setZip(java.math.BigDecimal) {..};
   }
 <code>

   &lt;!-- XML Schema mapping for USAddress --&gt;
   &lt;xs:complexType name="USAddress"&gt;
     &lt;xs:sequence&gt;
       &lt;xs:element name="street" type="xs:string"/&gt;
       &lt;xs:element name="city" type="xs:string"/&gt;
       &lt;xs:element name="state" type="xs:string"/&gt;
       &lt;xs:element name="zip" type="xs:decimal"/&gt;
       &lt;xs:element name="name" type="xs:string"/&gt;
     &lt;/xs:all&gt;
   &lt;/xs:complexType&gt;
 </code></pre>
 <p> <b> Example 2: </b> Map a class to a complex type with
     xs:all </p>
 <pre>
 &#64;XmlType(propOrder={})
 public class USAddress { ...}
 <code>

 &lt;!-- XML Schema mapping for USAddress --&gt;
 &lt;xs:complexType name="USAddress"&gt;
   &lt;xs:all&gt;
     &lt;xs:element name="name" type="xs:string"/&gt;
     &lt;xs:element name="street" type="xs:string"/&gt;
     &lt;xs:element name="city" type="xs:string"/&gt;
     &lt;xs:element name="state" type="xs:string"/&gt;
     &lt;xs:element name="zip" type="xs:decimal"/&gt;
   &lt;/xs:sequence&gt;
 &lt;/xs:complexType&gt;
</code></pre>
 <p> <b> Example 3: </b> Map a class to a global element with an
 anonymous type.
 </p>
 <pre>
   &#64;XmlRootElement
   &#64;XmlType(name="")
   public class USAddress { ...}
 <code>

   &lt;!-- XML Schema mapping for USAddress --&gt;
   &lt;xs:element name="USAddress"&gt;
     &lt;xs:complexType&gt;
       &lt;xs:sequence&gt;
         &lt;xs:element name="name" type="xs:string"/&gt;
         &lt;xs:element name="street" type="xs:string"/&gt;
         &lt;xs:element name="city" type="xs:string"/&gt;
         &lt;xs:element name="state" type="xs:string"/&gt;
         &lt;xs:element name="zip" type="xs:decimal"/&gt;
       &lt;/xs:sequence&gt;
     &lt;/xs:complexType&gt;
   &lt;/xs:element&gt;
 </code></pre>

 <p> <b> Example 4: </b> Map a property to a local element with
 anonymous type.
 <pre>
   //Example: Code fragment
   public class Invoice {
       USAddress addr;
           ...
       }

   &#64;XmlType(name="")
   public class USAddress { ... }
   }
 <code>

   &lt;!-- XML Schema mapping for USAddress --&gt;
   &lt;xs:complexType name="Invoice"&gt;
     &lt;xs:sequence&gt;
       &lt;xs:element name="addr"&gt;
         &lt;xs:complexType&gt;
           &lt;xs:element name="name", type="xs:string"/&gt;
           &lt;xs:element name="city", type="xs:string"/&gt;
           &lt;xs:element name="city" type="xs:string"/&gt;
           &lt;xs:element name="state" type="xs:string"/&gt;
           &lt;xs:element name="zip" type="xs:decimal"/&gt;
         &lt;/xs:complexType&gt;
       ...
     &lt;/xs:sequence&gt;
   &lt;/xs:complexType&gt;
 </code></pre>

 <p> <b> Example 5: </b> Map a property to an attribute with
 anonymous type.

 <pre>

     //Example: Code fragment
     public class Item {
         public String name;
         &#64;XmlAttribute
         public USPrice price;
     }

     // map class to anonymous simple type.
     &#64;XmlType(name="")
     public class USPrice {
         &#64;XmlValue
         public java.math.BigDecimal price;
     }
 <code>

     &lt;!-- Example: XML Schema fragment --&gt;
     &lt;xs:complexType name="Item"&gt;
       &lt;xs:sequence&gt;
         &lt;xs:element name="name" type="xs:string"/&gt;
         &lt;xs:attribute name="price"&gt;
           &lt;xs:simpleType&gt;
             &lt;xs:restriction base="xs:decimal"/&gt;
           &lt;/xs:simpleType&gt;
         &lt;/xs:attribute&gt;
       &lt;/xs:sequence&gt;
     &lt;/xs:complexType&gt;
 </code></pre>

  <p> <b> Example 6: </b> Define a factoryClass and factoryMethod

 <pre>
      &#64;XmlType(name="USAddressType", factoryClass=USAddressFactory.class,
      factoryMethod="getUSAddress")
      public class USAddress {

          private String city;
          private String name;
          private String state;
          private String street;
          private int    zip;

      public USAddress(String name, String street, String city,
          String state, int zip) {
          this.name = name;
          this.street = street;
          this.city = city;
          this.state = state;
          this.zip = zip;
      }
  }

  public class USAddressFactory {
      public static USAddress getUSAddress(){
       return new USAddress("Mark Baker", "23 Elm St",
          "Dayton", "OH", 90952);
  }

 </pre>

  <p> <b> Example 7: </b> Define factoryMethod and use the default factoryClass

 <pre>
      &#64;XmlType(name="USAddressType", factoryMethod="getNewInstance")
      public class USAddress {

          private String city;
          private String name;
          private String state;
          private String street;
          private int    zip;

          private USAddress() {}

          public static USAddress getNewInstance(){
              return new USAddress();
          }
      }
 </pre></div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.6, JAXB 2.0</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../jakarta/xml/bind/annotation/XmlElement.html" title="annotation in jakarta.xml.bind.annotation"><code>XmlElement</code></a>, 
<a href="../../../../jakarta/xml/bind/annotation/XmlAttribute.html" title="annotation in jakarta.xml.bind.annotation"><code>XmlAttribute</code></a>, 
<a href="../../../../jakarta/xml/bind/annotation/XmlValue.html" title="annotation in jakarta.xml.bind.annotation"><code>XmlValue</code></a>, 
<a href="../../../../jakarta/xml/bind/annotation/XmlSchema.html" title="annotation in jakarta.xml.bind.annotation"><code>XmlSchema</code></a></dd>
<dt><span class="simpleTagLabel">Examples (en):</span></dt>
<dd><a href="../../../../../../../tomee-9.0/examples/polling-parent.html">polling-parent</a>, <a href="../../../../../../../tomee-9.0/examples/mtom.html">mtom</a></dd>
<dt><span class="simpleTagLabel">Examples (es):</span></dt>
<dd><a href="../../../../../../../tomee-9.0/es/examples/polling-parent.html">polling-parent</a></dd>
<dt><span class="simpleTagLabel">Examples (pt):</span></dt>
<dd><a href="../../../../../../../tomee-9.0/pt/examples/polling-parent.html">polling-parent</a></dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== ANNOTATION TYPE OPTIONAL MEMBER SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="annotation.type.optional.element.summary">
<!--   -->
</a>
<h3>Optional Element Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Optional Element Summary table, listing optional elements, and an explanation">
<caption><span>Optional Elements</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Optional Element and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>java.lang.Class&lt;?&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../jakarta/xml/bind/annotation/XmlType.html#factoryClass--">factoryClass</a></span></code>
<div class="block">Class containing a no-arg factory method for creating an
 instance of this class.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../jakarta/xml/bind/annotation/XmlType.html#factoryMethod--">factoryMethod</a></span></code>
<div class="block">Name of a no-arg factory method in the class specified in
 <code>factoryClass</code> factoryClass().</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../jakarta/xml/bind/annotation/XmlType.html#name--">name</a></span></code>
<div class="block">Name of the XML Schema type which the class is mapped.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../jakarta/xml/bind/annotation/XmlType.html#namespace--">namespace</a></span></code>
<div class="block">Name of the target namespace of the XML Schema type.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>java.lang.String[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../jakarta/xml/bind/annotation/XmlType.html#propOrder--">propOrder</a></span></code>
<div class="block">Specifies the order for XML Schema elements when class is
 mapped to a XML Schema complex type.</div>
</td>
</tr>
</table>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ ANNOTATION TYPE MEMBER DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="annotation.type.element.detail">
<!--   -->
</a>
<h3>Element Detail</h3>
<a name="name--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>name</h4>
<pre>public abstract&nbsp;java.lang.String&nbsp;name</pre>
<div class="block">Name of the XML Schema type which the class is mapped.</div>
<dl>
<dt>Default:</dt>
<dd>"##default"</dd>
</dl>
</li>
</ul>
</li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="propOrder--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>propOrder</h4>
<pre>public abstract&nbsp;java.lang.String[]&nbsp;propOrder</pre>
<div class="block">Specifies the order for XML Schema elements when class is
 mapped to a XML Schema complex type.

 <p> Refer to the table for how the propOrder affects the
 mapping of class </p>

 <p> The propOrder is a list of names of JavaBean properties in
     the class. Each name in the list is the name of a Java
     identifier of the JavaBean property. The order in which
     JavaBean properties are listed is the order of XML Schema
     elements to which the JavaBean properties are mapped. </p>
 <p> All of the JavaBean properties being mapped to XML Schema elements
     must be listed.
 <p> A JavaBean property or field listed in propOrder must not
     be transient or annotated with <code>@XmlTransient</code>.
 <p> The default ordering of JavaBean properties is determined
     by @<a href="../../../../jakarta/xml/bind/annotation/XmlAccessorOrder.html" title="annotation in jakarta.xml.bind.annotation"><code>XmlAccessorOrder</code></a>.</div>
<dl>
<dt>Default:</dt>
<dd>""</dd>
</dl>
</li>
</ul>
</li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="namespace--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>namespace</h4>
<pre>public abstract&nbsp;java.lang.String&nbsp;namespace</pre>
<div class="block">Name of the target namespace of the XML Schema type. By
 default, this is the target namespace to which the package
 containing the class is mapped.</div>
<dl>
<dt>Default:</dt>
<dd>"##default"</dd>
</dl>
</li>
</ul>
</li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="factoryClass--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>factoryClass</h4>
<pre>public abstract&nbsp;java.lang.Class&lt;?&gt;&nbsp;factoryClass</pre>
<div class="block">Class containing a no-arg factory method for creating an
 instance of this class. The default is this class.

 <p>If <code>factoryClass</code> is DEFAULT.class and
 <code>factoryMethod</code> is "", then there is no static factory
 method.

 <p>If <code>factoryClass</code> is DEFAULT.class and
 <code>factoryMethod</code> is not "", then
 <code>factoryMethod</code> is the name of a static factory method
 in this class.

 <p>If <code>factoryClass</code> is not DEFAULT.class, then
 <code>factoryMethod</code> must not be "" and must be the name of
 a static factory method specified in <code>factoryClass</code>.</div>
<dl>
<dt>Default:</dt>
<dd>jakarta.xml.bind.annotation.XmlType.DEFAULT.class</dd>
</dl>
</li>
</ul>
</li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="factoryMethod--">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>factoryMethod</h4>
<pre>public abstract&nbsp;java.lang.String&nbsp;factoryMethod</pre>
<div class="block">Name of a no-arg factory method in the class specified in
 <code>factoryClass</code> factoryClass().</div>
<dl>
<dt>Default:</dt>
<dd>""</dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../jakarta/xml/bind/annotation/XmlTransient.html" title="annotation in jakarta.xml.bind.annotation"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../jakarta/xml/bind/annotation/XmlType.DEFAULT.html" title="class in jakarta.xml.bind.annotation"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?jakarta/xml/bind/annotation/XmlType.html" target="_top">Frames</a></li>
<li><a href="XmlType.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Required&nbsp;|&nbsp;</li>
<li><a href="#annotation.type.optional.element.summary">Optional</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#annotation.type.element.detail">Element</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>
