0

特定の属性に対してMarkLogicでノード置換を行う方法は?たとえば、次のようになります。

<chapters>
<title id="primary">first primary content</title>
<title id="primary">second primary content</title>
<title id="secondary">this is amy middle content</title>
<title id="terciary">this is amy last content</title>
</chapters>

私は以下のようにしたい:

<chapters>
<title id="primary">third primary content</title>
<title id="secondary">this is amy middle content</title>
<title id="terciary">this is amy last content</title>
</chapters>

A.xmlつまり、次のようなデータを含むMarkLogicデータベースサーバーに保存されているファイルを想定します。

<chaptermetadata>
<chapters>
<title id="primary">first content</title>
<title id="primary">second content</title>
<title id="secondary">This is middle content</title>
<title id="terciary">This is last content</title>
</chapters>
<chapters>
<title id="primary">fouth content</title>
<title id="primary">fifth content</title>
<title id="primary">sixth content</title>
<title id="secondary">This is new content</title>
<title id="terciary">This is old content</title>
</chapters>
<chaptermetadata>

ここで、以下のように、すべての章のtitle属性を含むすべての要素のノードを置き換えたいと思います。@id='primary'

<chaptermetadata>
<chapters>
<title id="primary">common content</title>
<title id="secondary">This is middle content</title>
<title id="terciary">This is last content</title>
</chapters>
<chapters>
<title id="primary">common content</title>
<title id="secondary">This is new content</title>
<title id="terciary">This is old content</title>
</chapters>
<chaptermetadata> 
4

2 に答える 2

1

XQuery と MarkLogic を使い始めたばかりの場合は、 http : //developer.marklogic.com/learn/technical-overviewとhttp://developer.marklogic.com/learnが役立ちます。

要素と属性を変更する最善の方法は、提供していないコンテキストによって異なります。最初の質問は、「属性でノードを選択するにはどうすればよいですか?」ということだと思います。XPath の簡単なビットがそれを行います。データベース内のすべての章について:

/chapters/title[@id eq $id]

...または以前に選択した一連の要素(チャプター)*に関連する

$chapters/title[@id eq $id]

これがデータベース ドキュメントの場合は、http: //docs.marklogic.com/xdmp :node-replaceおよびhttp://docs.marklogic.com/xdmp:node-delete関数を使用してそこから取得できます。ノードがメモリ内にのみある場合は、XQuery タイプスイッチまたは XSLT の使用に関するガイダンスと例について、http: //docs.marklogic.com/guide/app-dev/typeswitch を参照してください。http://developer.marklogic.com/blog/tired-of-typeswitchには、より多くの例と、typeswitch と XSLT の比較があります。

于 2012-12-06T16:26:31.057 に答える