4

XML インポート ファイルを検証する XSD ドキュメントを開発しています。インポート ファイルのほぼすべての要素は、ID 属性 (UPDATE) を持つことができます。UPDATE 属性は 4 つの可能な値に制限する必要があるため、属性の制限に使用するこの事前設定タイプがあります...

<xs:simpleType name="MyUpDir">
  <xs:restriction base="xs:string">
    <xs:enumeration value="OVERWRITE"/>
    <xs:enumeration value="ADDONLY" />
    <xs:enumeration value="NOERASE" />
    <xs:enumeration value="IGNORE" />
  </xs:restriction>
</xs:simpleType>

属性の制限に加えて、各要素の値は、事前設定されたさまざまなカスタム タイプによって制限されます。例:

<xs:simpleType name="MyChar50">
  <xs:restriction base="xs:string">
    <xs:maxLength value="50" />
  </xs:restriction>
</xs:simpleType>

2 つを組み合わせるには、次のように要素ごとにインラインで実行できることを知っています。

<xs:element name="FullName">
  <xs:complexType>
    <xs:simpleContent>
      <xs:extension base="MyChar50">
        <xs:attribute name="UPDATE" type="MyUpDir" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
</xs:element>

問題は、インポート ファイルに 1000 を超える要素があり、それぞれにさまざまな長さ/正規表現/精度の制限 (約 20 のカスタム型) があり、UPDATE 属性の可能性があることです。UPDATE 属性がなければ、カスタム型を使用して各要素を独自の行で実行でき、XSD の「コンテンツ」部分を大幅に削減できました。しかし、私が読んだことから、カスタムタイプと言及された属性の可能性に対応するために、そのような要素ごとに1行を保持できるのではなく、拡張されたサンプル(最後の例)を使用することを余儀なくされているようです. . この 2 つを組み合わせたカスタム タイプを作成することで、これをさらに最小限に抑える方法はありませんか?

4

1 に答える 1

0

さらに 20 個のカスタム タイプ (合計 40 個) を作成してから、適切なタイプ (属性の有無にかかわらず) を使用できると思います。あなたの場合:

<xs:complexType name="MyChar50Attr"><!-- This one has attributes -->
    <xs:simpleContent>
        <xs:extension base="MyChar50">
            <xs:attribute name="UPDATE" type="MyUpDir"/>
        </xs:extension>
    </xs:simpleContent>
</xs:complexType>
<xs:element name="FullName" type="MyChar50Attr"/>
于 2012-08-09T20:50:37.177 に答える