4

2004 年に最後に更新された XML スキーマをいくつか継承しました。IT はそれ以来機能していますが、ソフトウェアの更新によっていくつかの問題が発生しています。xml は XMLspy で検証されなくなりました。

とにかく、問題は、いくつかの異なる simpleTypes を異なる名前で定義することによって要素を定義する現在の方法が正しくないことです。この問題を回避する方法がわかりません。

XMLspy 2004 でファイルを開くと、xml は正常に検証されます。

lastes XMLspy でファイルを開くと、次のエラーが表示されます。

Element 'Element' is not consistent with element 'Element'.
    Details:
         cos-element-consistent.2: Both type definitions ('type2' and 'type1') must have the same name

注: 次の XML/スキーマは、実際のxml ではありません。私はそれを再作成し、あらゆる種類の問題を防ぐために一般化しました (ここでは、ライブ プログラムの内部動作を投稿することは少し嫌われています)。したがって、タイプミスが見られた場合、それはスキーマのせいではなく、私のせいです。

XML:

<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <FirstElement></FirstElement>
    <SecondElement>
        <Element></Element>
        <Parameters>
            <Param value="#Value#">name1</Param>
        </Parameters>
    </SecondElement>
</Package>

エラーを生成する、私が与えられた XML スキーマ:

<?ml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="Package">
        <xs:complexType>
            <xs:choice>
                <xs:sequence>
                    <xs:element name="FirstElement"/>
                    <xs:element name="SecondElement">
                        <xs:complexType>
                            <xs:group ref="Group1"/>
                        </xs:complexType>
                    </xs:element>
                </xs:sequence>
                <xs:sequence>
                    <xs:element name="FirstElement"/>
                    <xs:element name="SecondElement">
                        <xs:complexType>
                            <xs:group ref="Group2" />
                        </xs:complexType>
                    </xs:element>
                </xs:sequence>
            </xs:choice>
        </xs:complextype>
    </xs:element>
    <xs:group name="Group1">
        <xs:choice>
            <xs:sequence>
                <xs:element name="Element" type="type1"/>
            </xs:sequence>
            <xs:sequence>
                <xs:element name="Element" type="type2"/>
            </xs:sequence>
            <xs:sequence>
                <xs:element name="Element" type="type3"/>
            </xs:sequence>
        </xs:choice>
    </xs:group>
    <xs:group name="Group2">
        <xs:choice>
            <xs:sequence>
                <xs:element name="Element" type="type1"/>
            </xs:sequence>
            <xs:sequence>
                <xs:element name="Element" type="type4"/>
                <xs:element name="Parameters" minOccurs="0">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="Param">
                                <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                        <xs:enumeration value="TRUE"/>
                                        <xs:enumeration value="FALSE"/>
                                    </xs:restriction>
                                </xs:simpleType>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:choice>
    </xs:group>

    <xs:simpleType name="type1">
        <xs:restriction base="xs:string">
            <xs:enumeration value="ONE"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="type2">
        <xs:restriction base="xs:string">
            <xs:enumeration value="TWO"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="type3">
        <xs:restriction base="xs:string">
            <xs:enumeration value="THREE"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="type4">
        <xs:restriction base="xs:string">
            <xs:enumeration value="FOUR"/>
        </xs:restriction>
    </xs:simpleType>
</xs:schema>

XML を有効にしながら、論理スキーマのチェックを維持する方法について、誰かが私に洞察を与えてくれれば素晴らしいことです。

ありがとうございました!

4

1 に答える 1