1

私は次のスキーマを持っています

<xs:simpleType name="enumType">    
    <xs:restriction base="xs:string">    
        <xs:enumeration value="STRING_ONE"/>
        <xs:enumeration value="STRING_TWO"/>
    </xs:restriction>
</xs:simpleType>

既知の文字列を取得する限り、オブジェクトを期待するjaxbobjectにswithcとそれを割り当てることができenumTypeます。しかし、この文字列がわからない場合はどうなりますか?JAXBスキーマに基づいてそれを処理する方法はありますか?私は列挙型に基づいてそれが不可能であることを知っています。


編集:それをより明確にしようとしています

与えられたスキーマ設計では、パラメーターとして受け入れる私のJAXBObjectは、enumTypeマーシャリングの一部としてXMLに変換されるSTRING_ONEまたはSTRING_TWOの2つの入力値しか持つことができません。

問題は、スキーマ設計を通じて状況を処理したい場合、それ以外のenumType場合は、代わりにJAXBObjectにXMLを指定しenumTypeても、それを解析できるということです。

4

1 に答える 1

1

XSD の観点からは、次のように書けるようになりたいようです。

<xs:simpleType name="soft-enumeration">
  <xs:union>
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:enumeration value="STRING_ONE"/>
        <xs:enumeration value="STRING_TWO"/>
      </xs:restriction>
    </xs:simpleType>
    <xs:simpleType>
      <xs:union memberTypes="xs:string"/>
    </xs:simpleType>
  </xs:union>
</xs:simpleType>

このタイプには、記述した列挙が含まれますが、他の値も受け入れるように、それを xs:string と結合します。使用している共用体のメンバー型に関する情報にスキーマ インターフェイスからアクセスできる場合は、その情報を使用して、STRING_ONE および STRING_TWO のインスタンスを他の文字列とは異なる方法で処理できます。

ただし、jaxb がこのイディオムで何か役に立つかどうかはわかりません。そこにあなたは一人でいます。

于 2012-10-26T01:27:26.293 に答える