1

2つのxml、xmlAxmlBがあり、の「テキストコンテンツ」をで更新したいとxmlA/abcxmlB/bcdます。

xmlA:

<root>
<abc>texas</abc>
</root>

xmlB:

<root>
<abc>kansas</abc>
</root>

を使用するxdmp:node-replace(xmlA/abc/text(), xmlB/bcd/text())と、ノードの内容ではなく、ノードが変更されます。それはxmlAです:

<root>
<bcd>kansas</bcd>
</root>

ただし、ノードのコンテンツのみを変更したい。必要な出力は次のとおりです。xmlA:

<root>
<abc>kansas</abc>
</root>

誰かがこれを行う方法を教えてもらえますか(xpath 3.0なしで)?ありがとう(ランジャン)。

4

2 に答える 2

2

実行しているMarkLogicのバージョンは? バージョン 6.0-1.1 で以下をテストしましたが、期待どおりに動作するようです。ノード置換後に保存されたドキュメントを取得すると、「kansas」が 2 回表示されますが、「a.xml」の内部要素はそのままです。

xdmp:document-insert(
    'a.xml',
    <root>
        <abc>texas</abc>
    </root>
),
xdmp:document-insert(
    'b.xml',
    <root>
        <bcd>kansas</bcd>
    </root>
);

doc('a.xml'),
doc('b.xml');

xdmp:node-replace(
    doc('a.xml')/root/abc/text(),
    doc('b.xml')/root/bcd/text()
);

doc('a.xml'),
doc('b.xml')

古いバージョンの MarkLogic を実行している場合、それはおそらく修正されたバグです..

チッ!

于 2013-01-22T07:58:42.350 に答える
1

これを試して :

xdmp:node-replace(
    xmlA/abc,
    element { "abc" } { xmlB/bcd/text() }
)
于 2013-01-22T14:37:16.473 に答える