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

Откуда:
Сообщений: 3
Подскажите, пожалуйста!

Требуется получить XML в виде:

<fpmlext:repo xsi:type="nsdext:RepoNsd">
<productType>Equity</productType>
</fpmlext:repo>

Как должен выглядеть запрос на SQL ?
Написал, но нужного результата не получается.

WITH XMLNAMESPACES ('http://www.fpml.org/FpML-5/ext' as fpmlext, 'uri' as xsi)
SELECT
productType = 'Equity'
FOR XML PATH ('fpmlext:repo'),TYPE

Результат:

<fpmlext:repo xmlns:xsi="uri" xmlns:fpmlext="http://www.fpml.org/FpML-5/ext">
<productType>Equity</productType>
</fpmlext:repo>
5 июл 16, 16:55    [19371960]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с XMLNAMESPACES  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4893
HighReflex,

Ну он подставил вам декларирование наймспейса

<fpmlext:repo xmlns:xsi="uri" xmlns:fpmlext="http://www.fpml.org/FpML-5/ext">
<productType>Equity</productType>
</fpmlext:repo>
5 июл 16, 17:17    [19372066]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с XMLNAMESPACES  [new]
HighReflex
Member

Откуда:
Сообщений: 3
a_voronin,

Да, подставил, а как его убрать ? И добавить xsi:type ?

Спасибо.
5 июл 16, 17:19    [19372077]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с XMLNAMESPACES  [new]
Konst_One
Member

Откуда:
Сообщений: 11621
DECLARE @t TABLE (CustomerID INT, Name VARCHAR(20), Address VARCHAR(20), Tel VARCHAR(20));

INSERT INTO @t (CustomerID, Name, Address, Tel) SELECT 1, 'Name1', 'Address1', 'Tel1';
INSERT INTO @t (CustomerID, Name, Address, Tel) SELECT 2, 'Name2', 'Address2', 'Tel2';
INSERT INTO @t (CustomerID, Name, Address, Tel) SELECT 3, 'Name3', 'Address3', 'Tel3';
INSERT INTO @t (CustomerID, Name, Address, Tel) SELECT 4, 'Name4', 'Address4', 'Tel4';


DECLARE @xml XML, @RecCount INT

SET @RecCount = 4

;WITH XMLNAMESPACES ( 'http://www.w3.org/TR/html4/' AS h, 'http://www.w3.org/2001/XMLSchema-instance' AS xsi )
SELECT @xml = 
	(
	SELECT 'CustomerA' AS "@xsi:type", CustomerID AS "h:cid", Name AS "h:cname", Address AS "h:cadd", Tel AS "h:ctel"
	FROM @t
	FOR XML PATH('h:customer'), ROOT( 'h:Customers' ), TYPE
	)

SET @xml.modify('declare namespace h = "http://www.w3.org/TR/html4/"; insert attribute RecId{sql:variable("@RecCount")} as last into (h:Customers)[1]')

SELECT @xml


посмотрите и попробуйте сделать что-то подобное для своего случая
6 июл 16, 11:16    [19374282]     Ответить | Цитировать Сообщить модератору
 Re: Запрос с XMLNAMESPACES  [new]
HighReflex
Member

Откуда:
Сообщений: 3
Решил свою задачу таким способом:

WITH XMLNAMESPACES ('http://www.fpml.org/FpML-5/recordkeeping/nsd-ext' as nsdext,
'http://www.fpml.org/FpML-5/ext' as fpmlext,
'http://www.w3.org/2001/XMLSchema-instance' as xsi,
DEFAULT 'http://www.fpml.org/FpML-5/recordkeeping' )
select
'http://www.fpml.org/FpML-5/recordkeeping fpml-recordkeeping-merged-schema.xsd' "@xsi:schemaLocation"
,'nsdext:RepoTransactionLegNsd' "fpmlext:repo/@xsi:type"
,'Equity:Repo:EquityRepo' "fpmlext:repo/productType"
FOR XML PATH ('nonpublicExecutionReport')
7 июл 16, 10:24    [19379329]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить