3

エラーコードと関連する説明に対応する名前と値のペアのセットを指定する列挙型をXSDに含めたいと思います。例えば:

101  Syntax error
102  Illegal operation
103  Service not available

等々。それを保持するために、単純な構造event_resultを作成できます。

<xs:complexType name="event_result">
    <xs:sequence>
       <xs:element name="errorcode" type="xs:integer"/>
       <xs:element name="errormessage" type="xs:string"/>
    </xs:sequence>
</xs:complexType>

このレコードは、例外レポートレコードで(「結果」要素として)使用されます。

<xs:complexType name="event_exception">
    <xs:sequence>
        <xs:element name="event_id" type="xs:integer"/>
        <xs:element name="result" type="event_result"/>
        <xs:element name="description" type="xs:string"/>
        <xs:element name="severity" type="xs:integer"/>
    </xs:sequence>
</xs:complexType>

ここでの問題は、すべての既知の例外コードとその説明を使用してグローバル列挙を定義したいということです。理想的には、これを個別のXMLデータファイルではなく、XSDの一部にしたいと思います。メンバーが複合型である列挙型を定義する方法、または他の方法で同じ目的を達成する方法がわかりません。プログラミング言語では、単純な2次元配列であり、XMLでは簡単ですが、XSDでそれを行う方法はわかりません。

考え?前もって感謝します!

4

2 に答える 2

4

エラーメッセージを保持するために xsd:annotation/xsd:appinfo 要素を使用するのはどうですか:

 <xs:simpleType name="event_result">
    <xs:restriction base="xs:string">
      <xs:enumeration value="101">
         <xs:annotation><xs:appinfo>Syntax error</xs:appinfo></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="102">
         <xs:annotation><xs:appinfo>Illegal operation</xs:appinfo></xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="103">
         <xs:annotation><xs:appinfo>Service not available</xs:appinfo></xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
于 2012-12-06T05:00:32.230 に答える
2

xsd は、あなたが望むものをネイティブにサポートしているとは思いません。私はこのような実装を見てきました:

  <xs:simpleType name="event_result">
    <xs:restriction base="xs:string">
      <xs:enumeration value="101, Syntax error"/>
      <xs:enumeration value="102, Illegal operation"/>
      <xs:enumeration value="103, Service not available"/>
    </xs:restriction>
  </xs:simpleType>
于 2011-07-15T22:51:01.380 に答える