使用以下
DECLARE @t TABLE (Test nvarchar(50), Location_ID uniqueidentifier);
INSERT INTO @t (Test,Location_ID )
SELECT Test,Location_ID
from
dbo.TEST;
DECLARE @xml XML
;WITH XMLNAMESPACES (
'typens:GPCodedValueDomain2' as type,
'http://www.esri.com/schemas/ArcGIS/10.0' as typens,
'http://www.w3.org/TR/html4/' AS xs,
'http://www.w3.org/2001/XMLSchema-instance' AS xsi )
SELECT @xml =
(
SELECT
'typens:CodedValue' AS "@xsi:type",
TEST AS "Name", Location_ID AS "Code"
FROM @t
order by Location_ID
FOR XML PATH
('CodedValue'), ROOT
('GPCodedValueDomain2'),TYPE
)
SELECT @xml
输出
<GPCodedValueDomain2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/TR/html4/" xmlns:typens="http://www.esri.com/schemas/ArcGIS/10.0" xmlns:type="typens:GPCodedValueDomain2">
<CodedValue xsi:type="typens:CodedValue">
<Name>test update</Name>
<Code>B59D3BEB-CBCE-E111-B5B0-002564D275D1</Code>
</CodedValue>
<CodedValue xsi:type="typens:CodedValue">
<Name>test update</Name>
<Code>B69D3BEB-CBCE-E111-B5B0-002564D275D1</Code>
</CodedValue>
<CodedValue xsi:type="typens:CodedValue">
<Name>test update</Name>
<Code>B79D3BEB-CBCE-E111-B5B0-002564D275D1</Code>
</CodedValue>
</GPCodedValueDomain2>
我已经尝试了几个小时的命名空间定义的不同迭代,但都失败了。我正在寻找输出:
<GPCodedValueDomain2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/TR/html4/" xmlns:typens="http://www.esri.com/schemas/ArcGIS/10.0" xmlns:type="typens:GPCodedValueDomain2">
<CodedValue xsi:type="typens:CodedValue">
<Name>test update</Name>
<Code xsi:type="xs:string">B59D3BEB-CBCE-E111-B5B0-002564D275D1</Code>
</CodedValue>
<CodedValue xsi:type="typens:CodedValue">
<Name>test update</Name>
<Code xsi:type="xs:string">B69D3BEB-CBCE-E111-B5B0-002564D275D1</Code>
</CodedValue>
<CodedValue xsi:type="typens:CodedValue">
<Name>test update</Name>
<Code xsi:type="xs:string">B79D3BEB-CBCE-E111-B5B0-002564D275D1</Code>
</CodedValue>
</GPCodedValueDomain2>
关于如何实现这一点的任何想法?感谢
答案 0 :(得分:1)
我不是SQL Server用户,但我想知道您是否真的提供了一个模式文档,该文档在命名空间string
中定义了一个名为http://www.w3.org/TR/html4/
的类型。
将前缀xs
绑定到名称空间,其名称是HTML 4规范的URI,这绝对没有错。但有几件事让我想知道你是否已经清楚地定义了你的问题。
string
的数据类型;除非您在此处未显示的架构文档中执行非常不寻常的操作,否则xs:string
不会表示已知类型。 type
绑定到名称空间URI typens:GPCodedValueDomain2
。这个名称空间前缀似乎没有在其他任何地方使用,因此不清楚它的用途是什么。在该命名空间名称中使用的URI方案typens
也是在查询中其他位置定义的命名空间前缀这一事实表明您对命名空间和命名空间前缀感到困惑,或者您正在做一些非常微妙和狡猾的事情。在后一种情况下,您肯定不需要Stack Overflow的帮助。xsi:type
和CodedValue
元素具有Code
个属性。您的查询成功将属性放在第一个上,方法是为其指定SELECT 'typens:CodedValue' AS "@xsi:type", ...
。但是Code
元素没有类似的构造。为什么不呢?