JavaTM 2
Platform
Std. Ed. v1.4.0

org.xml.sax.helpers
クラス NamespaceSupport

java.lang.Object
  |
  +--org.xml.sax.helpers.NamespaceSupport

public class NamespaceSupport
extends Object

SAX ドライバで使用できるように、名前空間ロジックをカプセル化します。

このモジュールは、ソースコード、文書ともに公開ドメインに置かれています。したがって、内容に関する保証は一切提供されません

このクラスは名前空間処理のロジックをカプセル化します。このクラスを使って、各コンテキストで現在有効な宣言を追跡し、XML 1.0 修飾名から自動的に名前空間部分を生成することができます。名前空間を生成元の XML 1.0 修飾名に戻すこともできます。

名前空間サポートオブジェクトは再利用可能ですが、次のセッションまでの間に reset メソッドを呼び出す必要があります。

以下に、単純なセッションの例を示します。

 String parts[] = new String[3];
 NamespaceSupport support = new NamespaceSupport();

 support.pushContext();
 support.declarePrefix("", "http://www.w3.org/1999/xhtml");
 support.declarePrefix("dc", "http://www.purl.org/dc#");

 String parts[] = support.processName("p", parts, false);
 System.out.println("Namespace URI: " + parts[0]);
 System.out.println("Local name: " + parts[1]);
 System.out.println("Raw name: " + parts[2]);
 
 String parts[] = support.processName("dc:title", parts, false);
 System.out.println("Namespace URI: " + parts[0]);
 System.out.println("Local name: " + parts[1]);
 System.out.println("Raw name: " + parts[2]);
 
 support.popContext();
 

このクラスは、名前空間宣言を含む要素がほとんどないことを想定して最適化されています。したがって、すべてのコンテキストで同一の前置修飾子と URI のマッピングが繰り返されるような場合は、効率が低くなる可能性があります。

導入されたバージョン:
SAX 2.0

フィールドの概要
static String XMLNS
          定数で XML 名前空間を表します。
 
コンストラクタの概要
NamespaceSupport()
          新しい名前空間サポートオブジェクトを作成します。
 
メソッドの概要
 boolean declarePrefix(String prefix, String uri)
          名前空間前置修飾子を宣言します。
 Enumeration getDeclaredPrefixes()
          このコンテキスト内に宣言されているすべての前置修飾子の列挙を返します。
 String getPrefix(String uri)
          名前空間 URI にマッピングされている前置修飾子を 1 つ返します。
 Enumeration getPrefixes()
          現在宣言されているすべての前置修飾子の列挙を返します。
 Enumeration getPrefixes(String uri)
          URI に対して現在宣言されているすべての前置修飾子の列挙を返します。
 String getURI(String prefix)
          前置修飾子を検索し、現在マッピングされている名前空間 URI を取得します。
 void popContext()
          以前の名前空間コンテキストに戻します。
 String[] processName(String qName, String[] parts, boolean isAttribute)
          raw XML 1.0 名を処理します。
 void pushContext()
          新しい名前空間コンテキストを開始します。
 void reset()
          この名前空間サポートオブジェクトを再利用するため、リセットします。
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

XMLNS

public static final String XMLNS
定数で XML 名前空間を表します。

これは、前置修飾子 "xml" に自動的にマッピングされる名前空間 URI です。

関連項目:
定数フィールド値
コンストラクタの詳細

NamespaceSupport

public NamespaceSupport()
新しい名前空間サポートオブジェクトを作成します。

メソッドの詳細

reset

public void reset()
この名前空間サポートオブジェクトを再利用するため、リセットします。

名前空間サポートオブジェクトを新しいセッションで再利用する場合は、その前にこのメソッドを呼び出す必要があります。


pushContext

public void pushContext()
新しい名前空間コンテキストを開始します。

通常は、各 XML 要素の初めに新しいコンテキストをプッシュする必要があります。新しいコンテキストは親コンテキストの宣言を自動的に継承すると同時に、このコンテキスト内で作成された宣言を引き続き追跡します。

名前空間サポートオブジェクトは、すでに有効になっているベースコンテキストで開始します。このコンテキストに宣言されているのは "xml" 前置修飾子だけです。

関連項目:
popContext()

popContext

public void popContext()
以前の名前空間コンテキストに戻します。

通常は、各 XML 要素の終わりにコンテキストをポップします。コンテキストをポップすると、以前に有効だったすべての名前空間前置修飾子マッピングが復元されます。

コンテキストをポップしたあと、新たに名前空間前置詞を宣言する必要がある場合は、その前に別のコンテキストをプッシュします。

関連項目:
pushContext()

declarePrefix

public boolean declarePrefix(String prefix,
                             String uri)
名前空間前置修飾子を宣言します。

このメソッドは、現在の名前空間コンテキスト内に前置修飾子を宣言します。この前置修飾子は、下位コンテキストでシャドウ化されないかぎり、現在のコンテキストがポップされるまで有効です。

デフォルトの名前空間を宣言するには空文字列を使用します。前置修飾子 "xml" および "xmlns" は使用できません。

別の名前空間をプッシュしてポップしたあと、前置修飾子を宣言することはできません。

