LotusScript で XML を使用する

次に、XML を処理する LotusScript クラスを示します。

次に、XML の処理に役立つ「ヘルパー」クラスを示します。

あるプロセッサから別のプロセッサにデータを移動するには、パイプラインを使用します。

注: COM インターフェース:

NotesXMLProcessor 基本クラス

NotesXMLProcessor クラスは、XML を処理する LotusScript クラスの基本クラスです。この基本クラスを直接使用することはありませんが、そのプロパティとメソッドをほかの XML クラスで使用できます。

NotesXMLProcessor のプロパティは次のとおりです。

NotesXMLProcessor のメソッドは次のとおりです。

複数の XML プロセスで基本プロパティとメソッドしか使用しない場合は、サブルーチンを 1 つ使用することでプログラムを簡素化できます。例えば、処理を開始してからログを検査するサブルーチンを 1 つ作成します。サブルーチンを呼び出すたびに、パラメータとして適切な XML オブジェクトを指定します。

パイプライン

パイプラインを使用すると、複数の操作を組み合わせて、ある XML プロセスの出力を別の XML プロセスの入力にすることができます。例えば、Domino データを DXL として書き出し、それを既知の XML の語彙に変換し、さらに XML を HTML に変換する標準アプリケーションを適用するとします。各プロセスは、次のプロセスにその出力を渡します。そのとき、中間の結果を保存するのではなく、パイプラインを使用して結果を渡します。

XML プロセッサは、処理前に入力と出力を指定する必要があります。その指定は、XML オブジェクトの作成時、または後から SetInputSetOutput を使用して行います。処理は、Process を使用して開始します。

パイプラインを使用するには、入力または出力を XML プロセッサとして指定します。例えば、書き出された DXL を DOM 処理に流し込む場合、NotesDXLExporter オブジェクトの出力が NotesDOMParser オブジェクトになるように指定するか、 NotesDOMParser オブジェクトの入力が NotesDXLExporter オブジェクトになるように指定します。処理を開始する前に、パイプラインのすべてのオブジェクトの入力と出力を指定します。パイプラインの先頭のプロセッサで処理を開始すると、後続のすべてのプロセッサの処理が開始されます。

パイプラインを簡単に設定するには、パイプラインの最後のプロセッサ以外のすべてのプロセッサの入力だけを指定します。最後のプロセッサに対しては、入力だけでなく出力も指定します。

次の表に、XML プロセッサで使用できる入力と出力を示します。

DXL の書き出しと呼び出し

NotesDXLExporter class クラスは、Domino データを DXL に変換します。NotesSession で CreateDXLExporter メソッドを使用して、NotesDXLExporter オブジェクトを作成します。書き出しプロセスへの入力としては、NotesDatabase、NotesDocument、NotesDocumentCollection、NotesNoteCollection の各オブジェクトを使用できます。出力としては、NotesStream オブジェクトまたは NotesRichTextItem オブジェクト、あるいはほかの XML プロセッサのいずれかを使用できます。

書き出しを開始するには、Process または Export を使用します (パイプラインなし)。

NotesDXLExporter クラスには、次のプロパティがあります。

プロパティ

データ型

説明

ConvertNotesBitmapsToGIF

Boolean 型

(読み書き可能) True の場合、Domino ビットマップを GIF 形式に変換します。

DoctypeSYSTEM

String

(読み書き可能) !DOCTYPE ステートメントの SYSTEM の値。

ForceNoteFormat

Boolean 型

(読み書き可能) False の場合は、フォーマット済みの DXL を書き出します。

OutputDOCTYPE

Boolean 型

(読み書き可能) False の場合は、!DOCTYPE ステートメントを非表示にします。

SchemaLocation

String

(読み書き可能) 書き出される DXL のスキーマの URI。

ValidationStyle

Integer

(読み書き可能) 書き出される DXL を評価するためのメソッド。

NotesDXLImporter クラスは、DXL を Domino データに変換します。NotesSession で CreateDXLImporter メソッドを使用して、NotesDXLImporter オブジェクトを作成します。呼び出しプロセスの入力としては、文字列、NotesStream オブジェクトまたは NotesRichTextItem オブジェクト、あるいはほかの XML プロセッサのいずれかを使用できます。出力は NotesDatabase オブジェクトです。

呼び出しプロセスは、新しく呼び出された文書の文書 ID のリストを作成します。これらの文書 ID には、GetFirstNoteId メソッドと GetNextNoteId メソッドを使用してアクセスできます。

