我想知道,是否还有其他原因可以避免在XML Schema中使用匿名类型,除了可以重用该类型并简化代码生成工具的工作之外?(这两个原因在http://www.ibm.com/developerworks/webservices/library/ws-avoid-anonymous-types/和https://jaxb.java.net/tutorial/section_2_3_1-Hints-on- Writing-XML-Schemas.html)
从广义上讲,就是这样。但对我而言,问题在于有关重用的细节(什么样的种类,为什么,作者与使用者)和讨论中的工具(其用途是什么,匿名与命名会真正起到作用,等等)。
附件链接中显示的“重用”方面绝对是非常有限的。根据本文的示例,我仍然可以通过对内容模型使用带有命名组的匿名类型来实现重用。
通过扩展的类型层次结构(派生)是重用的另一种形式。但是,它与该文章中建议的有所不同,因为它涉及面向对象的原理。然后,您就可以通过限制来进行派生,许多“心怀不满”的从业人员会认为限制不是重用……但是,它需要一个命名类型。
匿名声明无法使用递归结构(另一种重用方法);实现递归数据结构的一种方法是使用复杂类型。(另一种方法是通过引用全局元素。)
上述链接均未提及重新定义(由于与某些人选择避开该概念有关的原因)。重新定义类型最终是某种派生(因此,它需要一个命名的模式组件),它还是一种非常强大的机制,可以将可扩展的通用模型/转换为可适用于采用者的特定且更可用的模型;最终,可以优雅地维护不同但相关的模型之间基于XSD的“差异图”。
创作样式中还提到了匿名类型。因此,将萨拉米香肠片和威尼斯风格进行对比可以为您提供更多的见解;搜索它或从这里开始(我不隶属于它,也不认为它是完整的,但这是一个不错的开始)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句