このライブラリには非対称性があります。デフォルトの前置修飾子 "" を宣言しても、getPrefix はこれを返しません。デフォルトの前置修飾子を確認する必要がある場合は、getURI を使って明示的に検索を行います。この非対称性により、デフォルトの前置修飾子を使用できない環境でも、属性名から前置修飾子を検索しやすくなっています。

パラメータ:
prefix - 宣言する前置修飾子。空文字列の場合は null
uri - 前置修飾子に関連付ける名前空間 URI
戻り値:
前置修飾子が正当な場合は true、そうでない場合は false
関連項目:
processName(java.lang.String, java.lang.String[], boolean), getURI(java.lang.String), getPrefix(java.lang.String)

processName

public String[] processName(String qName,
                            String[] parts,
                            boolean isAttribute)
raw XML 1.0 名を処理します。

このメソッドは、前置修飾子を削除し、現在宣言されている前置修飾子の中からこれを検索することにより、現在のコンテキストに含まれる raw XML 1.0 名を処理します。戻り値は、呼び出し元が指定した配列です。以下を参照してください。

parts[0]
名前空間 URI。使用されていない場合は空文字列
parts[1]
ローカル名 (前置修飾子なし)
parts[2]
元の raw 名

配列内のすべての文字列が内部化されます。raw 名にまだ宣言されていない前置修飾子が含まれている場合、戻り値は null になります。

属性名の処理方法は要素名の処理方法とは異なります。前置修飾子を持たない要素名がデフォルトの名前空間 (存在する場合) を受け取るのに対して、前置修飾子を持たない要素名はこれを受け取りません。

パラメータ:
qName - 処理される raw XML 1.0 名
parts - 呼び出し元が指定した配列 (3 個以上のメンバを格納できる)
isAttribute - 属性名 (true) であるか要素名 (false) であるかを示すフラグ
戻り値:
名前空間 URI または空文字列、ローカル名、および raw XML 1.0 名を示す、3 つの内部化された文字列が格納された所定の配列。未宣言の前置修飾子がある場合は null
関連項目:
declarePrefix(java.lang.String, java.lang.String), String.intern()

getURI

public String getURI(String prefix)
前置修飾子を検索し、現在マッピングされている名前空間 URI を取得します。

このメソッドは、現在のコンテキスト内で前置修飾子を検索します。デフォルトの名前空間を検索する場合は空文字列 ("") を使用します。

パラメータ:
prefix - 検索する前置修飾子
戻り値:
関連名前空間 URI。前置修飾子がこのコンテキスト内で宣言されていない場合は null
関連項目:
getPrefix(java.lang.String), getPrefixes()

getPrefixes

public Enumeration getPrefixes()
現在宣言されているすべての前置修飾子の列挙を返します。

注: デフォルトの前置修飾子は、戻り値の列挙には含まれません。デフォルトの前置修飾子を確認したい場合は、引数 "" を指定して getURI を使用してください。

戻り値:
現在のコンテキスト内に宣言されているすべての前置修飾子の列挙。ただし空 (デフォルト) の前置修飾子は含まれない
関連項目:
getDeclaredPrefixes(), getURI(java.lang.String)

getPrefix

public String getPrefix(String uri)
名前空間 URI にマッピングされている前置修飾子を 1 つ返します。

同じ URI に複数の前置修飾子がマッピングされている場合、このメソッドはその中から無作為に 1 個を返します。すべての前置修飾子を確認したい場合は、このメソッドではなく getPrefixes() メソッドを使用してください。

注: このメソッドは、空 (デフォルト) の前置修飾子は返しません。デフォルトの前置修飾子を確認したい場合は、引数 "" を指定して getURI を使用してください。

パラメータ:
uri - 名前空間 URI
戻り値:
指定の URI に現在マッピングされている前置修飾子のうち 1 つ。現在マッピングされている前置修飾子がない場合、URI がデフォルトの名前空間に割り当てられている場合は null
関連項目:
getPrefixes(java.lang.String), getURI(java.lang.String)

getPrefixes

public Enumeration getPrefixes(String uri)
URI に対して現在宣言されているすべての前置修飾子の列挙を返します。

このメソッドは特定の名前空間 URI にマッピングされている前置修飾子を返します。戻り値には、前置修飾子 xml: が含まれます。名前空間 URI にマッピングされている前置修飾子を無作為に 1 個だけ取得したい場合は、このメソッドではなく getPrefix メソッドを使用します。

注: 空 (デフォルト) の前置修飾子は、戻り値の列挙には含まれません。デフォルトの前置修飾子を確認したい場合は、引数 "" を指定して getURI を使用してください。

パラメータ:
uri - 名前空間 URI
戻り値:
現在のコンテキスト内に宣言されているすべての前置修飾子の列挙
関連項目:
getPrefix(java.lang.String), getDeclaredPrefixes(), getURI(java.lang.String)

getDeclaredPrefixes

public Enumeration getDeclaredPrefixes()
このコンテキスト内に宣言されているすべての前置修飾子の列挙を返します。

getPrefix(java.lang.String)getPrefixes() を使用する場合とは異なり、戻り値の列挙には、空 (デフォルト) の前置修飾子も含まれます。

戻り値:
このコンテキスト内に宣言されているすべての前置修飾子の列挙
関連項目:
getPrefixes(), getURI(java.lang.String)

JavaTM 2
Platform
Std. Ed. v1.4.0

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

Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.