请用幼稚的术语解释。
XML 验证实际上是什么意思?
“XML 数据的验证”、“XML 文档的验证”和“XML 模式的验证”是同一个意思吗?
XSD 文档如何帮助验证 XML 文档/数据/架构?
注意:有很多关于 XML 验证的文章。但是,这些都是令人费解的。讨论使用行话,因此难以理解。
请用幼稚的术语解释。
XML 验证实际上是什么意思?
“XML 数据的验证”、“XML 文档的验证”和“XML 模式的验证”是同一个意思吗?
XSD 文档如何帮助验证 XML 文档/数据/架构?
注意:有很多关于 XML 验证的文章。但是,这些都是令人费解的。讨论使用行话,因此难以理解。
也许这个简单的解释会有所帮助:
XML 文档有不同级别的“正确性”。
首先是良构。如果文档符合为 XML 文件制定的句法规则,例如标签正确嵌套和闭合、遵循命名规则等,则该文档是格式良好的。
完全基于 XML 标准可以检查 XML 文档的格式是否正确。您无需了解有关 XML 文档中包含的数据及其结构的任何信息。
这就是验证的用武之地:
DTD(文档类型定义)或 XSD 指定了如何构建某种类型的 XML 文档的规则,例如,在哪些上下文中允许哪些标签,每个标签可能有哪些属性和值,以及标签之间是否可以交叉引用正确处理。
例如,如果您将标签定义为 ID 字段,则其值可能仅在 XML 文件中出现一次。
将此与编程语言进行比较:
在 Python 中,以下将是SyntaxError
:
f("Hello) # not "well-formed"
以下在语法上是正确的,但仍然失败,因为函数使用 不正确:
def f(a):
return a+1
f("Hello") # "well-formed" but invalid (TypeError)
简单来说,模式(例如 XSD、RelaxNG 等文档)定义了 XML 文档的语法。
处理器应该能够解析 XML 文件并检查它是否对模式中定义的语法有效。
模式通常指定(除其他外)元素的层次结构、属性类和属性值的数据类型。
w3schools 的介绍对 IMO 很有帮助:http ://www.w3schools.com/schema/schema_intro.asp
虽然您可能想在某个时候查看 RelaxNG:http ://relaxng.org/tutorial-20011203.html
模式是一组区分“有效”和“无效”文档的规则。针对特定模式验证文档是确定文档是否满足该模式中规则的过程。