我正在使用FOR XML PATH查询从我们的数据库生成站点地图,我需要声明一个名称与默认名称不同的名称空间:
(参见下面的xsi:schemaLocation)
<urlset
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
如何使用以下方式完成:
;with xmlnamespaces( default 'http://www.sitemaps.org/schemas/sitemap/0.9',
'http://www.w3.org/2001/XMLSchema-instance' as xsi,
'http://www.sitemaps.org/schemas/sitemap/0.9
http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd' --as "xsi:schemaLocation"
谢谢!
答案 0 :(得分:0)
我在这里找到了解决方案:TSQL for xml add schema attribute to root node
基本上,我接受了这个:
DECLARE @siteMapXml XML
SELECT @siteMapXml = (
SELECT
s.Dns + '/SomeSection' loc,
Convert(char(10), GetDate() - 7, 126) as lastmod,
'weekly' as changefreq,
0.9 as priority
FROM
ThisTable s
WHERE
s.Id= 1234
FOR XML PATH ('url'), ROOT ('urlset'))
set @siteMapXml.modify('insert ( attribute xsi:schemaLocation {"http://www.mydomain.com/xmlns/bla/blabla/myschema.xsd"}) into (/urlset)[1]')
select @siteMapXml