JavaTM Platform
Standard Ed. 6

javax.xml.bind.annotation
注釈型 XmlType


@Retention(value=RUNTIME)
@Target(value=TYPE)
public @interface XmlType

クラスまたは列挙型を XML Schema 型にマップします。  

使用法

 

@XmlType 注釈は、次のプログラム要素で使用できます。

 

追加の一般的な情報については、javax.xml.bind.package javadoc の「パッケージの仕様」を参照してください。

クラスのマッピング

クラスを XML Schema 型にマップします。クラスは、プロパティーおよびフィールドで表現される値のデータコンテナです。スキーマ型は、スキーマ型のコンテンツモデル (モデルグループ、属性など) 内のスキーマコンポーネントで表現される値のデータコンテナです。 

クラスをマップするには、引数のない public コンストラクタか、引数のない static ファクトリメソッドのいずれかがクラスに含まれる必要があります。static ファクトリメソッドは、factoryMethod() および factoryClass() 注釈要素で指定することができます。非整列化の実行中に、static ファクトリメソッドまたは引数のないコンストラクタは使用され、このクラスのインスタンスが作成されます。両方ある場合、引数のないコンストラクタよりも static ファクトリメソッドが優先されます。

クラスは、XML Schema 複合型か XML Schema 単純型のいずれかにマップされます。XML Schema 型は、クラス内に含まれる JavaBean プロパティーとフィールドのマッピングに基づいて派生します。クラスがマップされるスキーマ型は、名前付きか匿名のいずれにもできます。クラスを @XmlType(name="") で注釈することによって、クラスを匿名スキーマ型にマップできます。

グローバル要素、ローカル要素、またはローカル属性を次のように匿名型に関連付けることができます。

XML Schema 複合型へのマッピング

XML Schema 単純型へのクラスのマッピング

@XmlValue 注釈を使用し、クラスを XML Schema 単純型にマップすることができます。追加の詳細情報や例については、@XmlValue 注釈型を参照してください。

次の表は、XML Schema 複合型または単純型へのクラスのマッピングを示します。この表で使用する表記記号は、次のとおりです。

対象 propOrder クラス本体 複合型 単純型
クラス {} [プロパティー]+ -> 要素 複合コンテンツ
xs:all
クラス 空以外 [プロパティー]+ -> 要素 複合コンテンツ
xs:sequence
クラス 0 プロパティーなし -> 要素 複合コンテンツ
空の sequence
クラス 0 1 [ @XmlValue プロパティー] &&
[プロパティー]+ ->属性
単純コンテンツ
クラス 0 1 [ @XmlValue プロパティー]&&
プロパティーなし -> 属性
単純型

列挙型のマッピング

列挙型を、列挙ファセットを持つ XML スキーマ単純型にマップします。次の注釈要素は意味がないため、無視されます。propOrder()factoryMethod()factoryClass()

ほかの注釈との併用

 

この注釈は、次の注釈とともに使用できます。XmlRootElementXmlAccessorOrderXmlAccessorTypeXmlEnum。ただし、この注釈が列挙型で使用される場合、XmlAccessorOrderXmlAccessorType は無視されます。  

例 1: JavaBean プロパティーの順序をカスタマイズする xs:sequence を使用した複合型にクラスをマップします。

 
   @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) {..};
   }

   <!-- XML Schema mapping for USAddress -->
   <xs:complexType name="USAddress">
     <xs:sequence>
       <xs:element name="street" type="xs:string"/>
       <xs:element name="city" type="xs:string"/>
       <xs:element name="state" type="xs:string"/>
       <xs:element name="zip" type="xs:decimal"/>
       <xs:element name="name" type="xs:string"/>
     </xs:all>
   </xs:complexType> 
 
 

例 2: xs:all を使用した複合型にクラスをマップします。

 
 @XmlType(propOrder={})
 public class USAddress { ...}
 
 <!-- XML Schema mapping for USAddress -->
 <xs:complexType name="USAddress">
   <xs:all>
     <xs:element name="name" type="xs:string"/>
     <xs:element name="street" type="xs:string"/>
     <xs:element name="city" type="xs:string"/>
     <xs:element name="state" type="xs:string"/>
     <xs:element name="zip" type="xs:decimal"/>
   </xs:sequence>
 </xs:complexType>
 

例 3: 匿名型を使用したグローバル要素にクラスをマップします。

 
   @XmlRootElement
   @XmlType(name="")
   public class USAddress { ...}

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

例 4: 匿名型を使用したローカル要素にプロパティーをマップします。  

   //Example: Code fragment
   public class Invoice {
       USAddress addr;
           ...
       }

   @XmlType(name="")
   public class USAddress { ... }
   } 

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

例 5: 匿名型を使用した属性にプロパティーをマップします。  


     //Example: Code fragment
     public class Item {
         public String name;
         @XmlAttribute 
         public USPrice price;
     }
    
     // map class to anonymous simple type. 
     @XmlType(name="")
     public class USPrice { 
         @XmlValue
         public java.math.BigDecimal price;
     }

     <!-- Example: XML Schema fragment -->
     <xs:complexType name="Item">
       <xs:sequence>
         <xs:element name="name" type="xs:string"/>
         <xs:attribute name="price">
           <xs:simpleType>
             <xs:restriction base="xs:decimal"/>
           </xs:simpleType>
         </xs:attribute>
       </xs:sequence>
     </xs:complexType>
 
 
 
      @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);
  }

 
 
      @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();
          }
      }
 

導入されたバージョン:
JAXB2.0
関連項目:
XmlElement, XmlAttribute, XmlValue, XmlSchema

任意要素の概要
 Class factoryClass
          このクラスのインスタンスを作成する引数のないファクトリメソッドを含むクラスです。
 String factoryMethod
          factoryClass factoryClass() で指定されたクラス内の引数のないファクトリメソッドの名前です。
 String name
          クラスがマップされる XML Schema 型の名前です。
 String namespace
          XML Schema 型のターゲット名前空間の名前です。
 String[] propOrder
          クラスが XML Schema 複合型にマップされる場合、XML Schema 要素の順序を指定します。
 

name

public abstract String name
クラスがマップされる XML Schema 型の名前です。

デフォルト:
"##default"

propOrder

public abstract String[] propOrder
クラスが XML Schema 複合型にマップされる場合、XML Schema 要素の順序を指定します。  

propOrder がクラスのマッピングに与える影響については、表を参照してください。

 

propOrder は、クラス内の JavaBean プロパティー名リストです。リスト内の個々の名前は、JavaBean プロパティーの Java 識別子名です。リスト内の JavaBean プロパティーの順序は、JavaBean プロパティーがマップされる XML スキーマ要素の順序です。

 

XML Schema 要素にマップされるすべての JavaBean プロパティーがリストされる必要があります。 

propOrder に含まれる JavaBean プロパティーまたはフィールドは、一時的なものであってはならず、@XmlTransient 注釈が指定されていてはいけません。 

JavaBean プロパティーのデフォルトの順序は、@XmlAccessorOrder によって決定されます。

デフォルト:
""

namespace

public abstract String namespace
XML Schema 型のターゲット名前空間の名前です。デフォルトでは、クラスを含むパッケージがマップされるターゲット名前空間です。

デフォルト:
"##default"

factoryClass

public abstract Class factoryClass
このクラスのインスタンスを作成する引数のないファクトリメソッドを含むクラスです。デフォルトはこのクラスです。  

factoryClass が DEFAULT.class で factoryMethod が「」の場合、static ファクトリメソッドはありません。  

factoryClass が DEFAULT.class で factoryMethod が「」以外の場合、factoryMethod がこのクラスの static ファクトリメソッドの名前です。  

factoryClass が DEFAULT.class 以外の場合、factoryMethod は「」であってはならず、factoryClass で指定された static ファクトリメソッドの名前である必要があります。

デフォルト:
javax.xml.bind.annotation.XmlType.DEFAULT.class

factoryMethod

public abstract String factoryMethod
factoryClass factoryClass() で指定されたクラス内の引数のないファクトリメソッドの名前です。

デフォルト:
""

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。