我希望能够为XML根元素生成以下名称空间和类型
<BaseTransactionRequest xmlns="http://schemas.datacontract.org/2004/07/SomeCompany" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" i:type="AType">
通常前两个(即不包括i:type =&#34; AType&#34;)可以毫无问题地生成(有一些权衡,当使用自定义命名空间时,我们无法使用xmlns:ni命名空间表示空值等等) 因此,后一种类型存在问题。对于一个参考者, 如下所示使用WITH XMLNAMESPACES恐惧(省略FOR XML部分):
;WITH XMLNAMESPACES ('http://www.w3.org/2001/XMLSchema-instance' as i, DEFAULT 'http://schemas.datacontract.org/2004/07/SomeCompany',
要克服的解决方案是编写XML&#34;字面意思&#34;使用字符串连接。但我相信并希望FOR XML可以和它一起使用。
编辑:第一次切入是真正的加入。道歉。 EDIT2:Dyslexic fix
答案 0 :(得分:1)
你的问题不是很明确......你可能对你的i:type="AType"
有误解。这不是命名空间(无论自定义命名空间是什么),而是名为type
的普通属性,位于您的命名空间i
中,这是在xmlns:i="blah"
宣布。
试试这个
WITH XMLNAMESPACES ('http://www.w3.org/2001/XMLSchema-instance' as i
,DEFAULT 'http://schemas.datacontract.org/2004/07/SomeCompany')
SELECT 'AType' AS [@i:type]
FOR XML PATH('BaseTransactionRequest');
结果是一个自闭标签,声明两个名称空间并包含您的属性:
<BaseTransactionRequest xmlns="http://schemas.datacontract.org/2004/07/SomeCompany"
xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
i:type="AType" />