0

C Sharp を使用して xml スキーマ (.xsd) の列挙値を更新するにはどうすればよいですか? XML検証にxsdを使用しています。xsd には、列挙型の simpletypes があります。XML を検証する前に、xsd のこれらの列挙値をプログラムで更新したいと考えています。

<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema" >
    <xs:simpleType name="Level">
        <xs:restriction base="xs:string">
            <xs:enumeration value="Overall"/>
            <xs:enumeration value="Component" />
            <xs:enumeration value="Element" />
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="StatPot">
        <xs:restriction base="xs:string">
            <xs:enumeration value="Potential" />
            <xs:enumeration value="Status" />
            <xs:enumeration value="NA" />
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="Classification">
        <xs:restriction base="xs:string">
            <xs:enumeration value="NotAssessed" />
            <xs:enumeration value="Bad" />
            <xs:enumeration value="Poor" />
            <xs:enumeration value="Moderate" />
            <xs:enumeration value="Good" />
            <xs:enumeration value="NotHigh" />
            <xs:enumeration value="High" />
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="Str255">
        <xs:restriction base="xs:string">
            <xs:maxLength value="255"></xs:maxLength>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="Str100">
        <xs:restriction base="xs:string">
            <xs:maxLength value="100"></xs:maxLength>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="Str20">
        <xs:restriction base="xs:string">
            <xs:maxLength value="20"></xs:maxLength>
        </xs:restriction>
    </xs:simpleType>
    <xs:element name="xml">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="ClassificatonData">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element maxOccurs="unbounded" name="WBClassification">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="SupprortingInfo">
                                            <xs:complexType>
                                                <xs:sequence>
                                                    <xs:element name="Driver" maxOccurs="1"  minOccurs="0" type="xs:string"/>
                                                    <xs:element name="DataSource" maxOccurs="1"  minOccurs="0" type="Str100"/>
                                                    <xs:element name="Contact" maxOccurs="1"  minOccurs="0" type="Str100"/>
                                                    <xs:element name="DateRetrieved" maxOccurs="1"  minOccurs="0" type="xs:date"/>
                                                </xs:sequence>
                                            </xs:complexType>
                                        </xs:element>
                                    </xs:sequence>
                                    <xs:attribute name="WBName" type="xs:string" use="required" />
                                    <xs:attribute name="WBId" type="xs:string" use="required" />
                                    <xs:attribute name="ClassItemName" type="xs:string" use="required" />
                                    <xs:attribute name="ClassItemId" type="xs:string" use="required" />
                                    <xs:attribute name="Level" use="required" type="Level"/>
                                    <xs:attribute name="Classification" type="Classification" use="required" />
                                    <xs:attribute name="StatPot" use="optional" type="StatPot"/>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                        <xs:attribute name="Year" type="xs:unsignedShort" use="required" />
                        <xs:attribute name="Overwrite" type="xs:boolean" use="required" />
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
            <xs:attribute name="RootEntityType" type="xs:string" use="required"/>
        </xs:complexType>
    </xs:element>
</xs:schema>
4

1 に答える 1

0

XML スキーマは、他のものと同様に単純な XML ドキュメントです。Linq-to-XML API (XDocument) などの標準的なアプローチを使用して、このファイルを読み込んで変更してから、解析してスキーマを作成できます。

于 2012-07-17T11:14:51.713 に答える