我需要一个如何设计 xsd schema 来表示对象的建议。
我有这样的界面
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>
问题是,我只想使用标记validator
。例如,我想要这样的东西 -
<validator type="simpleValidator>
//simpleValidator data
</validator>
<validator type="anotherValidator>
//anotherValidator data
</validator>
答案 0 :(得分:2)
我认为可以使用Runtime Polymorphism via xsi:type and Abstract Types完成此操作 我还找到了related question:可能会有帮助。
在我的一个项目中,我是dellign,但有不同类型的地址,即shippingAddress,billingAddress ..我们使用这个技术来解决我们的问题。