<!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>
</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>
</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</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&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>
