XMLDB開発支援
HOME  >  XMLDB開発支援  >  Cyber Luxeonで学ぶXML DB入門 第3回:XMLデータの操作(後編)XML updategramの基本

Cyber Luxeonで学ぶXML DB入門 第3回:XMLデータの操作(後編)XML updategramの基本

WINGSプロジェクト 佐藤 治夫 (株式会社ビープラウド) [著], 山田 祥寛 [監修]

出典:開発者のための実装Webマガジン「Codezine」(株式会社翔泳社)

 

Cyber LuxeonはXMLデータの更新用機能としてXML updategram(XUG)を用意しています。XUGは、シンプルかつ強力な機能を持っており、XMLアプリケーション開発の生産性を高めるのに非常に有用です。今回はXUGの基本文法、基本機能についてサンプルを交えて説明します。

 

 

はじめに

XMLデータ操作の前編として、前回は、 XML DB上のデータを操作するための標準であるXQueryとXPathの基本文法について説明しました。前回も説明したように、XQueryのデータ操作機能で、執筆時点(2007年2月時点)で仕様が勧告となっているのは検索機能のみです。XMLデータの更新機能(作成、更新、削除)についての仕様はこれから策定が進められるという状況ですので、XML DB各製品は独自のXMLデータの更新機能を用意しています。Cyber Luxeonも類に漏れず、独自のXMLデータ更新用機能を用意しており、その更新機能は「XML updategram(以降、XUG)」と言います。後編となる本稿では、最初にこのXUGの概要、基本文法について説明し、その後、サンプルを元に XUGの基本機能について説明します。

 

XML updategram(XUG)の特徴

XUGはCyber Luxeonが用意している独自のXMLデータの追加・更新・削除機能です。XUGは、複数の追加・更新・削除処理をシンプルな文法で記述することができ、また複数のXMLドキュメントに対する処理もまとめて1トランザクションとして扱うことができるという特徴を持っています。XUGはCyber Luxeonの独自機能ですが、更新対象のXMLドキュメント内の位置を選択する場合には、XPathを使用しますので、初めてXUGを使用する開発者も違和感なく使用することができます。このXUGはシンプルな文法で複雑なXML更新用ロジックを記述することができますので、XUGを活用することで、 XMLアプリケーションの開発工数が削減されることが期待できます。XUGは、DXE ManagerやJava API、COMから実行することができます。

 

XUGを作成する2つの方法

XUGを作成する方法には、DXE ManagerのXUG自動生成機能を使用する方法と、手動でXUGを記述する方法の2通りが用意されています。DXE ManagerのXUG自動生成機能を利用する方法では、詳しいXUGの文法を知らなくても、XML更新のための記述を生成できるという便利さがあります。XUG自動生成機能は、XUGの基本的な文法を学習するのに非常に有用な機能です。一方、手動でXUGを記述する方法は、複雑なXML更新機能を定義する際に使用します。

 

XUGの自動生成機能

まずは、DXE ManagerのXUG自動生成機能でXUGを作成する方法を説明します。

XUGを自動生成するには、DXE Managerのツリーペイン上で、更新するXMLファイルを右クリックし、[更新]-[更新グラマーの自動作成]を選択します。

 

■XUGの自動作成メニュー

 

 

 

 

上記の図のように選択すると、[Updategramの自動作成]ダイアグラムが表示されます。

 

■XUGの自動作成ダイアグラム
 

 

 

 

ダイアログ上にXMLの階層構造が表示されますので、操作したいノード(要素・属性など)をツリー上で選択し、ダイアログ上部のメニューバーのアイコンで実行したい操作を選択します。要素を選択した場合、要素/属性/テキスト/CDATA/コメントの新規挿入、値の変更、順序の入れ替え、ノード削除の操作が実行できます。属性を選んだ場合、属性名の変更、値の変更、属性の削除が実行できます。以下の表に選択したノードとその際に、使用できるアイコンをまとめました。

 

 

 

 

XMLを更新する操作をダイアログ上で行った後、[保存]ボタンを押下すると、以下の図のように自動作成されたXUGが表示されます。

 

 

■変更のコミットダイアログ

 

 

 

 

 

自動作成されたXUGを編集する場合は、このダイアログ上で編集します。[OK]ボタンを押下すると、XMLドキュメントに更新内容が反映されます。

 

