|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object org.xml.sax.helpers.NamespaceSupport
public class NamespaceSupport
SAX を使用するアプリケーションによって、また内部的には SAX ドライバによって使用する名前空間論理をカプセル化します。
このモジュールは、ソースコード、文書ともに公開ドメインに置かれています。したがって、内容に関する保証は一切提供されません。詳細は、http://www.saxproject.org を参照してください。
このクラスは名前空間処理のロジックをカプセル化します。このクラスを使用して、各コンテキストで現在有効な宣言を追跡し、XML 修飾名から自動的に名前空間部分を生成できます。名前空間を生成元の XML qname に戻すこともできます。
名前空間サポートオブジェクトは再利用可能ですが、次のセッションまでの間に 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#"); 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]); 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 ドライバ (パーサ) はこのクラスを選択して名前空間処理を実装する場合がありますが、これは要求されません。アプリケーションが名前空間情報を使用する場合は、アプリケーション自体が名前空間情報を追跡する必要があります。
フィールドの概要 | |
---|---|
static String |
NSDECL
定数としての名前空間宣言 URI を表します。 |
static String |
XMLNS
定数で XML 名前空間 URI を表します。 |
コンストラクタの概要 | |
---|---|
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 を取得します。 |
boolean |
isNamespaceDeclUris()
名前空間宣言の属性が名前空間に配置された場合は true を返します。 |
void |
popContext()
以前の名前空間コンテキストに戻します。 |
String[] |
processName(String qName,
String[] parts,
boolean isAttribute)
現在のコンテキスト内のすべての宣言が declarePrefix() によって処理されたあと、raw XML の修飾名を処理します。 |
void |
pushContext()
新しい名前空間コンテキストを開始します。 |
void |
reset()
この名前空間サポートオブジェクトを再利用するため、リセットします。 |
void |
setNamespaceDeclUris(boolean value)
名前空間宣言の属性が processName() によって NSDECL 名前空間に配置されるかどうかを制御します。 |
クラス java.lang.Object から継承されたメソッド |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
フィールドの詳細 |
---|
public static final String XMLNS
http://www.w3.org/XML/1998/namespace
です。
これは、「xml」接頭辞に自動的にマッピングされる名前空間 URI です。
public static final String NSDECL
http://www.w3.org/xmlns/2000/
です。この正誤表は SAX2 以降のものなので、SAX2 は元の勧告にはデフォルトで設定し、通常はこの URI は使用しません。
これは、「xmlns」属性と「xmlns:*」属性 にオプションで適用される名前空間 URI です。名前空間宣言に使用します。
setNamespaceDeclUris(boolean)
,
isNamespaceDeclUris()
,
定数フィールド値コンストラクタの詳細 |
---|
public NamespaceSupport()
メソッドの詳細 |
---|
public void reset()
名前空間サポートオブジェクトを新しいセッションで再利用する前に、このメソッドを呼び出す必要があります。名前空間宣言 URI をサポートする場合は、そのフラグもデフォルト以外の値に設定する必要があります。
setNamespaceDeclUris(boolean)
public void pushContext()
イベントコールバックコードは、要素ごとに一度だけ新しいコンテキストを開始する必要があります。つまり、2 か所のうちのどちらかでこれを呼び出す準備をします。名前空間宣言を含まない要素の場合、「ContentHandler.startElement()」コールバックが正しい場所です。このような宣言を持つ要素の場合、最初の「ContentHandler.startPrefixMapping()」コールバックで行われます。コンテキストがすでに開始されたかどうかは boolean フラグを使用して追跡できます。 メソッドのどちらかが呼び出された場合、フラグをチェックして、新しいコンテキストを開始する必要があるかどうかを見ます。開始する必要がある場合は、コンテキストを開始してフラグを設定します。「ContentHandler.startElement()」は、これを行ったあと必ずフラグをクリアします。
通常、SAX ドライバは、新しいコンテキストを各 XML 要素の先頭にプッシュします。そして、最初に属性のパスを実行してすべての名前空間宣言を処理し、「ContentHandler.startPrefixMapping()」コールバックを行います。次に、2 つ目のパスですべての属性および要素名の名前空間修飾名を決めます。これにより、「ContentHandler.startElement()」コールバックのすべての情報が使用でき、実行可能になります。
名前空間サポートオブジェクトは、すでに有効になっているベースコンテキストで開始します。このコンテキストに宣言されているのは「xml」接頭辞だけです。
ContentHandler
,
popContext()
public void popContext()
通常は、各 XML 要素の終わりにコンテキストをポップする必要があります。コンテキストをポップすると、以前に有効だったすべての名前空間接頭辞マッピングが復元されます。
コンテキストをポップしたあと、新たに名前空間接頭辞を宣言する必要がある場合は、その前に必ず別のコンテキストをプッシュしてください。
pushContext()
public boolean declarePrefix(String prefix, String uri)
processName()
を使用し、再定義される可能性がある接頭辞に対して接頭辞を解釈するパスです。
このメソッドは、現在の名前空間コンテキスト内に接頭辞を宣言します。この接頭辞は、下位コンテキストでシャドウ化されないかぎり、現在のコンテキストがポップされるまで有効です。
デフォルトによる要素の名前空間を宣言するには、空文字列を接頭辞として使用します。
別の名前空間コンテキストをプッシュしてポップしたあとや、修飾名を処理して宣言の段階を終了したとみなして接頭辞を宣言することはできません。
このライブラリには非対称性があります。デフォルトによる要素の名前空間を宣言しても、getPrefix
は接頭辞 "" を返しません。デフォルトの名前空間を確認する必要がある場合は、getURI
を使用して明示的に検索を行ってください。この非対称性により、デフォルトの接頭辞を使用できない環境でも、属性名から接頭辞を検索しやすくなっています。
prefix
- 宣言する接頭辞、またはデフォルトによる要素の名前空間を示す空文字列。値「xml」または「xmlns」を持たない場合があるuri
- 接頭辞に関連付ける名前空間 URI
processName(java.lang.String, java.lang.String[], boolean)
,
getURI(java.lang.String)
,
getPrefix(java.lang.String)
public String[] processName(String qName, String[] parts, boolean isAttribute)
declarePrefix()
によって処理されたあと、raw XML の修飾名を処理します。
このメソッドは、接頭辞を削除し、それを現在宣言されている接頭辞内で検索することによって現在のコンテキスト内で raw XML 修飾名を処理します。戻り値は呼び出し側から提供された配列になり、次のように割り当てられます。
配列内のすべての文字列が内部化されます。raw 名にまだ宣言されていない接頭辞が含まれている場合、戻り値は null になります。
属性名の処理方法は要素名の処理方法とは異なります。接頭辞を持たない要素名がデフォルトの名前空間 (存在する場合) を受け取るのに対して、接頭辞を持たない属性名はこれを受け取りません。
qName
- 処理される XML 修飾名parts
- 呼び出し元が指定した配列 (3 個以上のメンバを格納できる)isAttribute
- 属性名 (true) であるか要素名 (false) であるかを示すフラグ
declarePrefix(java.lang.String, java.lang.String)
,
public String getURI(String prefix)
このメソッドは、現在のコンテキスト内で接頭辞を検索します。デフォルトの名前空間を検索する場合は空文字列 ("") を使用します。
prefix
- 検索する接頭辞
getPrefix(java.lang.String)
,
getPrefixes()
public Enumeration getPrefixes()
注: デフォルトの接頭辞は、戻り値の列挙に返されません。デフォルトの接頭辞を確認する場合は、引数 "" を指定して getURI
を使用してください。
getDeclaredPrefixes()
,
getURI(java.lang.String)
public String getPrefix(String uri)
同じ URI に複数の接頭辞がマッピングされている場合、このメソッドはその中から無作為に 1 個を返します。すべての接頭辞を確認する場合は、このメソッドではなく getPrefixes()
メソッドを使用してください。
注: このメソッドは、空 (デフォルト) の接頭辞を返しません。デフォルトの接頭辞を確認する場合は、引数 "" を指定して getURI
を使用してください。
uri
- 名前空間 URI
getPrefixes(java.lang.String)
,
getURI(java.lang.String)
public Enumeration getPrefixes(String uri)
このメソッドは特定の名前空間 URI にマッピングされている接頭辞を返します。戻り値には、接頭辞 xml: が含まれます。名前空間 URI にマッピングされている接頭辞を無作為に 1 個だけ取得する場合は、このメソッドではなく getPrefix
メソッドを使用します。
注: 空 (デフォルト) の接頭辞は、戻り値の列挙に含まれません。デフォルトの名前空間の存在を確認する場合は、引数 "" を指定して getURI
を使用してください。
uri
- 名前空間 URI
getPrefix(java.lang.String)
,
getDeclaredPrefixes()
,
getURI(java.lang.String)
public Enumeration getDeclaredPrefixes()
getPrefix(java.lang.String)
や getPrefixes()
を使用する場合とは異なり、戻り値の列挙には、空 (デフォルト) の接頭辞も含まれます。
getPrefixes()
,
getURI(java.lang.String)
public void setNamespaceDeclUris(boolean value)
processName()
によって NSDECL
名前空間に配置されるかどうかを制御します。この変更は、すべてのコンテキストがプッシュされる前にのみ行うことができます。
IllegalStateException
- コンテキストがプッシュされたあとに設定しようとした場合public boolean isNamespaceDeclUris()
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。