SophiaFramework UNIVERSE 5.3 |
#include <SFXXMLDefaultHandler.hpp>
class SFXXMLDefaultHandler;
SFMTYPEDEFCLASS(SFXXMLDefaultHandler)
SAX パーサー(SFXXMLSAXParser)では、XML 文書を先頭から順に読み込み、 要素や CDATA セクションの開始や終了を検出する度にイベントを発生します。 それらのイベントは、SFXXMLDefaultHandler クラスを継承する、 それぞれのハンドラ関数に通知されて処理されます。
イベントの順序は、XML 文書に含まれる情報の内容と一致します。 たとえば、ある要素の内容(文字データ、処理命令、サブ要素など)は、 StartElement イベントと EndElement イベントの間に順番に並べられます。
SAX パーサー(SFXXMLSAXParser)を利用するには、 SFXXMLDefaultHandler クラスを継承するクラスを実装して、 SFXXMLSAXParser::SetDefaultHandler 関数を使用して SAX パーサー(SFXXMLSAXParser)に登録する必要があります。
SAX パーサー(SFXXMLSAXParser)には、DOM パーサー(SFXXMLDOMParser) よりも少ないメモリで速く解析できるというメリットがあります。
例 860. SAX パーサーのハンドラクラスの定義と実装
// SAX パーサーのイベントハンドラクラス class MyXMLHandler : public SFXXMLDefaultHandler { public: explicit MyXMLHandler(Void); virtual ~MyXMLHandler(Void); // 各ハンドラ // XML 文書の始まりと終わりを通知を取得するハンドラ virtual Void StartDocument(Void); virtual Void EndDocument(Void); // DTD の通知を取得するハンドラ virtual Void StartDTD(SFXAnsiStringConstRef name, SFXAnsiStringConstRef publicId, SFXAnsiStringConstRef systemId); virtual Void EndDTD(Void); virtual Void StartEntity(SFXAnsiStringConstRef name); virtual Void EndEntity(SFXAnsiStringConstRef name); virtual Void NotationDecl(SFXAnsiStringConstRef name, SFXAnsiStringConstRef publicId, SFXAnsiStringConstRef systemId); virtual Void UnparsedEntityDecl(SFXAnsiStringConstRef name, SFXAnsiStringConstRef publicId, SFXAnsiStringConstRef systemId, SFXAnsiStringConstRef notationName); virtual Void ElementDecl(SFXAnsiStringConstRef name, SFXAnsiStringConstRef model); virtual Void AttributeDecl(SFXAnsiStringConstRef ename, SFXAnsiStringConstRef aname, SFXAnsiStringConstRef type, SFXAnsiStringConstRef valuedefault, SFXAnsiStringConstRef value); virtual Void InternalEntityDecl(SFXAnsiStringConstRef name, SFXAnsiStringConstRef value); virtual Void ExternalEntityDecl(SFXAnsiStringConstRef name, SFXAnsiStringConstRef publicId, SFXAnsiStringConstRef systemId); // XML インスタンス(XML 文書のデータの内容)の通知を取得するハンドラ virtual Void StartElement(SFXAnsiStringConstRef uri,SFXAnsiStringConstRef localname, SFXAnsiStringConstRef qname, SFXXMLGrammar::XMLAttrListConstRef attrList); virtual Void EndElement(SFXAnsiStringConstRef uri = SFXAnsiString::EmptyInstance(), SFXAnsiStringConstRef localname = SFXAnsiString::EmptyInstance(), SFXAnsiStringConstRef qname = SFXAnsiString::EmptyInstance()); virtual Void StartPrefixMapping(SFXAnsiStringConstRef prefix, SFXAnsiStringConstRef uri); virtual Void EndPrefixMapping(SFXAnsiStringConstRef prefix); virtual Void Characters(SFXAnsiStringConstRef string, BoolConst cdataSection = true); virtual Void IgnorableWhitespace(SFXAnsiStringConstRef string); virtual Void ProcessingInstruction(SFXAnsiStringConstRef target, SFXAnsiStringConstRef data); virtual Void Comment(SFXAnsiStringConstRef string); virtual Void StartCDATA(Void); virtual Void EndCDATA(Void); // エラーの通知を取得するハンドラ virtual Void ErrorReport(SFCErrorConst error, SFXAnsiStringConstRef errInfo); }; // コンストラクタ MyXMLHandler::MyXMLHandler(Void) { return; } // デストラクタ MyXMLHandler::~MyXMLHandler(Void) { return; } // 文書の開始通知を受け取るハンドラ Void MyXMLHandler::StartDocument(Void) { TRACE("document start"); } // 文書の終了通知を受け取るハンドラ Void MyXMLHandler::EndDocument(Void) { TRACE("document end"); } // 要素の開始通知を受け取るハンドラ Void MyXMLHandler::StartElement(SFXAnsiStringConstRef uri, SFXAnsiStringConstRef localname, SFXAnsiStringConstRef qname, SFXXMLGrammar::XMLAttrListConstRef attrList) { // 要素名を表示する TRACE("element: %s start", qname.GetCString()); // 要素の最初の属性に対応する列挙子を取得する SFXXMLGrammar::XMLAttrList::Enumerator etor = attrList.GetFirstEnumerator(); // すべての属性の名前と値を表示する while (etor.HasNext()) { SFXXMLGrammar::LPXMLATTR attr = etor.GetNext(); // 次の属性を取得する TRACE("attrname: %s", attr->_attName.GetCString()); // 属性の名前を表示する TRACE("attrvalue: %s", attr->_value.GetCString()); // 属性の値を表示する } } // 要素の終了通知を受け取るハンドラ Void MyXMLHandler::EndElement(SFXAnsiStringConstRef uri, SFXAnsiStringConstRef localname, SFXAnsiStringConstRef qname) { TRACE("element: %s end", qname.GetCString()); } // 文字データの通知を受け取るハンドラ Void MyXMLHandler::Characters(SFXAnsiStringConstRef string, BoolConst /*cdataSection*/) { TRACE("text: %s", string.GetCString()); return; } // ↓以下は空のハンドラ ( イベントを無視する場合も定義する ) // 不要な空白文字の通知を受け取るハンドラ Void MyXMLHandler::IgnorableWhitespace(SFXAnsiStringConstRef string) { return; } // コメントの通知を受け取るハンドラ Void MyXMLHandler::Comment(SFXAnsiStringConstRef string) { return; } // CDATA セクションの開始通知を受け取るハンドラ Void MyXMLHandler::StartCDATA(Void) { return; } // CDATA セクションの終了通知を受け取るハンドラ Void MyXMLHandler::EndCDATA(Void) { return; } // 処理命令の通知を受け取るハンドラ Void MyXMLHandler::ProcessingInstruction(SFXAnsiStringConstRef target, SFXAnsiStringConstRef data) { return; } // 名前空間接頭辞と URI 名前空間マッピングのスコープの開始通知を受け取るハンドラ Void MyXMLHandler::StartPrefixMapping(SFXAnsiStringConstRef prefix, SFXAnsiStringConstRef uri) { return; } // 名前空間接頭辞と URI 名前空間マッピングのスコープの終了通知を受け取るハンドラ Void MyXMLHandler::EndPrefixMapping(SFXAnsiStringConstRef prefix) { return; } // DTD 宣言の開始通知を受け取るハンドラ Void MyXMLHandler::StartDTD(SFXAnsiStringConstRef name, SFXAnsiStringConstRef publicId, SFXAnsiStringConstRef systemId) { return; } // DTD 宣言の終了通知を受け取るハンドラ Void MyXMLHandler::EndDTD(Void) { return; } // エンティティの開始通知を受け取るハンドラ Void MyXMLHandler::StartEntity(SFXAnsiStringConstRef name) { return; } // エンティティの終了通知を受け取るハンドラ Void MyXMLHandler::EndEntity(SFXAnsiStringConstRef name) { return; } // 要素型宣言の通知を受け取るハンドラ Void MyXMLHandler::ElementDecl(SFXAnsiStringConstRef name, SFXAnsiStringConstRef model) { return; } // ATTLIST 宣言の通知を受け取るハンドラ Void MyXMLHandler::AttributeDecl(SFXAnsiStringConstRef ename, SFXAnsiStringConstRef aname, SFXAnsiStringConstRef type, SFXAnsiStringConstRef mode, SFXAnsiStringConstRef value) { return; } // 記法宣言の通知を受け取るハンドラ Void MyXMLHandler::NotationDecl(SFXAnsiStringConstRef name, SFXAnsiStringConstRef publicId, SFXAnsiStringConstRef systemId) { return; } // 処理命令の通知を受け取るハンドラ Void MyXMLHandler::UnparsedEntityDecl(SFXAnsiStringConstRef name, SFXAnsiStringConstRef publicId, SFXAnsiStringConstRef systemId, SFXAnsiStringConstRef notationName) { return; } // 内部エンティティ宣言の通知を受け取るハンドラ Void MyXMLHandler::InternalEntityDecl(SFXAnsiStringConstRef name, SFXAnsiStringConstRef value) { return; } // 外部エンティティ宣言の通知を受け取るハンドラ Void MyXMLHandler::ExternalEntityDecl(SFXAnsiStringConstRef name, SFXAnsiStringConstRef publicId, SFXAnsiStringConstRef systemId) { return; } // エラーの通知を受け取るハンドラ Void MyXMLHandler::ErrorReport(SFCErrorConst error, SFXAnsiStringConstRef errInfo) { return; }
コンストラクタ/デストラクタ |
---|
SFXXMLDefaultHandler( Void ) SFXXMLDefaultHandler クラスのコンストラクタです。
|
~SFXXMLDefaultHandler( Void ) SFXXMLDefaultHandler クラスのデストラクタです。
|
パブリック関数 | |
---|---|
Void |
AttributeDecl(
SFXAnsiStringConstRef ename
, SFXAnsiStringConstRef aname
, SFXAnsiStringConstRef type
, SFXAnsiStringConstRef valuedefault
, SFXAnsiStringConstRef value
) AttributeDecl イベント(ATTLIST 宣言[属性宣言]の通知)を受信します。
|
Void |
Characters(
SFXAnsiStringConstRef string
, BoolConst cdataSection = true
) Characters イベント(CDATA セクションや要素の文字データの通知)を受信します。
|
Void |
Comment(
SFXAnsiStringConstRef string
) Comment イベント(コメントの通知)を受信します。
|
Void |
ElementDecl(
SFXAnsiStringConstRef name
, SFXAnsiStringConstRef model
) ElementDecl イベント(要素型宣言の通知)を受信します。
|
Void |
EndCDATA( Void ) EndCDATA イベント(CDATA セクションの終了通知)を受信します。
|
Void |
EndDTD( Void ) EndDTD イベント(DOCTYPE 宣言の終了通知)を受信します。
|
Void |
EndDocument( Void ) EndDocument イベント(XML 文書の終了通知)を受信します。
|
Void |
EndElement(
SFXAnsiStringConstRef uri = SFXAnsiString::EmptyInstance()
, SFXAnsiStringConstRef localname = SFXAnsiString::EmptyInstance()
, SFXAnsiStringConstRef qname = SFXAnsiString::EmptyInstance()
) EndElement イベント(要素の終了通知)を受信します。
|
Void |
EndEntity(
SFXAnsiStringConstRef name
) EndEntity イベント(エンティティの終了通知)を受信します。
|
Void |
EndPrefixMapping(
SFXAnsiStringConstRef prefix
) EndPrefixMapping イベント(名前空間マッピングの終了通知)を受信します。
|
Void |
ErrorReport(
SFCErrorConst error
, SFXAnsiStringConstRef errInfo
) ErrorReport イベント(エラーの通知)を受信します。
|
Void |
ExternalEntityDecl(
SFXAnsiStringConstRef name
, SFXAnsiStringConstRef publicId
, SFXAnsiStringConstRef systemId
) ExternalEntityDecl イベント(外部エンティティ宣言の通知)を受信します。
|
Void |
IgnorableWhitespace(
SFXAnsiStringConstRef string
) IgnorableWhitespace イベント(不要な空白文字列の通知)を受信します。
|
Void |
InternalEntityDecl(
SFXAnsiStringConstRef name
, SFXAnsiStringConstRef value
) InternalEntityDecl イベント(内部エンティティ宣言の通知)を受信します。
|
Void |
NotationDecl(
SFXAnsiStringConstRef name
, SFXAnsiStringConstRef publicId
, SFXAnsiStringConstRef systemId
) NotationDecl イベント(記法宣言の通知)を受信します。
|
Void |
ProcessingInstruction(
SFXAnsiStringConstRef target
, SFXAnsiStringConstRef data
) ProcessingInstruction イベント(処理命令の通知)を受信します。
|
Void |
StartCDATA( Void ) StartCDATA イベント(CDATA セクションの開始通知)を受信します。
|
Void |
StartDTD(
SFXAnsiStringConstRef name
, SFXAnsiStringConstRef publicId
, SFXAnsiStringConstRef systemId
) StartDTD イベント(DOCTYPE 宣言の開始通知)を受信します。
|
Void |
StartDocument( Void ) StartDocument イベント(XML 文書の開始通知)を受信します。
|
Void |
StartElement(
SFXAnsiStringConstRef uri
, SFXAnsiStringConstRef localname
, SFXAnsiStringConstRef qname
, SFXXMLGrammar::XMLAttrListConstRef attrList
) StartElement イベント(要素の開始通知)を受信します。
|
Void |
StartEntity(
SFXAnsiStringConstRef name
) StartEntity イベント(エンティティの開始通知)を受信します。
|
Void |
StartPrefixMapping(
SFXAnsiStringConstRef prefix
, SFXAnsiStringConstRef uri
) StartPrefixMapping イベント(名前空間マッピングの開始通知)を受信します。
|
Void |
UnparsedEntityDecl(
SFXAnsiStringConstRef name
, SFXAnsiStringConstRef publicId
, SFXAnsiStringConstRef systemId
, SFXAnsiStringConstRef notationName
) UnparsedEntityDecl イベント(解析対象外エンティティ宣言の通知)を受信します。
|
[ public, explicit ] SFXXMLDefaultHandler(Void);
このコンストラクタは、何も行いません。
[ public, virtual ] virtual ~SFXXMLDefaultHandler(Void);
このデストラクタは、何も行いません。
[ public, virtual ] Void AttributeDecl( SFXAnsiStringConstRef ename // 要素名 SFXAnsiStringConstRef aname // 属性名 SFXAnsiStringConstRef type // 属性型を表す文字列 SFXAnsiStringConstRef valuedefault // 属性のデフォルト値を表す文字列 SFXAnsiStringConstRef value // 属性のデフォルトモード ( #IMPLIED、#REQUIRED、または #FIXED ) を表す文字列 );
この関数は、AttributeDecl イベント(ATTLIST 宣言[属性宣言]の通知)を受信します。
注意 | |
---|---|
この関数は、AttributeDecl イベント(ATTLIST 宣言[属性宣言]の通知)を受信したときに呼び出される関数です。 |
デフォルトでは何も行いません。 アプリケーション開発者は、サブクラス内でこのメソッドをオーバーライドして、 ATTLIST 宣言(属性宣言)の処理を行えます。
注意 | |
---|---|
有効な属性宣言だけが通知されます。 |
[ public, virtual ] Void Characters( SFXAnsiStringConstRef string // 文字データ(CDATA セクションの内容) BoolConst cdataSection = true // CDATASection かどうか );
XML 文書です。
常に true となります。
この関数は、Characters イベント(CDATA セクションや要素の文字データの通知)を受信します。
注意 | |
---|---|
この関数は、Characters イベント(CDATA セクションや要素の文字データの通知)を受信したときに呼び出される関数です。 |
デフォルトでは何も行いません。 アプリケーション開発者は、サブクラス内のこのメソッドをオーバーライドして、 渡された文字データについての処理(ノードまたはバッファーへのデータの追加、データのファイルへの出力など)を行えます。
注意 | |
---|---|
SAX パーサーは、この関数を呼び出して文字データを通知します。 CDATA セクションや要素の内容は、Characters イベントを解して string 引数に渡されます。 cdataSection 引数には、常に true が渡されます。 |
[ public, virtual ] Void Comment( SFXAnsiStringConstRef string // コメントの内容 );
この関数は、Comment イベント(コメントの通知)を受信します。
注意 | |
---|---|
この関数は、Comment イベント(コメントの通知)を受信したときに呼び出される関数です。 |
デフォルトでは何も行いません。 アプリケーション開発者は、サブクラス内でこのメソッドをオーバーライドして、 コメントについての処理を行えます。
注意 | |
---|---|
コメントの内容は、string 引数に渡されます。 |
[ public, virtual ] Void ElementDecl( SFXAnsiStringConstRef name // 要素名 SFXAnsiStringConstRef model // 正規化された内容モデル(content model) );
この関数は、ElementDecl イベント(要素型宣言の通知)を受信します。
注意 | |
---|---|
この関数は、ElementDecl イベント(要素型宣言の通知)を受信したときに呼び出される関数です。 |
デフォルトでは何も行いません。 アプリケーション開発者は、サブクラス内でこのメソッドをオーバーライドして、 要素型宣言の処理を行えます。
正規化された内容モデル(Normalized Content Model) | |
---|---|
パラメータエンティティは展開され、 余分な空白文字は削除された内容モデルのことです。 |
[ public, virtual ] Void EndCDATA(Void);
この関数は、EndCDATA イベント(CDATA セクションの終了通知)を受信します。
注意 | |
---|---|
この関数は、EndCDATA イベント(CDATA セクションの終了通知)を受信したときに呼び出される関数です。 |
デフォルトでは何も行いません。 アプリケーション開発者は、サブクラス内でこのメソッドをオーバーライドして、 CDATA セクションの終わりの処理を行えます。
注意 | |
---|---|
CDATA セクションの内容は、Characters イベントを介して通知されます。 このイベントは境界の通知だけに使われます。 イベントは、StartCDATA、Characters、EndCDATA の順に発生します。 |
[ public, virtual ] Void EndDTD(Void);
この関数は、EndDTD イベント(DOCTYPE 宣言の終了通知)を受信します。
注意 | |
---|---|
この関数は、EndDTD イベント(DOCTYPE 宣言の終了通知)を受信したときに呼び出される関数です。 |
デフォルトでは何も行いません。 アプリケーション開発者は、サブクラス内でこのメソッドをオーバーライドして、 DOCTYPE 宣言の終わりの処理を行えます。
注意 | |
---|---|
XML 文書に DOCTYPE 宣言が含まれていない場合、EndDTD イベントは発生しません。 |
[ public, virtual ] Void EndDocument(Void);
この関数は、EndDocument イベント(XML 文書の終了通知)を受信します。
注意 | |
---|---|
この関数は、EndDocument イベント(XML 文書の終了通知)を受信したときに呼び出される関数です。 |
デフォルトでは何も行いません。 アプリケーション開発者は、サブクラス内でこのメソッドをオーバーライドして、 文書の終わりの処理(ツリーの終了処理、出力ファイルの終了など)を行えます。
[ public, virtual ] Void EndElement( SFXAnsiStringConstRef uri = SFXAnsiString::EmptyInstance() // 要素の名前空間 URI(名前空間処理が行われない場合は null) SFXAnsiStringConstRef localname = SFXAnsiString::EmptyInstance() // 要素のローカル名(名前空間処理が行われない場合は null) SFXAnsiStringConstRef qname = SFXAnsiString::EmptyInstance() // 要素の修飾名("名前空間接頭辞:ローカル名") );
この関数は、EndElement イベント(要素の終了通知)を受信します。
注意 | |
---|---|
この関数は、EndElement イベント(要素の終了通知)を受信したときに呼び出される関数です。 |
デフォルトでは何も行いません。 アプリケーション開発者は、サブクラス内のこのメソッドをオーバーライドして、 要素の終わりの処理(ツリーノードの終了処理、出力内容のファイルへの書き込みなど)を行えます。
注意 | |
---|---|
SAX パーサーは、XML 文書内の要素の終わりでこの関数を呼び出します。 要素が空である場合も含め、EndElement イベントには対応する StartElement イベントが存在します。 SFXXMLSAXParser::SetDoNamespaces 関数または SFXXMLSAXParser::SetFeature 関数で名前空間処理の設定をしなかった場合、 uri 引数と localname 引数には null が渡されます。 |
SFXXMLDefaultHandler::StartElement | SFXXMLSAXParser::SetDoNamespaces | SFXXMLSAXParser::SetFeature
[ public, virtual ] Void EndEntity( SFXAnsiStringConstRef name // エンティティ名 );
パラメータエンティティの場合、エンティティ名は「 % 」で始まります。 外部 DTD サブセットの場合は、 "[dtd]" というエンティティ名になります。
この関数は、EndEntity イベント(エンティティの終了通知)を受信します。
注意 | |
---|---|
この関数は、EndEntity イベント(エンティティの終了通知)を受信したときに呼び出される関数です。 |
デフォルトでは何も行いません。 アプリケーション開発者は、サブクラス内でこのメソッドをオーバーライドして、 エンティティの終わりの処理を行えます。
注意 | |
---|---|
name 引数には、正規化されたエンティティ名が渡されます。 |
[ public, virtual ] Void EndPrefixMapping( SFXAnsiStringConstRef prefix // マッピングされていた名前空間接頭辞 );
この関数は、EndPrefixMapping イベント(名前空間マッピングの終了通知)を受信します。
注意 | |
---|---|
この関数は、EndPrefixMapping イベント(名前空間マッピングの終了通知)を受信したときに呼び出される関数です。 名前空間マッピングとは、名前空間接頭辞とそれに対応した名前空間 URI のペアのことです。 |
デフォルトでは何も行いません。 アプリケーション開発者は、サブクラス内でこのメソッドをオーバーライドして、 個々の接頭辞の終了位置で特定のアクションを実行できます。
注意 | |
---|---|
名前空間の処理を行う場合、 XML リーダーにより要素名や属性名の名前空間接頭辞は自動的に名前空間 URI に展開(置換)されるので、 このイベントの情報を必要としません。 しかし、文字データや属性値の中にある名前空間接頭辞は自動的に名前空間 URI に展開(置換)されません。 このような場合は、StartPrefixMapping イベントと EndPrefixMapping イベントが提供す情報を使用して、 アプリケーション側で名前空間接頭辞を適切な名前空間 URI に展開する必要があります。 一般に、StartPrefixMapping イベントは対応する StartElement イベントの前に発生し、 EndPrefixMapping イベントは対応する EndElement イベントのあとで発生します。 |
SFXXMLDefaultHandler::StartPrefixMapping | SFXXMLDefaultHandler::StartElement | SFXXMLDefaultHandler::EndElement
[ public, virtual ] Void ErrorReport( SFCErrorConst error // エラーコード SFXAnsiStringConstRef errInfo // 具体的なエラーメッセージ );
この関数は、ErrorReport イベント(エラーの通知)を受信します。
注意 | |
---|---|
この関数は、ErrorReport イベント(エラーの通知)を受信したときに呼び出される関数です。 |
デフォルトでは何も行いません。 アプリケーション開発者は、サブクラス内でこのメソッドをオーバーライドして、 エラーの処理を行えます。
注意 | |
---|---|
XML 構文解析エラー、DTD、スキーマの妥当性の問題、メモリ不足などのエラー通知を受け取ります。 |
[ public, virtual ] Void ExternalEntityDecl( SFXAnsiStringConstRef name // エンティティ名 SFXAnsiStringConstRef publicId // エンティティの公開識別子 SFXAnsiStringConstRef systemId // エンティティのシステム識別子 );
この関数は、ExternalEntityDecl イベント(外部エンティティ宣言の通知)を受信します。
注意 | |
---|---|
この関数は、ExternalEntityDecl イベント(外部エンティティ宣言の通知)を受信したときに呼び出される関数です。 |
デフォルトでは何も行いません。 アプリケーション開発者は、サブクラス内でこのメソッドをオーバーライドして、 外部エンティティ宣言の処理を行えます。
注意 | |
---|---|
有効な外部エンティティ宣言だけが通知されます。 |
[ public, virtual ] Void IgnorableWhitespace( SFXAnsiStringConstRef string // 不要な空白文字列 );
この関数は、IgnorableWhitespace イベント(不要な空白文字列の通知)を受信します。
注意 | |
---|---|
この関数は、IgnorableWhitespace イベント(不要な空白文字列の通知)を受信したときに呼び出される関数です。 |
デフォルトでは何も行いません。 アプリケーション開発者は、サブクラス内でこのメソッドをオーバーライドして、 不要な空白文字列の処理を行えます。
注意 | |
---|---|
インデント処理を行う場合、 この関数を使用して、 XML 文書に含まれる余分な不要な空白文字列を処理します。 |
[ public, virtual ] Void InternalEntityDecl( SFXAnsiStringConstRef name // エンティティ名 SFXAnsiStringConstRef value // エンティティのテキスト );
この関数は、InternalEntityDecl イベント(内部エンティティ宣言の通知)を受信します。
注意 | |
---|---|
この関数は、InternalEntityDecl イベント(内部エンティティ宣言の通知)を受信したときに呼び出される関数です。 |
デフォルトでは何も行いません。 アプリケーション開発者は、サブクラス内でこのメソッドをオーバーライドして、 内部エンティティ宣言の処理を行えます。
注意 | |
---|---|
有効な内部エンティティ宣言だけが通知されます。 |
[ public, virtual ] Void NotationDecl( SFXAnsiStringConstRef name // 記法名 SFXAnsiStringConstRef publicId // 記法の公開識別子(使用できない場合は空文字列) SFXAnsiStringConstRef systemId // 記法のシステム識別子 );
この関数は、NotationDecl イベント(記法宣言の通知)を受信します。
注意 | |
---|---|
この関数は、NotationDecl イベント(記法宣言の通知)を受信したときに呼び出される関数です。 |
デフォルトでは何も行いません。 アプリケーション開発者は、サブクラス内のこのメソッドをオーバーライドして、 文書内に宣言された記法についての処理を行えます。
[ public, virtual ] Void ProcessingInstruction( SFXAnsiStringConstRef target // 処理命令のターゲット SFXAnsiStringConstRef data // 処理命令の内容(内容が提供されない場合は空文字列) );
この関数は、ProcessingInstruction イベント(処理命令の通知)を受信します。
注意 | |
---|---|
この関数は、ProcessingInstruction イベント(処理命令の通知)を受信したときに呼び出される関数です。 |
デフォルトでは何も行いません。 アプリケーション開発者は、サブクラス内でこのメソッドをオーバーライドして、 処理命令の処理(状態変数の設定、メソッドの呼び出しなど)を行えます。
[ public, virtual ] Void StartCDATA(Void);
この関数は、StartCDATA イベント(CDATA セクションの開始通知)を受信します。
注意 | |
---|---|
この関数は、StartCDATA イベント(CDATA セクションの開始通知)を受信したときに呼び出される関数です。 |
デフォルトでは何も行いません。 アプリケーション開発者は、サブクラス内でこのメソッドをオーバーライドして、 CDATA セクションの先頭の処理を行えます。
注意 | |
---|---|
CDATA セクションの内容は、Characters イベントを介して通知されます。 このイベントは境界の通知だけに使われます。 イベントは、StartCDATA、Characters、EndCDATA の順に発生します。 |
[ public, virtual ] Void StartDTD( SFXAnsiStringConstRef name // 文書型名 SFXAnsiStringConstRef publicId // 宣言された外部 DTD サブセットの公開識別子(宣言されていない場合は空文字列) SFXAnsiStringConstRef systemId // 宣言された外部 DTD サブセットのシステム識別子(宣言されていない場合は空文字列) );
この関数は、StartDTD イベント(DOCTYPE 宣言の開始通知)を受信します。
注意 | |
---|---|
この関数は、StartDTD イベント(DOCTYPE 宣言の開始通知)を受信したときに呼び出される関数です。 |
デフォルトでは何も行いません。 アプリケーション開発者は、サブクラス内でこのメソッドをオーバーライドして、 DOCTYPE 宣言の先頭の処理を行えます。
注意 | |
---|---|
XML 文書に DOCTYPE 宣言が含まれていない場合は呼び出されません。 StartDTD イベントと EndDTD イベントは、 StartDocument イベントと EndDocument イベントの間で最初の StartElement イベントの前に発生します。 |
[ public, virtual ] Void StartDocument(Void);
この関数は、StartDocument イベント(XML 文書の開始通知)を受信します。
注意 | |
---|---|
この関数は、StartDocument イベント(XML 文書の開始通知)を受信したときに呼び出される関数です。 |
デフォルトでは何も行いません。 アプリケーション開発者は、サブクラス内でこのメソッドをオーバーライドして、 XML 文書の先頭の処理(ツリーのルートノードの割り当て、出力ファイルの作成など)を行えます。
[ public, virtual ] Void StartElement( SFXAnsiStringConstRef uri // 要素の名前空間 URI(名前空間処理が行われない場合は null) SFXAnsiStringConstRef localname // 要素のローカル名(名前空間処理が行われない場合は null) SFXAnsiStringConstRef qname // 要素の修飾名("名前空間接頭辞:ローカル名") SFXXMLGrammar::XMLAttrListConstRef attrList // 要素の属性リスト );
この関数は、StartElement イベント(要素の開始通知)を受信します。
注意 | |
---|---|
この関数は、StartElement イベント(要素の開始通知)を受信したときに呼び出される関数です。 |
デフォルトでは何も行いません。 アプリケーション開発者は、サブクラス内のこのメソッドをオーバーライドして、 要素の始まりの処理(新しいツリーノードの割り当て、出力内容のファイルへの書き込みなど)を行えます。
attrList 引数には、要素の属性リスト(SFXXMLGrammar::XMLATTR 型)が渡されます。
注意 | |
---|---|
SAX パーサーは XML 文書内の要素の前でこの関数を呼び出します。 要素が空である場合も含め、StartElement イベントには対応する EndElement イベントが存在します。 StartElement イベントに対応する EndElement イベントが発生する前に、 要素内の全コンテンツについての各イベントが順次発生します。 SFXXMLSAXParser::SetDoNamespaces 関数または SFXXMLSAXParser::SetFeature 関数で名前空間処理の設定をしなかった場合、 uri 引数と localname 引数には空文字列が渡されます。 |
SFXXMLDefaultHandler::EndElement | SFXXMLSAXParser::SetDoNamespaces | SFXXMLSAXParser::SetFeature | SFXXMLGrammar::XMLATTR
[ public, virtual ] Void StartEntity( SFXAnsiStringConstRef name // エンティティ名 );
パラメータエンティティの場合、エンティティ名は「 % 」で始まります。 外部 DTD サブセットの場合は、 "[dtd]" というエンティティ名になります。
この関数は、StartEntity イベント(エンティティの開始通知)を受信します。
注意 | |
---|---|
この関数は、StartEntity イベント(エンティティの開始通知)を受信したときに呼び出される関数です。 |
デフォルトでは何も行いません。 アプリケーション開発者は、サブクラス内でこのメソッドをオーバーライドして、 エンティティの先頭の処理を行えます。
注意 | |
---|---|
name 引数には、正規化されたエンティティ名が渡されます。 |
[ public, virtual ] Void StartPrefixMapping( SFXAnsiStringConstRef prefix // 名前空間接頭辞 SFXAnsiStringConstRef uri // 名前空間接頭辞のマップ先名前空間 URI );
この関数は、StartPrefixMapping イベント(名前空間マッピングの開始通知)を受信します。
注意 | |
---|---|
この関数は、StartPrefixMapping イベント(名前空間マッピングの開始通知)を受信したときに呼び出される関数です。 名前空間マッピングとは、名前空間接頭辞とそれに対応した名前空間 URI のペアのことです。 |
デフォルトでは何も行いません。 アプリケーション開発者は、サブクラス内でこのメソッドをオーバーライドして、 各名前空間接頭辞のスコープの開始位置における処理(接頭辞のマッピングの格納など)を行えます。
注意 | |
---|---|
名前空間の処理を行う場合、 XML リーダーにより要素名や属性名の名前空間接頭辞は自動的に名前空間 URI に展開(置換)されるので、 このイベントの情報を必要としません。 しかし、文字データや属性値の中にある名前空間接頭辞は自動的に名前空間 URI に展開(置換)されません。 このような場合は、StartPrefixMapping イベントと EndPrefixMapping イベントが提供す情報を使用して、 アプリケーション側で名前空間接頭辞を適切な名前空間 URI に展開する必要があります。 一般に、StartPrefixMapping イベントは対応する StartElement イベントの前に発生し、 EndPrefixMapping イベントは対応する EndElement イベントのあとで発生します。 |
SFXXMLDefaultHandler::EndPrefixMapping | SFXXMLDefaultHandler::StartElement | SFXXMLDefaultHandler::EndElement
[ public, virtual ] Void UnparsedEntityDecl( SFXAnsiStringConstRef name // エンティティ名 SFXAnsiStringConstRef publicId // エンティティの公開識別子(使用できない場合は空文字列) SFXAnsiStringConstRef systemId // エンティティのシステム識別子 SFXAnsiStringConstRef notationName // 記法名 );
この関数は、UnparsedEntityDecl イベント(解析対象外エンティティ宣言の通知)を受信します。
注意 | |
---|---|
この関数は、UnparsedEntityDecl イベント(解析対象外エンティティ宣言の通知)を受信したときに呼び出される関数です。 |
デフォルトでは何も行いません。 アプリケーション開発者は、サブクラス内のこのメソッドをオーバーライドして、 文書内に宣言された解析対象外エンティティについての処理を行えます。
注意 | |
---|---|
notationName 引数の記法名は、 NotationDecl イベントによって通知される記法と同一です。 解析対象外エンティティは必要に応じて後で参照できるように記録します。 解析対象外エンティティは属性値に現れることもあります。 |
Copyright(c) 2002 - 2024 Sophia Cradle Incorporated All Rights Reserved. |