メインコンテンツまでスキップ
バージョン: 20 R7 BETA

DOM Create XML element

DOM Create XML element ( elementRef ; xPath {; attrName ; attrValue} {; attrName2 ; attrValue2 ; ... ; attrNameN ; attrValueN} ) : Text

引数説明
elementRefTextルートXML要素参照
xPathText作成するXML要素のXPathパス
attrNameText設定する属性
attrValueText, Boolean, Integer, Real, Time, Date新しい属性値
戻り値Text作成されたXML要素の参照

説明

DOM Create XML element コマンドは、elementRef で参照されるXML中のxPath 引数で指定された位置に新しい要素を作成し、また必要であれば属性を追加します。

elementRef にはルートの要素参照 (例えばDOM Create XML Ref コマンドで作成された) を渡します。

xPath 引数には、XPath 記法を使用して表現された、作成するパスを渡します(詳細な情報については、*XPath記法のサポート (DOM)*の章を参照してください)。以下のパス式がサポートされます:

アクション
/rootノードを指定します(絶対パス)
para[1]コンテキストノードの最初のパラ子を指定します
para[last()]コンテキストノードの最後のパラ子を指定します

互換性に関する注意: v18 R3 以降、 4D のXPath 実装はより幅広い式に対応しサポートするために変更されました。互換性上の理由から、以前の標準でない実装は返還されたデータベースではデフォルトでは維持されます。変換されたデータベースにおいて拡張された機能を利用するためには、 互換性ページの互換性オプションの標準XPath を使用するオプションを選択してください。

xPath 引数に直接単純な項目名を渡すことができます。この場合、カレントの項目のサブ項目が作成されます (例題3参照)。

存在しないパス要素があれば、それは作成されます。パス要素が既に存在する場合、新しいノードが追加されます。

注: elementRef 引数を使用して一つまたはそれ以上のツリーの名前空間を定義していた場合(DOM Create XML Ref コマンド参照)、使用したい名前空間のあとにxPath 引数を指定する必要があります(例: “MyNameSpace:MyElement”)。

任意のattrName および attrValue 引数には、属性/属性値のペアを渡すことができます(変数、フィールドまたはリテラル値形式が可能です)。渡すペアの数に制限はありません。

attrValue 引数はテキストあるいは他の型 (ブール、整数、実数、日付または時間) です。テキスト以外の型を渡した場合、4Dは以下の原則に基づきテキストへの変換を行います:

変換された値の例
ブール"true" または "false"
整数"123456"
実数"12.34" (小数点は常に ".")
日付"2006-12-04T00:00:00Z" (RFC 3339 標準)
時間"5233" (秒数)

コマンドは作成された要素のXML参照を返します。

例題 1

以下の要素を作成したいとします:

 

<RootElement> <Elem1> <Elem2> <Elem3> </Elem3> <Elem3> </Elem3> </Elem2> </Elem1> </RootElement>

これを行うには以下のコードを実行します:

 var vRootRef;vElemRef : Text
 vRootRef:=DOM Create XML Ref("RootElement")
 vxPath:="/RootElement/Elem1/Elem2/Elem3[2]"
 vElemRef:=DOM Create XML element(vRootRef;vxPath)

例題 2

以下の要素を作成したいとします (属性付き):

                                      

これを行うには以下のコードを実行します:

 var vRootRef;vElemRef : Text
 var $aAttrName1;$aAttrName2;$aAttrVal1;$aAttrVal2;$aAttrVal3 : Text

$aAttrName1:="Font"
 $aAttrName2:="Size"
 $aAttrVal1:="Verdana"
 $aAttrVal2:="10"
 $aAttrVal3:="8"
 
 vRootRef:=DOM Create XML Ref("RootElement")
 vxPath:="/RootElement/Elem1/Elem2/Elem3"
 vElemRef:=DOM Create XML element(vRootRef;vxPath;$aAttrName1;$aAttrVal1;$aAttrName2;$aAttrVal2)
 vElemRef:=DOM Create XML element(vRootRef;vxPath;$aAttrName1;$aAttrVal1;$aAttrName2;$aAttrVal3)


後から要素を挿入したい場合、以下のように書くことができます:

 vxPath:="/RootElement/Elem1/Elem2/Elem3[2]"
 vElemRef:=DOM Create XML element(vRootRef;vxPath;"Font";"Arial")

その結果、以下のような構造になります:

                                                

例題 3

以下の構造を作成して書き出したいとします:

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<Root>
   <Elem1>Hello</Elem1>
</Root>

項目名を使用したシンプルなシンタックスを使用する場合、以下のように書きます:

 var $root : Text
 var $ref1 : Text
 
 $root:=DOM Create XML Ref("Root")
 $ref1:=DOM Create XML element($root;"Elem1")
 DOM SET XML ELEMENT VALUE($ref1;"Hello")
 DOM EXPORT TO FILE($root;"mydoc.xml")
 DOM CLOSE XML($root)

システム変数およびセット

コマンドが正しく実行されるとシステム変数OKに1が設定され、そうでなければ0が設定されエラーが生成されます。

エラー管理

エラーは以下の場合に生成されます:

  • ルート要素参照が無効の場合。
  • 作成する要素の名前が無効の場合 (例えば名前が数字で始まる場合)。

参照

DOM Create XML element arrays
DOM Get XML element
DOM REMOVE XML ELEMENT