XML の生成にエージェントを使用する最大の利点の 1 つはその柔軟性です。エージェントは、スケジュールや、イベント、URL コマンドへの対応に従って実行できるからです。このような柔軟性は、自動化された XML アプリケーションの作成に欠かせません。例えば、書店の Web サイトには、顧客が月刊のニュースレターに記事を投稿できるデータベースがあります。編集と承認のワークフロー処理があり、記事はシステムに送られて最終的に承認されます。エージェントが一時間ごとに実行され、発行の準備の整った記事を収集して XML に変換します。次にエージェントがそれらの記事を静的な XML 文書として他のデータベースに配置します。そのデータベースから購読者が記事を入手します。
ROI Books アプリケーションには createXML と呼ばれるエージェントがあり、ビューの各文書に XML を生成し、ブラウザまたはサーバーからの要求に基づいて送信します。このエージェントの出力を確認するには、Microsoft Internet Explorer 5 で ROI Books アプリケーションを開いて [XML Agent] リンクをクリックするか、OpenAgent URL コマンドを使用してエージェントを実行します。
http://host/roiBooks.nsf/createXML?OpenAgent
エージェントを作成して、出力結果を印刷するだけでなく、XML の出力結果を文字列変数に格納し、LS:DO や DECS コネクタ API を使用して静的な XML 文書や他のデータベースシステムに書き込みをすることもできます。
次の例は、XML という名前のビューから各文書を取り出し、その内容から XML を作成し、出力を印刷する LotusScript® エージェントです。
Dim s As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim view As NotesView
Set db = s.currentDatabase
Set view = db.GetView( "XML" )
Set doc = view.GetFirstDocument
Print "Content-type: text/xml"
'Prevents Domino from sending default headers.
Print "<BOOKCATALOG>"
'BOOKCATALOG is the root element of the XML document.
While Not ( doc Is Nothing )
'Loop as long as there are document objects available.
Print "<BOOK>"
'Send the parent element for each book document.
Print "<bookTitle>"+doc.bookTitle(0)+"</bookTitle>"
Print "<bookAuthor>"+doc.bookAuthor(0)+"</bookAuthor>"
Print "<bookPrice>"+doc.bookDiscountPrice(0)+"</bookPrice>"
Print "<bookCategory>"+doc.bookCategory(0)+"</bookCategory>"
Print "</BOOK>"
'Close the book element tag.
Set doc = view.GetNextDocument( doc )
'Get the next document in the view.
Wend
Print "</BOOKCATALOG>"
'Closes the root element.