<game xmlns="http://my.name.space" ></game>
这是我的根元素。我已经写了一个存储过程来插入元素。综上所述存储过程,这里的SQL无名称空间的XQuery插入SQL2008
UPDATE ChessGame SET GameHistory.modify('insert <move><player>black</player><piece>pawn</piece><start>E7</start><end>E6</end></move> as last into (/game)[0]') WHERE Id = @GameId;
现在,当MSSQL确实插入一个空的命名空间也被插入这样的结果是这样的
<move xmlns="">
<player>black</player>
<piece>king</piece>
<start>E7</start>
<end>E6</end>
</move>
现在我同时使用
尝试WITH XMLNAMESPACES(DEFAULT 'http://my.name.space')
和
GameHistory.modify('declare default element namespace "http://my.name.space"; insert ...')
但是我最终得到了各处的前缀和每个元素的名称空间声明。
代码库中出现的问题缺乏处理MSSQL放入的前缀的逻辑。最后,我只是想将一个新元素插入到我的xml根目录并将名称空间留空(使用根目录默认值?)。我都很新,但据我了解,如果我在根元素中有一个命名空间,是否所有的孩子节点都不应该有一个默认的根空间?
都工作100% 我发现是,虽然打破我的问题。 作为最后进入(/游戏)[0]应该作为最后进入(/游戏)[1] 不是[0]代表第一个项目的发生?就像一个基于零的数组? – Matt 2009-09-04 20:28:54
@RBarry:你为什么更喜欢'/ *:node'?这是否意味着'具有*任何*名称空间的游戏节点'? – 2009-09-04 20:41:32
马特:不,是序数:[1]是第一个例子。 – RBarryYoung 2009-09-04 22:59:37