呼び出しを開始するには、Process または Import を使用します (パイプラインなし)。

NotesDXLImporter クラスには、次のプロパティがあります。

プロパティ

データ型

説明

ACLImportOption

Integer

(読み書き可能) 呼び出す ACL エントリの処理を示します。

CreateFTIndex

Boolean 型

(読み書き可能) ターゲットデータベースに全文索引が作成されているかどうかを示します。

DesignImportOption

Integer

(読み書き可能) 呼び出す設計要素の処理を示します。

DocumentImportOption

Integer

(読み書き可能) 呼び出す文書の処理を示します。

ImportedNoteCount プロパティ

Long 型

(読み込み専用) 呼び出した文書の数です。

InputValidationOption

Integer

(読み書き可能) XML 宣言ステートメントで指定された DTD を使用して、入力 XML を評価するかどうかを示します。

ReplaceDbProperties

Boolean 型

(読み書き可能) True の場合は、DXL からのデータベースプロパティを置換します。

ReplicaRequiredForReplaceOrUpdate

Boolean 型

(読み書き可能) True の場合、DXL のレプリカ ID とターゲットデータベースがマッチする必要があります。

UnknownTokenLogOption

Integer

(読み書き可能) エラーログの記録オプションを示します。

XSLT を介して DXL データを変換する

XSLT を介して DXL データを変換するには:

NotesXSLTransformer クラスには、次のプロパティがあります。

プロパティ

データ型

説明

InputValidationOption

Integer

(読み書き可能) XML 宣言ステートメントで DTD が指定されている場合には、その DTD を使用して、入力される XML が評価されることを示します。

XML データを DOM ツリー構造に解析する

XML を NotesDOMNode オブジェクトの標準 DOM ツリー構造に解析するには:

NotesDOMParser クラスには、次のイベントがあります。

Event

説明

PostDOMParse

DOM パーサーを一連の XML プロセッサのパイプラインで使用できるようにするために、Process または Parse メソッドによって呼び出されます。

NotesDOMParser クラスには、次のプロパティがあります。

プロパティ

データ型

説明

AddXMLDeclNode

Boolean 型

(読み書き可能) XML 宣言行からの属性 -- version 属性、encoding 属性、standalone 属性 -- が、NotesDOMXMLDeclNode オブジェクトで作成される DOM ツリーに含まれることを示します。

文書

NotesDOMDocumentNode

(読み込み専用) DOM ツリーのルート文書です。

DoNamespaces

Boolean 型

(読み書き可能) 名前空間が評価されることを示します。

ExpandEntityReferences

Boolean 型

(読み書き可能) テキスト値に含まれるエンティティへの各参照が、エンティティのテキスト値によって置換されることを示します。

InputValidationOption

Integer

(読み書き可能) XML 宣言ステートメントで DTD が指定されている場合には、その DTD を使用して、入力される XML が評価されることを示します。

次に示す特定の NotesDOMNode クラスのメソッドを使用して、DOM ツリーのデータにアクセスします。

XML データを一連のイベントとして解析する

SAX パーサーを使用して XML を解析するには:

NotesSAXParser クラスには、次のイベントがあります。

Event

説明

SAX Characters

XML 入力内のテキストを示します。

SAX EndDocument

XML 入力の最後を示します。

SAX EndElement

XML 入力内で指定された要素の最後を示します。

SAX Error

XML 入力の処理時にエラーが発生したことを示します。

SAX FatalError

XML 入力の処理時に致命的なエラーが発生したことを示します。

SAX IgnorableWhiteSpace

XML 入力で検出された、無視できる空白を示します。

NotationDecl

XML 入力で検出された記法宣言を示します。

SAX ProcessingInstruction

XML 入力で検出された処理過程の説明を示します。

SAX ResolveEntity

入力される XML でエンティティが見つかったことを知らせます。

SAX StartDocument

XML 入力の先頭を示します。

SAX StartElement

入力される XML 特殊要素の開始を知らせます。

UnparsedEntityDecl

XML 入力で検出された未解析の外部 Entity 宣言を示します。

SAX Warning

XML 入力の処理時に警告が発生したことを示します。

NotesSAXParser クラスには、次のプロパティがあります。

プロパティ

データ型

説明

Input Validation Option

Integer

(読み書き可能) XML 宣言ステートメントで DTD が指定されている場合には、その DTD を使用して、入力される XML が評価されることを示します。