SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Cyber Luxeonで学ぶXMLDB入門

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

Cyber Luxeonで学ぶXMLDB入門 第3回


  • X ポスト
  • このエントリーをはてなブックマークに追加

基本文法

 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>

次のページ
ノード(要素)の新規作成

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Cyber Luxeonで学ぶXMLDB入門連載記事一覧

もっと読む

この記事の著者

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

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

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

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/1065 2007/06/13 10:07

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング