Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 xml и пространство имен  [new]
NewIvanovec
Member

Откуда: Msk
Сообщений: 581
нужно получить такую xml

<u:UBS_TRANSFER xmlns:u="http://www.unisab.ru/ubs/system/base">
  <u:P n="UbsParam" r="3">
    <u:P n="Плательщик" r="1" />
  </u:P>
</u:UBS_TRANSFER>


но моим запросом получаю такую:
<u:UBS_TRANSFER xmlns:u="http://www.unisab.ru/ubs/system/base">
  <u:P n="UbsParam" r="3">
    <u:P xmlns:u="http://www.unisab.ru/ubs/system/base" n="Плательщик" r="1" />
  </u:P>
</u:UBS_TRANSFER>


как поправить запрос, чтобы в 3-й строке не выводилось бы xmlns:u="http://www.unisab.ru/ubs/system/base"

WITH XMLNAMESPACES('http://www.unisab.ru/ubs/system/base' AS u)
SELECT 'UbsParam' [@n],
       3 [@r],
       (
           SELECT N'Плательщик' [@n],
                  1 [@r] FOR XML PATH('u:P'),
                  TYPE
       )
       
       
       FOR XML PATH('u:P'),
       ROOT('u:UBS_TRANSFER');
9 авг 16, 11:18    [19519306]     Ответить | Цитировать Сообщить модератору
 Re: xml и пространство имен  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
WITH XMLNAMESPACES ('http://www.unisab.ru/ubs/system/base' AS u)
SELECT N'UbsParam' AS [@n]
     , 3 AS [@r]
     , N'Плательщик' AS [u:P/@n]
     , 1 AS [u:P/@r]
FOR XML PATH('u:P'), ROOT('u:UBS_TRANSFER')
9 авг 16, 11:48    [19519450]     Ответить | Цитировать Сообщить модератору
 Re: xml и пространство имен  [new]
NewIvanovec
Member

Откуда: Msk
Сообщений: 581
AlanDenton
WITH XMLNAMESPACES ('http://www.unisab.ru/ubs/system/base' AS u)
SELECT N'UbsParam' AS [@n]
     , 3 AS [@r]
     , N'Плательщик' AS [u:P/@n]
     , 1 AS [u:P/@r]
FOR XML PATH('u:P'), ROOT('u:UBS_TRANSFER')


спс!

но если добавить что-то ещё, например
 , N'Поля платежа' AS [u:P/@n], 2 AS [u:P/@r]

то выходит ошибка
Column name 'u:P/@n' is repeated. The same attribute cannot be generated more than once on the same XML tag.



WITH XMLNAMESPACES ('http://www.unisab.ru/ubs/system/base' AS u)
SELECT N'UbsParam' AS [@n]
     , 3 AS [@r]
     , N'Плательщик' AS [u:P/@n]
     , 1 AS [u:P/@r]
     , N'Поля платежа' AS [u:P/@n]
     , 2 AS [u:P/@r]
FOR XML PATH('u:P'), ROOT('u:UBS_TRANSFER')
9 авг 16, 11:55    [19519473]     Ответить | Цитировать Сообщить модератору
 Re: xml и пространство имен  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
Можно нескромный вопрос... зачем Вам такое извращение?
9 авг 16, 11:58    [19519487]     Ответить | Цитировать Сообщить модератору
 Re: xml и пространство имен  [new]
Konst_One
Member

Откуда:
Сообщений: 11538
автор с юнисабом мучается, но могу сразу разочаровать, у юнисаба не всегда валидные xml с точки зрения микрософта, так что скорее всего не выйдет
9 авг 16, 12:00    [19519502]     Ответить | Цитировать Сообщить модератору
 Re: xml и пространство имен  [new]
NewIvanovec
Member

Откуда: Msk
Сообщений: 581
AlanDenton
Можно нескромный вопрос... зачем Вам такое извращение?

:)
третья сторона отправляет такую xml в гос. органы
9 авг 16, 12:01    [19519506]     Ответить | Цитировать Сообщить модератору
 Re: xml и пространство имен  [new]
Konst_One
Member

Откуда:
Сообщений: 11538
делай свой сервис и в нём формируй средствами языка (.NET например) требуемый тебе выходной XML
9 авг 16, 12:03    [19519510]     Ответить | Цитировать Сообщить модератору
 Re: xml и пространство имен  [new]
NewIvanovec
Member

Откуда: Msk
Сообщений: 581
Konst_One
автор с юнисабом мучается, но могу сразу разочаровать, у юнисаба не всегда валидные xml с точки зрения микрософта, так что скорее всего не выйдет

всё так, с юнисабом :)
9 авг 16, 12:03    [19519511]     Ответить | Цитировать Сообщить модератору
 Re: xml и пространство имен  [new]
Konst_One
Member

Откуда:
Сообщений: 11538
как вариант, можно подготовить данные в своём формате xml и написать xsl для преобразования в нужный выходной формат
9 авг 16, 12:07    [19519522]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить