Markryic 8の部分更新(パッチ)機能を使用して、同じ要求内の要素の属性と要素のテキストコンテンツの両方を変更しようとしています。MarkLogicのパッチ機能を使用してテキストコンテンツと属性の両方を置換する
私はこのような文書がある場合:
<root>
<foo a1="1" a2="2" a3="3" a4="4">text content</foo>
</root>
を私は使用してそれを更新しよう:
<rapi:patch xmlns:rapi="http://marklogic.com/rest-api">
<rapi:replace select="/root/foo">replace text</rapi:replace>
<rapi:replace select="/root/foo/@a3">replace a3</rapi:replace>
</rapi:patch>
私はXDMP-CONFLICTINGUPDATES
を取得します。ドキュメントには、「選択されたノードはパッチ内の他の操作のターゲットになることはできません。選択したノードの祖先は、同じパッチ内のdelete、replace、またはreplace-insert操作では変更できません。私は要素を選択し、テキストノードを直接選択しているわけではないので、私はここにそれを実行していると思います。
XQueryを使用して、私はこのような交換のためのテキストノードを指定することができます。
xdmp:node-replace(fn:doc($uri)/root/foo/text() , text{ "new text" })
は、しかし、私はこれはパッチで行うことができるようには見えません。 /root/foo/text()
を使用すると、無効なパスに関するエラーが発生します。パッチには、索引の定義に使用できるパス式が必要なためです。
同じリクエストでこれらの値を両方とも変更する方法はありますか?
私はそれを恐れていました。価値があるショット...ありがとう! – paloma