我们正在将Microsoft SQL Server 2005中的XML数据类型用于项目。团队的一些成员和我认为我们也应该使用XSD,而另一个阵营的成员认为我们应该保留XML临时性而不是将它们视为“类型”。
XML旨在为许多文本配置文件带来结构和中心性,这些文件是维护的噩梦。
我们使用的是.NET 3.5 / C#,我们的表格设计有适当的数据类型。 我的论点是,我们已经在思考为什么打破这种方法,因为它是XML,我们已经“面向类型”了。这是因为缺少与文本文件类型的原始问题。不使用“类型”方法让我们对同样的问题持开放态度。
可能是我对XML模式的好处的理解是不正确的。 那么使用XML模式的优点和缺点是什么?
答案 0 :(得分:2)
保留没有XSD的XML存储库(在我看来)类似于拥有一个数据库,其中所有类型都声明为VARCHAR(n)。你不关心你得到什么样的输入,你只想输入。
XSD确保您的XML具有您期望的输入类型。它们为您的模型提供结构,这是您正在寻找的东西。
答案 1 :(得分:2)
不幸的是,即使是XSD(W3C)的创作机构也明白XSD是一项非常糟糕的技术。也就是说,它的意图并不一定是坏事。 C#的一个主要好处是它是静态类型的。静态键入XML文档可以获得相同的好处。这里最好的是对类进行逆向工程,以使用XML序列化属性生成Schema。执行此操作时,C#将为您的XML文件创建一个自定义数据读取器,这将极大地提高性能。
XML的最大成本之一是它必须进行字符串解析。您可以对XML文件做出的假设越多(例如,它们的结构),您的性能就越好。
因此,最终像许多事情一样,他们对性能优势的需求足以证明开发人员时间的成本是合理的。或者是否有足够的强烈愿望使用静态类型系统来证明编写XSD的成本。
最终,您的项目需求将决定您应该做什么,但静态类型和性能是需要考虑的主要好处。
答案 2 :(得分:2)
好吧,正如其他帖子和问题所述,XSD将确保您在XML中的正确位置使用正确的类型,并且在更改其结构之前您必须三思而后行。
但是,如果我可以这么说,XSD真的过于冗长。而且有时真的是一个混乱的描述复杂的结构,有条件的内容。
希望XSD不是验证XML的唯一方法,更简单的方法是使用RelaxNG,尤其是它的紧凑语法,它比你用XSD想象的更可读。< / p>
答案 3 :(得分:1)
使用模式的一大优势是它有助于确保项目中的每个人都同意如何布置XML文档。此外,通过使用模式,您可以在XML解析器中启用验证,从而更容易判断某些代码何时失败,因为它给出了一些错误的XML。
在缺点方面,维护模式可能会很痛苦,根据您的项目,可能不值得付出努力。
答案 4 :(得分:1)
如果您没有架构,您最终会自行重新实现所有验证(或者根本不验证并且无效输入时崩溃)。 XSD解析器/验证器为您完成所有这些工作,并由其域中的专家进行优化和调试。你为什么要自己重做所有这些工作?
答案 5 :(得分:1)
XSD不是唯一可用的XML架构。请改用http://relaxng.org/。 RelaxNG允许您用XML表示模式,而不是像XSD那样学习另一种数据“语言”。
答案 6 :(得分:0)