我有這樣如何使用xquery更新將節點內的文本轉換爲子節點?
<root>
<first>
First Level
<second>
second level
<third>
Third Level
</third>
</second>
<second2>
another second level
</second2>
</first>
</root>
如何使用所有節點這個文件,這意味着如果一個節點包含text
和child node
文本轉換成一個子節點轉換XML文檔(讓我們childtext說)使用XQuery更新
<root>
<first>
<childtext>First Level</childtext>
<second>
<childtext>second level</childtext>
<third>
Third Level
</third>
</second>
<second2>
another second level
</second2>
</first>
</root>
這裏是我的嘗試:
let $a :=
<root>
<first>
First Level
<second>
second level
<third>
Third Level
</third>
</second>
<second2>
another second level
</second2>
</first>
</root>
return
copy $i := $a
modify (
for $x in $i/descendant-or-self::*
return (
if($x/text() and exists($x/*)) then (
insert node <childtext>
{$x/text()}
</childtext> as first into $x
(: here should be some code to delete the text only:)
) else()
)
)
return $i
我無法刪除具有兄弟節點的文本。
首先,我可以用值text()創建節點「childtext」。現在我必須刪除那些仍然存在的舊文本>我不能刪除這個文本。如果我想讓空值的其他子節點也將被刪除。 –
這裏我試圖做的: 讓$一個:= .... 回報 副本$ I:= $一個 修改( 爲$ X $中的I /後裔或自身:: * 回報( 如果($ X /文()和存在($ X/*)),然後( 插入節點 {$ X /文()} 作爲第一個進入$ X, (:這裏應該以某種方式刪除此文本或更新到一個新的水平:) )其他( ) ) ) 返回$ I –
請編輯該代碼你的問題(其公頃這裏是可讀的),並且不要忽略代碼的一部分,因此它不再運行('let $ a:= ....'當然沒有工作代碼)。你現在的代碼有什麼問題? –