这个xquery中text()的目的是什么

时间:2012-03-02 10:23:46

标签: xml xquery-sql

update tbl_xml set mov_vcds.modify('replace value of(/videos/video/title/text())[1] with "Anbu"') 

没有text()我们可以使用此查询..

2 个答案:

答案 0 :(得分:4)

text()指定title节点的内容。没有它你就得到了

Msg 2356, Level 16, State 1, Line 9
XQuery [tbl_xml.mov_vcds.modify()]: The target of 'replace value of' must be a non-metadata attribute or an element with simple typed content, found 'element(title,xdt:untyped) ?'

所以你需要它。

答案 1 :(得分:2)

很遗憾看到" text()"以这种方式使用在路径表达式的末尾,在那里它是不必要的,偶尔也是有害的。通常,您可以在要引用元素内容的上下文中使用元素节点本身。有一些例外,例如在元素构造函数

<title>{title}</title>

<title>{title/text()}</title>

做不同的事情(第一个给你<title><title>original title</title></title>)。但在这种情况下,使用title/string()通常会更好,因为它可以更好地处理嵌套注释,混合内容等。