2011-01-25 15 views
1

最小の長さのxs:string型の属性を持つ方法を探しています。

私はそれを行う方法を見つけましたhereしかし、解決策は新しいタイプを導入することを含む。

私はXMLマッピング/バインディングを使用しているので、光沢のある新しいクラス(その存在と追加のメソッド呼び出しを混乱させます)が全く役に立たなくなります。

カスタムタイプのないXSDの属性を制限する

カスタムタイプの導入を避ける方法はありますか?

+0

Filburt、私は私の長いAFKのための本当にすみません。それは理由があった。あなたの投稿が無視されたときの気持ちを知っていますので、ご迷惑をおかけください。 – kostja

答えて

4

あなたは新しい(名前の)型を宣言する必要はありません - ちょうどあなたの属性定義内の制限を置く:

<xs:element name="foo"> 
    <xs:complexType> 
     <xs:attribute name="bar"> 
      <xs:simpleType> 
       <xs:restriction base="xs:string"> 
        <xs:minLength value="5" /> 
       </xs:restriction> 
      </xs:simpleType> 
     </xs:attribute> 
    </xs:complexType> 
</xs:element> 
+0

ありがとう、Filburt。このようにして、私は新しいタイプを導入する必要はありません。残念ながら、JAXBクラス(JavaのXMLバインディング)を生成する場合、制限はコメントにのみ残され、コード自体には強制されないため、無効なオブジェクトのアンマーシャリングは引き続き機能します。しかし、違反は検証中に認識されるため、生成後にコード自体を修正することなく制限を適用する方法があります(これは、各ビルド時にコードが生成されるため苦痛です)。 – kostja