Chcę utworzyć plik xml mapy witryny (w tym obrazy) bezpośrednio z bazy danych bez innego procesu (jak transformacja lub inna sztuczka).Jak uniknąć przestrzeni nazw w węzłach potomnych za pomocą FOR XML PATH?
Moje zapytanie brzmi:
;WITH XMLNAMESPACES(
DEFAULT 'http://www.sitemaps.org/schemas/sitemap/0.9',
'http://www.google.com/schemas/sitemap-image/1.1' as [image])
SELECT
(SELECT
'mysite' as [loc],
(select
'anotherloc'
as [image:loc]
for XML path('image:image'), type
)
for xml path('url'), type
)
for xml path('urlset'), type
Powroty:
<urlset xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<loc>mysite</loc>
<image:image xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<image:loc>anotherloc</image:loc>
</image:image>
</url>
</urlset>
ale muszę to wyjście, bez wielokrotnego deklaracji przestrzeni nazw:
<urlset xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>mysite</loc>
<image:image>
<image:loc>anotherloc</image:loc>
</image:image>
</url>
</urlset>
pokrewnych [na DBA] (http://dba.stackexchange.com/questions/23624/how-to-remove-xmlns-from-child-elements -with-for-xml/23697 # 23697) –
Możliwy duplikat [Jak usunąć nadmiarowy obszar nazw w zapytaniu zagnieżdżonym przy użyciu FOR PATH XML] (http://stackoverflow.com/questions/3242070/how-do-i- remove-redundant-namespace-in-nested-query-when-using-for-xml-path) – Gabrielius