Menu Close

32.2. XML namespace のマッピング

概要

XML スキーマ型、グループ、および要素の定義は、namespace を使用してスコープ指定されます。namespace は、同じ名前を使用するエンティティー間で命名の競合が発生するのを防ぎます。Java パッケージは、同じ様な目的に使用されます。したがって、Apache CXF は、スキーマドキュメントのターゲット namespace を、スキーマドキュメントに定義された構造を実装するのに必要なクラスが含まれるパッケージにマッピングします。

パッケージの命名

生成されるパッケージの名前は、以下のアルゴリズムを使用してスキーマのターゲット namespace から派生します。

  1. URI スキームがある場合、これが取り除かれます。

    注記

    Apache CXF は、http:https:、および urn: スキームのみを取り除きます。

    たとえば、namespace http:\\www.widgetvendor.com\types\widgetTypes.xsd\\widgetvendor.com\types\widgetTypes.xsd になります。

  2. 末尾のファイル型識別子がある場合、これが取り除かれます。

    たとえば、\\www.widgetvendor.com\types\widgetTypes.xsd\\widgetvendor.com\types\widgetTypes になります。

  3. 結果の文字列は、/ および : を区切り文字として使用し、文字列一覧に分類されます。

    したがって、\\www.widgetvendor.com\types\widgetTypes{"www.widegetvendor.com", "types", "widgetTypes"} の一覧になります。

  4. 一覧の最初の文字列がインターネットドメイン名である場合、以下のように分解されます。

    1. 先頭の www. は取り除かれます。
    2. 残りの文字列は、. を区切り文字として使用し、コンポーネント部分に分割されます。
    3. リストの順番が逆になります。

      したがって、{"www.widegetvendor.com", "types", "widgetTypes"}{"com", "widegetvendor", "types", "widgetTypes"} になります。

      注記

      インターネットドメイン名は .com.net.edu.org.gov のいずれか、または 2 文字の国コードのいずれかで終わります。

  5. 文字列はすべての小文字に変換されます。

    したがって、{"com", "widegetvendor", "types", "widgetTypes"}{"com", "widegetvendor", "types", "widgettypes"} になります。

  6. 文字列は、以下のように有効な Java パッケージ名コンポーネントに正規化されます。

    1. 文字列に特殊文字が含まれると、特殊文字はアンダースコア (_) に変換されます。
    2. いずれかの文字列が Java キーワードの場合は、キーワードの前にアンダースコア (_) が付けられます。
    3. 文字列のいずれかが数字で始まる場合は、文字列の前にアンダースコア (_) が付けられます。
  7. 文字列は、. を区切り文字として使用して連結されます。

    したがって、{"com", "widegetvendor", "types", "widgettypes"} はパッケージ名 com.widgetvendor.types.widgettypes になります。

namespace http:\\www.widgetvendor.com\types\widgetTypes.xsd で定義された XML スキーマ構造は、Java パッケージ com.widgetvendor.types.widgettypes にマッピングされます。

パッケージの内容

JAXB で生成されたパッケージには、以下の項目が含まれます。

  • スキーマで定義された各複合型を実装するクラス

    複合型のマッピングの詳細は、「35章複合型の使用」を参照してください。

  • enumeration ファセットを使用して定義された単純型の列挙型

    列挙のマッピング方法についての詳細は、「列挙」を参照してください。

  • スキーマからオブジェクトをインスタンス化するメソッドが含まれるパブリック ObjectFactory クラス

    ObjectFactory クラスの詳細は、「オブジェクトファクトリー」を参照してください。

  • パッケージのクラスに関するメタデータを提供する package-info.java ファイル