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

Откуда: from the middle of nowhere
Сообщений: 3598
Блог
Привет, All!

Допустим, есть такой xml:

select 	top 1		
	so.name as '@tablename'
	,
	(
		select	
					sc.name as '@name'
		,			sc.type as '@type'
		from dbo.syscolumns sc
		where sc.id = so.id
		for xml path('column'), type
	)
from dbo.sysobjects so
where so.xtype = 'S'
for xml path('table'), type


В результат мне надо добавить:
<table
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://mysite.edu/document.xsd"

....

Как? Пляски с WITH XMLNAMSPACE не помогли :( Переписывать запрос как-то?

Спасибо!
15 апр 09, 13:36    [7067034]     Ответить | Цитировать Сообщить модератору
 Re: for xml path и namespace'ы  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

так не пойдет?
with xmlnamespaces ('http://www.w3.org/2001/XMLSchema-instance' as xsi)
select 	top 1		
	so.name as '@tablename'
	, 'http://mysite.edu/document.xsd' as [@xsi:noNamespaceSchemaLocation]
	,
	(
		select	
					sc.name as '@name'
		,			sc.type as '@type'
		from dbo.syscolumns sc
		where sc.id = so.id
		for xml path('column'), type
	)
from dbo.sysobjects so
where so.xtype = 'S'
for xml path('table')

Posted via ActualForum NNTP Server 1.4

15 апр 09, 14:18    [7067440]     Ответить | Цитировать Сообщить модератору
 Re: for xml path и namespace'ы  [new]
Ray D
Member

Откуда: from the middle of nowhere
Сообщений: 3598
Блог
daw, спасибо за ответ, вас и ждал, честно говоря :)

Не совсем то. Я приложил пример xml, который хочется увидеть. Посмотрите, пожалуйста.

К сообщению приложен файл (suspicious-document00002.xml - 1Kb) cкачать
15 апр 09, 14:25    [7067478]     Ответить | Цитировать Сообщить модератору
 Re: for xml path и namespace'ы  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

> Не совсем то. Я приложил пример xml, который хочется увидеть.
> Посмотрите, пожалуйста.

может, так тогда, если добавлять в корень надо:
select (
select 	top 1		
	so.name as '@tablename'
		,
	(
	 select	
      sc.name as '@name'
   ,			sc.type as '@type'
   from dbo.syscolumns sc
   where sc.id = so.id
   for xml path('column'), type
	).query('.')
from dbo.sysobjects so
where so.xtype = 'S'
for xml path('table'), type).query('<table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                                            xsi:noNamespaceSchemaLocation="http://mysite.edu/document.xsd">
                                     {(/table/@*), (/table/*)}</table>')

Posted via ActualForum NNTP Server 1.4

15 апр 09, 14:51    [7067683]     Ответить | Цитировать Сообщить модератору
 Re: for xml path и namespace'ы  [new]
Ray D
Member

Откуда: from the middle of nowhere
Сообщений: 3598
Блог
точно, то, что надо. спасибо!
15 апр 09, 14:58    [7067735]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: for xml path и namespace'ы  [new]
vah
Member

Откуда:
Сообщений: 2694
daw
> Не совсем то. Я приложил пример xml, который хочется увидеть.
> Посмотрите, пожалуйста.

может, так тогда, если добавлять в корень надо:
select (
select 	top 1		
	so.name as '@tablename'
		,
	(
	 select	
      sc.name as '@name'
   ,			sc.type as '@type'
   from dbo.syscolumns sc
   where sc.id = so.id
   for xml path('column'), type
	).query('.')
from dbo.sysobjects so
where so.xtype = 'S'
for xml path('table'), type).query('<table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                                            xsi:noNamespaceSchemaLocation="http://mysite.edu/document.xsd">
                                     {(/table/@*), (/table/*)}</table>')


А как сделать, чтобы писалось не xmlns:xsi=,
а xmlns=

?
13 сен 11, 10:40    [11267575]     Ответить | Цитировать Сообщить модератору
 Re: for xml path и namespace'ы  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31970
vah
А как сделать, чтобы писалось не xmlns:xsi=,
а xmlns=
?
Видимо, убрать xsi?
13 сен 11, 10:45    [11267623]     Ответить | Цитировать Сообщить модератору
 Re: for xml path и namespace'ы  [new]
vah
Member

Откуда:
Сообщений: 2694
alexeyvg
vah
А как сделать, чтобы писалось не xmlns:xsi=,
а xmlns=
?
Видимо, убрать xsi?


В этом случае выводится только это

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" />

и все
13 сен 11, 10:54    [11267675]     Ответить | Цитировать Сообщить модератору
 Re: for xml path и namespace'ы  [new]
vah
Member

Откуда:
Сообщений: 2694
alexeyvg
vah
А как сделать, чтобы писалось не xmlns:xsi=,
а xmlns=
?
Видимо, убрать xsi?


А где содержимое XML?
13 сен 11, 10:55    [11267682]     Ответить | Цитировать Сообщить модератору
 Re: for xml path и namespace'ы  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Четыре топика на проблему. Есть совесть?

Ещё один вариант, некромант бессовестный:
;WITH XMLNAMESPACES(DEFAULT 'http://www.w3.org/2001/XMLSchema-instance')
SELECT	 [Table].name			AS [Name]
	,[Column].name			AS [Name]
	,[Column].system_type_id	AS [Type]
FROM	     sys.objects	[Table]
	JOIN sys.columns	[Column] ON [Column].[object_id] = [Table].[object_id]
WHERE	[Table].[type] = 'S'
FOR XML Auto,Root('Tables'),Type
А далее осталось тебя забанить.
13 сен 11, 15:57    [11270353]     Ответить | Цитировать Сообщить модератору
 Re: for xml path и namespace'ы  [new]
Marketa
Member

Откуда: 4exia
Сообщений: 5
vah,

kak sdelat 2 namespaces - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="bla bla bla"

esli ja ne napishu xmln:4o-nibud, togda ne polu4aetsa i mne eto nu*no
21 сен 11, 00:37    [11309157]     Ответить | Цитировать Сообщить модератору
 Re: for xml path и namespace'ы  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Marketa, идите вы в BOL со своими нубскими FAQ-овскими вопросами:
Добавление пространств имен с помощью предложения WITH XMLNAMESPACES
21 сен 11, 10:30    [11309871]     Ответить | Цитировать Сообщить модератору
 Re: for xml path и namespace'ы  [new]
Marketa
Member

Откуда: 4exia
Сообщений: 5
Mnior,
Mnior,
mne nado s pomoshu etogo
query('<table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://mysite.edum /document.xsd">
{(/table/@*), (/table/*)}</table>')

u mne o4en mnogo subquery s for xml path....., with xmlnamespaces nelza ispolzovat
21 сен 11, 16:19    [11313397]     Ответить | Цитировать Сообщить модератору
 Re: for xml path и namespace'ы  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Marketa
mne nado s pomoshu etogo
query('<table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://mysite.edum /document.xsd">
{(/table/@*), (/table/*)}</table>')
Закон мёрфи:
Если на форуме будут представлены 10 вариантов, при котором 1 неправильный, то 90% хомячков будут использовать этот один неверный.

Marketa, вам так не нужно.


Marketa
u mne o4en mnogo subquery s for xml path.....,
Интересно пасматреть
Marketa
with xmlnamespaces nelza ispolzovat
Запрещено конституцией?
21 сен 11, 16:46    [11313723]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить