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现在我可以在需要的anotherValidator地方使用标签了validator。例子 -

<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 和 Abstract Types 使用运行时多态性来完成 我还发现了一个相关问题:可能会有所帮助。

在我的一个项目中,我使用了不同类型的地址,即 shippingAddress、billingAddress ..我们使用这种技术来解决我们的问题。

于 2013-01-17T10:46:59.613 回答