在SQL Server 2014中,我嘗試使用XML數據類型上的'modify'方法添加一個帶有屬性(包含回車符)的XML元素。 回車被刪除 - 爲什麼?爲什麼在SQL Server中執行XML屬性時會刪除回車符?
實施例:
declare @xmldata xml
select
@xmldata = '<root><child myattr="carriage returns 
 are not a problem"></child></root>'
set
@xmldata.modify('insert <child>modifying text with carriage returns works
ok</child> after (//child)[1]')
set
@xmldata.modify('insert <child myattr="but not
attribute values... why is that?"></child> after (//child)[2]')
select @xmldata
結果:
<root>
<child myattr="carriage returns 
 are not a problem" />
<child>modifying text with carriage returns works
ok</child>
<child myattr="but not attribute values... why is that?" />
</root>
這不是一個渲染問題,因爲CRLF在第一個示例中被正確存儲和呈現( )。 –
@ThomasBoelSigurdsson ---你錯了......作爲規範說呈現一個的要求比呈現其他的要求不同。我強烈建議你閱讀的XML規範它不長,你可以看到標籤atrributes規則是如何比文檔內容的規則有很大不同。但應該清楚的是......一個是「內容」,另一個是結構或元數據。 – Hogan
我不想跟你不同意 - 但我認爲你錯了。請再看看我的例子。我有兩個元素都有所謂的「myattr」的屬性。這兩個屬性都應該有一個回車符+換行符 - 但只有其中一個屬於。使用「修改」方法創建的那個不像他們以某種方式被剝離。 –