2

提供された xsd からのデータを使用して、SQL サーバー データベースにテーブルの 1 つをロードする必要があります。

以下のようなブロックを持つ XSD があります。

<xsd:simpleType name="States">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="state1"/>
<xsd:enumeration value="state2"/>
<xsd:enumeration value="state3"/>
</xsd:restriction>
</xsd:simpleType>

私のテーブル - 州には、StateId、StateName の 2 つの列があります。

state1、state2、..などのデータをテーブルの StateName 列にロードする必要があります。

これを行うためにどの方法を使用すればよいか、誰かが提案できますか。

4

1 に答える 1

3

私は次のようにします:

DECLARE @xml XML
-- Add the schema information and make the XML a valid XML document to parse.
SELECT @xml = '<?xml version="1.0"?>
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" >
        <xsd:simpleType name="Countries">
            <xsd:restriction base="xsd:string">
                <xsd:enumeration value="Country1"/>
                <xsd:enumeration value="Country2"/>
                <xsd:enumeration value="Country3"/>
            </xsd:restriction>
        </xsd:simpleType>
        <xsd:simpleType name="States">
            <xsd:restriction base="xsd:string">
                <xsd:enumeration value="state1"/>
                <xsd:enumeration value="state2"/>
                <xsd:enumeration value="state3"/>
            </xsd:restriction>
        </xsd:simpleType>
    </xsd:schema>';

WITH XMLNAMESPACES ('http://www.w3.org/2001/XMLSchema' as xsd)
SELECT 
    node.value('@value', 'nvarchar(32)')
FROM 
    @xml.nodes('/xsd:schema/xsd:simpleType[@name="States"]/xsd:restriction/xsd:enumeration') AS enum(node)
于 2012-09-21T09:34:16.697 に答える