2011-11-23 61 views
0

是否有一种方法可以根据为另一个元素输入的枚举值来要求元素?根据枚举值需要XML Schema元素

基本上,我想要做的是有一个由枚举定义的用户界面类型。根据接口类型的不同,可能需要也可能不需要一些字段。

我知道这可以通过将元素设置为可选项并处理代码中的条件逻辑或通过针对每种可能的接口类型制作不同的复杂类型来实现。但是,我希望规则对任何阅读架构的人都很明显,因此Code解决方案并不理想,并且添加大量复杂类型(尽管他们共享大多数必需字段)会增加更多到XML解析逻辑。

是否有可能在模式中包含所有这些逻辑来简化验证和解析?

回答

1

这种条件强制/可选元素包含在XSD中是不可能的。

0

你可以使用RelaxNG来做到这一点。

您将拥有一个良好的技术数据接口与这种类型的模式(描述确切的结构,你需要一个工具,如Jing验证)。然后,如果要使用对象映射,则可以使用Trang将RelaxNG模式转换为XML模式(XML模式稍微松弛一些,真正的数据接口在RelaxNG中进行了描述)。然后,您可以使用Trang将RelaxNG模式转换为XML模式。

+0

感谢您的提示。我将研究RelaxNG,但现在我将坚持使用标准XML模式,因为我设计的模式旨在暴露给第三方开发人员。我想坚持使用行业标准模式格式,而不是让他们学习新的东西,即使它应该在语法上简单易懂。尽管如此,我一定会牢记内部模式。 – mnemy