Xsd 在XML模式中避免匿名类型的原因是什么

Xsd 在XML模式中避免匿名类型的原因是什么,xsd,Xsd,我想知道,除了重用XML模式中的匿名类型并使代码生成工具的工作更轻松之外,是否还有其他原因可以避免XML模式中的匿名类型?(这两个原因在和中解释)概括地说,就是这样。但对我来说,问题在于关于重用的细节(什么类型,为什么,作者与消费者)和讨论中的工具(它的用途是什么,匿名与命名真的会有所不同吗,等等) 附加链接中显示的“重用”方面肯定非常有限。基于本文的示例,我仍然可以通过为内容模型使用带有命名组的匿名类型来实现重用 通过扩展的类型层次结构(派生)是重用的另一种形式。然而,它与那篇文章中的建议不同

我想知道,除了重用XML模式中的匿名类型并使代码生成工具的工作更轻松之外,是否还有其他原因可以避免XML模式中的匿名类型?(这两个原因在和中解释)

概括地说,就是这样。但对我来说,问题在于关于重用的细节(什么类型,为什么,作者与消费者)和讨论中的工具(它的用途是什么,匿名与命名真的会有所不同吗,等等)

附加链接中显示的“重用”方面肯定非常有限。基于本文的示例,我仍然可以通过为内容模型使用带有命名组的匿名类型来实现重用

通过扩展的类型层次结构(派生)是重用的另一种形式。然而,它与那篇文章中的建议不同,因为它涉及OO原则。然后通过限制进行派生,许多“不满”的实践者会认为这不是重用。。。但是,它需要一个命名类型

匿名声明不可能使用递归结构(另一种重用方式);实现递归数据结构的一种方法是使用复杂类型。(另一种方法是通过全局元素的ref。)

上面的链接都没有提到重新定义(原因与一些人选择回避这个概念有关)。虽然类型的重新定义最终是某种派生(因此它需要一个命名的模式组件),但它也是一种非常强大的机制,可以将可扩展和通用模型转换为特定的、更可用的模型,特定于采用者;最终,允许在不同但相关的模型之间优雅地维护基于XSD的“diffgram”

创作风格中也提到匿名类型;因此,对比意大利腊肠片和威尼斯风格可以为您提供更多的见解;搜索或启动(我不属于它,也不认为它是完整的,但这是一个好的开始)。