XUGの手動定義

XUGの自動生成機能は非常に有用な機能ですが、foreach(繰り返し)などのやや複雑な制御を自動生成する機能は用意されていません。従って、そのような複雑な処理を記述したい場合には、手動でXUGを記述する必要があります。ここでは、手動でXUGを記述する方法を説明します。

 

DXE Managerのツリーペイン(ウィンドウ左側のペイン)上で、更新対象のXMLを右クリックして、[更新]-[更新グラマーの手動作成]を選択します。

 

■XUG実行方法

 

 

 

 

「Updategramの手動作成」ダイアログが開きますので、XUGを入力して[OK]ボタンを押下します。

 

■XUG実行ダイアログ

 

 

 

 

[OK]ボタンを押下すると、更新内容がXMLに反映(コミット)されます。

 

■XUG実行確認ダイアログ

 

 

 

 

 

基本文法

XUGはそれ自体がXMLとして記述されます。以下の図に、XUGで使用される要素、属性の関係を示しました。

 

■XUGの要素、属性の関係

 

 

 

 

XUGは主に要素を使用して、XMLを新規作成・更新・削除するための制御を記述しますが、上記の図に示したように、XUGで使用される要素は大きく分けて、(1)ロジック制御系要素、(2)XMLノード作成・更新・削除系要素、(3)新規作成・更新ノード指定系要素の3つのグループに分類されます。

 

 

ロジック制御系要素

ロジック制御系要素は、XUGの繰り返しや、処理対象リソース(XML文書など)を指定するために記述されます。以下の表に、XUGのロジックを制御するための要素を示しました。

 

 

 

 

XMLノード作成・更新・削除系要素

XMLノード作成・更新・削除系の要素は、update、removeの2つです。update要素は、ノードを新規作成、更新するために記述し、remove要素はノードを削除するために記述します。以下の表にXMLノード作成・更新・削除系要素をまとめました。

 

 


新規作成・更新ノード指定系要素

ノードを新規に作成・更新する場合に、作成対象のノード情報を記述するための要素です。

 

 

要素

ノードを新規に作成するか、更新するために、update要素の子要素として指定します。以下の表に使用できる要素とその属性をまとめました。

 

 

 

copyfrom属性、movefrom属性

次の表に、location属性以外の属性についてまとめました。

 

 

 

 

サンプルのXML

それでは、実際のXMLファイルを使用して、XUGを実行してみましょう。今回扱うXMLは、以下のXML(players.xml)です。

 

 

 

 

 

著者紹介
WINGSプロジェクト 佐藤 治夫 (株式会社ビープラウド) (サトウ ハルオ)

WINGSプロジェクトについて

有限会社 WINGSプロジェクトが運営する、テクニカルライティング・プロジェクト。海外記事の翻訳から、主にサーバサイド分野の書籍・雑誌/Web記事の執筆、講演、アプリケーション開発等を幅広く手がける。2005年9月時点での登録メンバは20名で、現在も一緒に執筆をできる有志を募集中。執筆に興味のある方は、どしどし応募頂きたい。CodeZine記事は、WINGSプロジェクト執筆/山田祥寛監修で今後も続々公開予定。


山田 祥寛 (ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「入門シリーズ(サーバサイドAjax/XML DB/PEAR/Smarty)」「独習シリーズ(ASP.NET/PHP)」「10日でおぼえる入門教室シリーズ(ASP.NET/PHP/Jakarta/JSP&サーブレット/XML)」「Pocket詳解辞典シリーズ(ASP.NET/PHP/Perl&CGI)」「今日からつかえるシリーズ(PHP/JSP&サーブレット/XML/ASP)」「書き込み式 SQLのドリル」他、著書多数。

  

▲このページのTOPへ

  • XMLとは?IT初心者でもすぐわかるXML超入門
  • 無償で使える!XMLDB「NeoCore」
  • サイバーテック求人情報
  • メールマガジン申し込み
  • TEchScore

  • ▲NeoCoreについて記載されています!

  • ▲XMLマスター教則本です。試験対策はこれでばっちり!
Copyright (c) CyberTech corporation ltd. All ights Reserved. | サイバーテックについて | ご利用ガイド