0
我想刪除正在存儲在數據庫的類型化xml列中的菜單xml中的一些節點。
片段從菜單XML -SQL Server - xml類型列 - XML DML
<menu xmlns="http://xxx" ..>
<menuItem name="Menu1">
<menuItem name="SubMenu1">
<role>role1</role>
<url target="webPage1.aspx" />
</menuItem>
</menuItem>
我試圖刪除<role>
menuItem = "SubMenu1"
下使用以下XML DML -
UPDATE [dbo].[MenuTest]
SET xmlMenu.modify('
declare namespace ns="http://xxx";
delete(/ns:menu/ns:menuItem[@name="Menu1"]/ns:menuItem[@name="SubMenu1"]/ns:role[1])
')
但收到此錯誤:
Msg 6965, Level 16, State 1, Line 1
XML Validation: Invalid content. Expected element(s):http://xxx:role where element 'http://xxx:url' was specified.
可以請貴我在這裏失去了什麼。
謝謝!
好知道:-)也可以請指導我怎麼能刪除文本「role1上」節點,所以如果我有多個 節點,我想只有那些不必刪除特定的文本值。 –
iniki
@iniki - 用'ns:role [']替換'ns:role [1]'。 =「role1」]'它將刪除所有具有值'role1'的''節點。 –
感謝您的回覆,但我收到此錯誤 - 無法隱式地將'fn:data()'應用於複雜內容元素,在推斷類型元素中找到類型'xs:anyType'(ns {xxx}:role, XS:anyType的)」。 – iniki