2
我有點新的工作與XML在SQL中,並必須建立一個這樣的XML My Xml 並替換正確的值在哪裏(...)出現。t-sql:創建並添加幾個命名空間到xml
替換不是我的問題,否則創建出現在上一張圖片上的幾個名稱空間是。
DECLARE @XML XML
SET @XML = (SELECT
(SELECT
(SELECT 'http://www.w3.org/2001/10/xmlexcc14n#' "@Algorithm"
FOR XML PATH('CanonicalizationMethod'), TYPE),
(SELECT 'http://www.w3.org/2001/04/xmldsigmore#rsasha256' "@Algorithm"
FOR XML PATH('SignatureMethod'), TYPE),
(SELECT '#FATCA' "@URI",
(SELECT
(SELECT 'http://www.w3.org/2001/10/xmlexcc14n#' "@Algorithm"
FOR XML PATH('Transform'), TYPE)
FOR XML PATH('Transforms'), TYPE),
(SELECT 'http://www.w3.org/2001/04/xmlenc#sha256' "@Algorithm"
FOR XML PATH('DigestMethod'), TYPE),
(SELECT ''
FOR XML PATH('DigestValue'), TYPE)
FOR XML PATH('Reference'), TYPE)
FOR XML PATH('SignedInfo'), TYPE),
(SELECT ''
FOR XML PATH('SignatureValue'), TYPE),
(SELECT
(SELECT
(SELECT ''
FOR XML PATH('X509SubjectName'), TYPE),
(SELECT ''
FOR XML PATH('X509Certificate'), TYPE)
FOR XML PATH('X509Data'), TYPE)
FOR XML PATH('KeyInfo'), TYPE),
(SELECT 'FATCA' "@Id",
(SELECT
(SELECT
(SELECT ''
FOR XML PATH('SendingCompanyIN'), TYPE),
(SELECT ''
FOR XML PATH('TransmittingCountry'), TYPE),
(SELECT ''
FOR XML PATH('ReceivingCountry'), TYPE),
(SELECT ''
FOR XML PATH('MessageType'), TYPE),
(SELECT ''
FOR XML PATH('Warning'), TYPE),
(SELECT ''
FOR XML PATH('Contact'), TYPE),
(SELECT ''
FOR XML PATH('MessageRefId'), TYPE),
(SELECT ''
FOR XML PATH('ReportingPeriod'), TYPE),
(SELECT ''
FOR XML PATH('Timestamp'), TYPE)
FOR XML PATH('MessageSpec'), TYPE),
(SELECT ''
FOR XML PATH('FATCA'), TYPE)
FOR XML PATH('FATCA_OECD'), TYPE)
FOR XML PATH('Object'), TYPE)
FOR XML PATH('Signature'))
SELECT @XML
這是我到目前爲止,它的作品完美。
我已經閱讀過這篇文章https://msdn.microsoft.com/en-us/library/ms177400.aspx,但並沒有真正幫助我,因爲我需要在xml中間使用命名空間並且無法弄清楚它是如何實現的。
有人能幫我嗎?
謝謝Mikael。但並不完全解決我的問題,因爲現在我已經聲明所有名稱空間的所有xml標記...簽名標記必須具有xmlns =「http://www.w3.org/2000/09/xmldsig#」和ftc:FATCA_OECD標記全部其他命名空間...除了xmlns,因爲這個必須是urn:oecd:ties:fatca:v1 ...再次感謝.. – user2196272
@ user2196272我知道。當您在子查詢中構建XML時,這是不必要的XML膨脹和SQL Server中的限制。但是XML仍然有效。對未使用的名稱空間的聲明不應該是一個問題,並且省略不使用的名稱空間,例如子元素中的默認名稱空間也不應該這樣做。這當然取決於你使用什麼樣的軟件來解釋XML,但是如果編寫得好,它應該沒有關係。 –
@ user2196272更新了答案,您可以使用它來更好地控制名稱空間的添加位置,時間和方式。 –