Я хочу иметь возможность создавать следующие пространства имен и типы для корневого элемента XML.
<BaseTransactionRequest xmlns="http://schemas.datacontract.org/2004/07/SomeCompany" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" i:type="AType">
Обычно первые 2 (то есть, не включая i:type="AType") могут быть созданы без проблем (с некоторыми компромиссами, при использовании пользовательских пространств имен мы не можем представлять нули, используя пространство имен 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 «буквально», используя конкатенацию строк. Но я верю и надеюсь, что XML можно использовать вместе.
РЕДАКТИРОВАТЬ: Первая версия была добавлена в спешке. Извинения. EDIT2: исправление дислексии
;WITH XMLNAMESPACES ('http://www.w3.org/2001/XMLSchema-instance' as i, DEFAULT 'http://schemas.datacontract.org/2004/07/SomeCompany') select 'AType' as [i:Type] from (select 1 as ID) t for xml raw('BaseTransactionRequest')
, кажется, создает именно тот XML, который вы запрашиваете. Так в чем проблема? Было бы полезно, если бы вы не смогли выполнить эту работу, если бы вы могли создать полный образец, а не просто предоставить нам фрагмент для работы. - person Damien_The_Unbeliever   schedule 21.03.2018i:type="AType"
как своего рода пространство имен ... - person Shnugo   schedule 21.03.2018@Shnugo
в вашем комментарии оповещение не сработает. - person Shnugo   schedule 23.03.2018