1

オブジェクトを表現するためにxsd スキーマを設計する方法についてアドバイスが必要です。

私はそのようなインターフェースを持っています

public interface Validator{
     boolean validate(Q query);   
}

そして、私はいくつかの実装を持っています -

public class SimpleValidator implements Validator{

     private R param;

     public boolean validate(Q Query){
          //some logic with using param   
     }

     public void setParam(R param){
         this.param = param;
     }
}


public class AnotherValidator implements Validator{

     private Data data1;
     private Data data1;

     public boolean validate(Q Query){
          //some logic with using data1 and data2   
     }

     public void setData1(Data data1){
         this.data1 = data1;
     }

     public void setData2(Data data2){
         this.data2 = data2;
     }
}

私はそのような決定を持っています -

ルート要素を作成します-<xsd:element name="validator" type="validatorType"/>

そしてそのような要素 -

<xsd:element name="simpleValidator" type="simpleValidatorType"  substitutionGroup="validator"/>

<xsd:element name="anotherValidator" type="anotherValidatorType"  substitutionGroup="validator"/>

が必要な場所でタグsimpleValidatorとを使用できるようになりました。例 -anotherValidatorvalidator

<anotherValidator>
     <data1 value="value1"/>
     <data2 value="value2"/>
</anotherValidator>

問題は、 tag のみを使用したいということですvalidator。例として、私はこのようなものが欲しい -

<validator type="simpleValidator>
     //simpleValidator data
</validator>

<validator type="anotherValidator>
     //anotherValidator data
</validator>
4

1 に答える 1

2

これは、xsi:type および抽象型を介したランタイム ポリモーフィズムを使用して実行できると思います。関連する質問も 見つかりました。

私のプロジェクトの 1 つで、私はよく使いましたが、shippingAddress、billingAddress など、さまざまな種類の住所があります。この手法を使用して問題を解決しました。

于 2013-01-17T10:46:59.613 に答える