2

以下で

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>

これを実装する方法について何か考えはありますか?ありがとう

4

1 に答える 1

1

私は SQL Server のユーザーではありませんがstring、namespace で指定された型を定義するスキーマ ドキュメントを本当に提供しているのでしょうかhttp://www.w3.org/TR/html4/

xs名前が HTML 4 仕様の URI である名前空間にプレフィックスをバインドすることには、まったく問題はありません。しかし、いくつかの点で、問題を十分に明確に定義しているかどうか疑問に思います。

  • HTML 4 仕様は、という名前のデータ型を定義していませんstring。ここに示されていないスキーマ ドキュメントで非常に珍しいことを行っていない限り、xs:stringは既知の型を示しません。
  • type名前空間プレフィックスを名前空間 URI にバインドしているようtypens:GPCodedValueDomain2です。その名前空間プレフィックスは他の場所では使用されていないようです。そのため、それがどのような目的で使用されているかは明確ではありません。その名前空間名で使用されている URI スキームtypensが、クエリの他の場所で定義された名前空間プレフィックスでもあるという事実は、名前空間と名前空間プレフィックスについて混乱しているか、非常に微妙で悪意のあることを行っていることを示唆しています。後者の場合、Stack Overflow の助けは必要ありません。
  • 出力に 要素と要素xsi:typeの属性が必要です。クエリは、属性を指定することにより、属性を最初に配置することに成功しました。しかし、この要素には類似の構造はありません。なぜだめですか?CodedValueCodeSELECT 'typens:CodedValue' AS "@xsi:type", ...Code
于 2012-09-14T01:47:26.443 に答える