What is the difference between XML and XSD?

What is the difference between Extensible Markup Language (XML) and XML Schema Definition (XSD)?

147847 次浏览

实际上,XSD 就是 XML 本身。其目的是验证另一个 XML 文档的结构。XSD 对于任何 XML 都不是强制性的,但它确保了 XML 可以用于某些特定目的。XML 只包含适当格式和结构的数据。


举个例子

<root>
<parent>
<child_one>Y</child_one>
<child_two>12</child_two>
</parent>
</root>

并为此设计一个 xsd:

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element name="parent">
<xs:complexType>
<xs:sequence>
<xs:element name="child_one" type="xs:string" />
<xs:element name="child_two" type="xs:int" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>


XSD 的不可能之处: 希望首先编写它,因为列表非常小
1)不能使用另一个节点/属性的值来验证一个节点/属性。
2) 这是一个限制:在 XSD 文件中定义的元素必须只有一种数据类型。[在上面的示例中,对于出现在另一个 <parent>节点中的 <child_two>,不能定义 int 以外的数据类型。
3)不能忽视元素和属性的验证,即,如果 XML 中出现了元素/属性,那么它必须在相应的 XSD 中得到良好定义。虽然 <xsd:any>的使用允许它,但它有自己的规则。遵守这一点将导致验证错误。我曾经尝试过类似的方法,但是肯定不成功,这里是问答环节 < br >


XSD 的可能性:
1) You can test the proper hierarchy of the XML nodes. [xsd defines which child should come under which parent, etc, abiding which will be counted as error, in above example, child_two cannot be the immediate child of root, but it is the child of "parent" tag which is in-turn a child of "root" node, there is a hierarchy..]
2)可以定义节点值的数据类型。[在上面的例子中,child _ two 不能有除 number 以外的任何其他数据]
3)您还可以定义自定义 data _ type,[例如,对于节点 <month>,可能的数据可以是12个月中的一个。.因此,您需要在一个新的数据类型中定义所有12个月,并将所有12个月的名称作为枚举值写入。.如果输入 XML 包含这12个值以外的任何值,验证将显示错误。. ]
4) You can put the restriction on the occurrence of the elements, using minOccurs and maxOccurs, the default values are 1 and 1.

还有更多。

XSD:
XSD (XML 模式定义)指定如何正式描述 XML (XML)文档中的元素。
Xml:
XML was designed to 描述资料.It is independent from software as well as hardware.
它强化了以下几点。
-Data sharing.
-Platform independent.
- 提供更多资料。

Differences:

  1. XSD 是基于 XML 编写的。

  2. XSD 定义可以出现在文档中的元素和结构,而 XML 不能。

  3. XSD ensures that the data is properly interpreted, while XML does not.

  4. XSD 文档被验证为 XML,但反过来可能并不总是正确的。

  5. XSD 比 XML 更善于捕捉错误。

可以在文档中使用的 XSDdefines elements,它与要用来编码它的实际数据有关。
例如:
表示为2010年1月12日的日期既可以是1月12日,也可以是12月1日。在 XSD 文档中声明日期数据类型,确保它遵循 XSD 指定的格式。

XML VS XSD

XML 定义了 元素和属性语法,用于在 形态完美文档中构造数据。

XSD < sup > (又名 XML 模式定义) 与以前的 DTD 一样,通过使用户能够在 有效 XML文档中定义 元素和属性词汇和语法来增强 XML中的 eX可张性。

Basically an XSD file defines how the XML file is going to look like. It's a 架构文件 which defines the structure of the XML file. So it specifies what the possible fields are and what size they are going to be.

XML 文件是 XSD 的 一个例子,因为它使用 XSD 中定义的规则。

简单的 XML 示例:

<school>
<firstname>John</firstname>
<lastname>Smith</lastname>
</school>

上面的 XML 的 XSD (解释) :

<xs:element name="school">
<xs:complexType>
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>

这里:

Element : 定义一个元素。

序列 : 表示子元素只按照提到的顺序出现。

表示它包含其他元素。

SimpleType : 表示它们不包含其他元素。

类型: 绳子, 十进制, integer, 布尔型, 约会, time,

  • 简单来说 ,xsd 是用特定类型表示和验证 XML 数据的另一种方法。
  • 在额外属性的帮助下,我们可以执行多个操作。

  • 在 xsd 上执行任何任务都比 xml 简单。

XML 比 f.ex 有更广泛的应用。超文本标示语言。它没有内在的或默认的“应用程序”。因此,虽然您可能并不真正关心网页也是由允许的内容来管理的,但是从作者的角度来看,您可能希望精确地定义 XML 文档可以包含和不可以包含的内容。

It's like designing a database.

The thing about XML technologies is that they are textual in nature. With XSD, it means you have a data structure definition framework that can be "plugged in" to text processing tools like PHP. So not only can you manipulate the data itself, but also very easily change and document the structure, and even auto-generate front-ends.

如此看来,XSD 是数据(XML)和数据处理工具之间的“粘合剂”或“中间件”。