CodeZine(コードジン)

特集ページ一覧

XMLデータの操作(後編) ~ XML updategramの基本

Cyber Luxeonで学ぶXMLDB入門 第3回

  • LINEで送る
  • このエントリーをはてなブックマークに追加

目次

基本文法

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

XUGの要素、属性の関係
XUGの要素、属性の関係

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

ロジック制御系要素

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

ロジック制御系要素の説明
要素名要素説明属性属性説明
xlnupdate唯一のルート要素。versionXUGのバージョン(1.0)を指定。
foreach繰り返し制御を行うために使用する。select処理対象のXMLノードをXPathで指定。
from 操作のソースを指定するために使用する。from要素は、foreach要素の直下にある必要がある。select処理対象カレントノードをXPathで設定。
documentupdate要素の操作対象となるXML文書を指定。filepath、storenamefilepath属性にはCyberLuxeonに保存されたXMLドキュメントへのファイルパスを指定(XMLストア名は含まない)。storename属性には、XMLドキュメントのXMLストア名を指定(省略時はカレントのXMLストアが使用される)。

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

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

XMLノード更新系要素の説明
要素名要素説明属性属性説明
update新規ノードの作成、既存ノードの更新のために使用。子要素に新規作成・更新ノード指定系要素を記述する。selectXPath式を指定し、更新対象のノードを指定する。
removeノードを削除するために使用する。selectXPath式を指定し、削除対象のXMLノードを指定する。

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

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

要素

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

XMLノード更新系要素の説明
要素名新規作成・更新対象ノード属性説明
element要素ノードlocation、copyfrom、movefrom下記参照。
commentコメントノードlocation、copyfrom、movefrom下記参照。
textテキストノードlocation、copyfrom、movefrom下記参照。
cdataCDATAセクションノードlocation、copyfrom、movefrom下記参照。
attribute属性ノードname、keepspacename属性には属性名を、keepspace属性には、属性値にXUG上の空白文字を残すか否かの真偽値を設定する(省略時はfalse)。
pi処理命令ノードname、location、copyfrom、movefromname属性には、処理命令の名前を指定する。location、copyfrom、movefromについては、下記参照。

属性

 更新対象ノード系の要素(attribute要素を除く)に共通して指定できる属性として、location、copyfrom、movefromの3つが用意されています。

location属性

 location属性は、ノードの新規作成・更新処理時にカレントノードからみた処理対象ノードの作成・更新位置を選択するための属性です。以下の図にlocation属性ごとのノード作成位置を示しました。

location属性によるノードの作成位置
location属性によるノードの作成位置

 以下の表に、上図に登場したlocation属性の値をまとめました。

location属性の値
属性値説明
firstchildカレントノードの子ノードの先頭に新規作成。
lastchildカレントノードの子ノードの一番最後に新規作成。
insertカレントノードに新規子ノードを挿入。
beforeカレントノードに新規兄ノードを生成。
afterカレントノードに新規弟ノードを生成。
replaceXPathで指定した既存カレントノードを置き換え。location属性を省いた場合のデフォルト値。
copyfrom属性、movefrom属性

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

location属性以外の属性
属性名説明
copyfrom生成/更新対象のノードのコピー元ノードをXPath式で指定。
movefrom生成/更新対象のノードの移動元ノードをXPath式で指定。

サンプルのXML

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

サンプルのXML
<?xml version="1.0" encoding="UTF-8"?>
<players>
    <player backnumber="51" position="外野手">イチロー</player>
    <player backnumber="55" position="外野手">松井秀樹</player>
    <player backnumber="18" position="投手">松坂大輔</player>
</players>

  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:Cyber Luxeonで学ぶXMLDB入門

著者プロフィール

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

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂...

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

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XM...

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5