基本文法
XUGはそれ自体がXMLとして記述されます。以下の図に、XUGで使用される要素、属性の関係を示しました。
XUGは主に要素を使用して、XMLを新規作成・更新・削除するための制御を記述しますが、上記の図に示したように、XUGで使用される要素は大きく分けて、(1)ロジック制御系要素、(2)XMLノード作成・更新・削除系要素、(3)新規作成・更新ノード指定系要素の3つのグループに分類されます。
ロジック制御系要素
ロジック制御系要素は、XUGの繰り返しや、処理対象リソース(XML文書など)を指定するために記述されます。以下の表に、XUGのロジックを制御するための要素を示しました。
要素名 | 要素説明 | 属性 | 属性説明 |
xlnupdate | 唯一のルート要素。 | version | XUGのバージョン(1.0)を指定。 |
foreach | 繰り返し制御を行うために使用する。 | select | 処理対象のXMLノードをXPathで指定。 |
from | 操作のソースを指定するために使用する。from要素は、foreach要素の直下にある必要がある。 | select | 処理対象カレントノードをXPathで設定。 |
document | update要素の操作対象となるXML文書を指定。 | filepath、storename | filepath属性にはCyberLuxeonに保存されたXMLドキュメントへのファイルパスを指定(XMLストア名は含まない)。storename属性には、XMLドキュメントのXMLストア名を指定(省略時はカレントのXMLストアが使用される)。 |
XMLノード作成・更新・削除系要素
XMLノード作成・更新・削除系の要素は、update、removeの2つです。update要素は、ノードを新規作成、更新するために記述し、remove要素はノードを削除するために記述します。以下の表にXMLノード作成・更新・削除系要素をまとめました。
要素名 | 要素説明 | 属性 | 属性説明 |
update | 新規ノードの作成、既存ノードの更新のために使用。子要素に新規作成・更新ノード指定系要素を記述する。 | select | XPath式を指定し、更新対象のノードを指定する。 |
remove | ノードを削除するために使用する。 | select | XPath式を指定し、削除対象のXMLノードを指定する。 |
新規作成・更新ノード指定系要素
ノードを新規に作成・更新する場合に、作成対象のノード情報を記述するための要素です。
要素
ノードを新規に作成するか、更新するために、update要素の子要素として指定します。以下の表に使用できる要素とその属性をまとめました。
要素名 | 新規作成・更新対象ノード | 属性 | 説明 |
element | 要素ノード | location、copyfrom、movefrom | 下記参照。 |
comment | コメントノード | location、copyfrom、movefrom | 下記参照。 |
text | テキストノード | location、copyfrom、movefrom | 下記参照。 |
cdata | CDATAセクションノード | location、copyfrom、movefrom | 下記参照。 |
attribute | 属性ノード | name、keepspace | name属性には属性名を、keepspace属性には、属性値にXUG上の空白文字を残すか否かの真偽値を設定する(省略時はfalse)。 |
pi | 処理命令ノード | name、location、copyfrom、movefrom | name属性には、処理命令の名前を指定する。location、copyfrom、movefromについては、下記参照。 |
属性
更新対象ノード系の要素(attribute要素を除く)に共通して指定できる属性として、location、copyfrom、movefromの3つが用意されています。
location属性
location
属性は、ノードの新規作成・更新処理時にカレントノードからみた処理対象ノードの作成・更新位置を選択するための属性です。以下の図にlocation
属性ごとのノード作成位置を示しました。
以下の表に、上図に登場したlocation
属性の値をまとめました。
属性値 | 説明 |
firstchild | カレントノードの子ノードの先頭に新規作成。 |
lastchild | カレントノードの子ノードの一番最後に新規作成。 |
insert | カレントノードに新規子ノードを挿入。 |
before | カレントノードに新規兄ノードを生成。 |
after | カレントノードに新規弟ノードを生成。 |
replace | XPathで指定した既存カレントノードを置き換え。location属性を省いた場合のデフォルト値。 |
copyfrom属性、movefrom属性
次の表に、location
属性以外の属性についてまとめました。
属性名 | 説明 |
copyfrom | 生成/更新対象のノードのコピー元ノードをXPath式で指定。 |
movefrom | 生成/更新対象のノードの移動元ノードをXPath式で指定。 |
サンプルのXML
それでは、実際のXMLファイルを使用して、XUGを実行してみましょう。今回扱うXMLは、以下のXML(players.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>