コンテンツにスキップ

XML_REPLACE系

関数名 引数 戻り値
XML_REPLACE any, string int
int, string, string(, int) int
ref string, string, string(, int) int
XML_REPLACE_BYNAME string, string, string(, int) int

API

1. int XML_REPLACE xmlId, newXml
2. int XML_REPLACE xmlId, xpath, newXml(, doSetAll)
3. int XML_REPLACE ref xml, xpath, newXml(, doSetAll)
4. int XML_REPLACE_BYNAME xmlName, xpath, newXml(, doSetAll)
指定したXMLに対して、xpathの規則でxmlからノードを選択し、合致ノードをnewXmlで上書きします(XPathについて)。
doSetAll0または省略、かつ合致結果数が1以上である場合、上書きは行われません。成功した場合、合致結果の数を返す。失敗した場合、0を返す。

  1. xmlIdで保存したXmlDocumentのルートノードをnewXmlで上書きします。XmlDocumentが存在していない場合、-1を返します。xmlIdは整数型の場合、その文字列に変換した結果(TOSTR)を使います。
  2. xmlIdを文字列に変換した結果(TOSTR)をキーとして、保存したXmlDocumentからノードを選択します。XmlDocumentが存在していない場合、-1を返します。
  3. xmlからノードを選択し、結果をxmlに代入します。xmlは変数でなければなりません。
  4. xmlNameをキーとして、保存したXmlDocumentからノードを選択します。XmlDocumentが存在していない場合、-1を返します。

注意

実際のXmlNodeインスタンスを得ることではないため、xpathの先頭に「//」の表現を使っても意味がありません。

ヒント

命令、式中関数両方対応しています。

MAIN.ERB
@SYSTEM_TITLE
    #DIMS xml = "<xml/>"

    XML_DOCUMENT 0, xml
    PRINTFORML {XML_REPLACE(0, "<xml><boy/></xml>")} -> %XML_TOSTR(0)%
    PRINTFORML {XML_REPLACE(0, "/xml/boy", "<girl/>")} -> %XML_TOSTR(0)%

    ONEINPUT
結果
1 -> <xml><boy /></xml>
1 -> <xml><girl /></xml>