XML和XSD有什么区别?

时间:2010-02-25 12:43:43

标签: xml xsd

可扩展标记语言(XML)和XML架构(XSD)之间有什么区别?

7 个答案:

答案 0 :(得分:133)

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

答案 1 :(得分:103)


举一个例子

<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文件中定义的元素必须只用一种数据类型定义。 [在上面的示例中,对于出现在另一个<child_two>节点中的<parent>,除了int之外,不能定义数据类型。
3)您不能忽略元素和属性的验证,即,如果元素/属性出现在XML中,则必须在相应的XSD中明确定义。虽然使用<xsd:any>允许它,但它有自己的规则。持久导致验证错误。我试过类似的方法,当然没有成功,here is the Q&A


XSD的可能性:
1)您可以测试XML节点的正确层次结构。 [xsd定义哪个孩子应该在哪个父母等下面,哪些将被视为错误,在上面的例子中,child_two不能是root的直接子项,但它是“parent”标签的子项,它依次是“root”节点的子节点,有一个层次结构..]
2)您可以定义节点值的数据类型。 [在上面的示例中,child_two不能包含任何其他数据而不是数字]
3)您还可以定义自定义data_types,[例如,对于节点<month>,可能的数据可以是12个月中的一个..因此您需要在新数据类型中定义所有12个月的所有12个月月份名称作为枚举值。如果输入XML包含除这12个值之外的任何其他值,则验证显示错误。]
4)您可以使用minOccurs和maxOccurs对元素的出现进行限制,默认值为1和1.

..还有更多...

答案 2 :(得分:13)

<强> XSD:
  XSD(XML模式定义)指定如何在可扩展标记语言(XML)文档中正式描述元素。
XML:
XML旨在描述数据。它独立于软件和硬件 它增强了以下内容    - 数据共享。
   - 平台独立。
   - 增加数据的可用性。

差异:

  1. XSD基于XML编写。

  2. XSD定义了可以出现在文档中的元素和结构,而XML则没有。

  3. XSD确保正确解释数据,而XML则不然。

  4. XSD文档被验证为XML,但相反的情况可能并非总是如此。

  5. XSD在捕获错误方面比XML更好。

  6. XSD 定义了可以在文档中使用的元素,与要编码的实际数据有关。
    例如:
    表示为2010年1月12日的日期可以表示1月12日或12月1日。在XSD文档中声明日期数据类型,确保它遵循XSD规定的格式。

答案 3 :(得分:5)

XML与XSD

XML定义elements and attributes语法,用于在well-formed文档中构建数据。

与之前的DTD一样,

XSD (aka XML Schema)通过启用用户定义词汇和语法 XML 中的e X 张力> elements and attributes XML 文档中的valid

答案 4 :(得分:2)

SIMPLE XML示例:

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

XSD OF ABOVE XML:

<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>

<强>这里:

复杂类型:表示它包含其他元素。 简单类型:表示它们不包含其他元素。

<强>类型: 串, 小数, 整数, 布尔, 日期, 时间,

简单来说,xsd是表示和验证具有特定类型的XML数据的另一种方式。借助额外的属性,我们可以执行多个操作。在xsd上执行任何任务比xml简单。

答案 5 :(得分:0)

基本上,XSD文件定义了XML文件的外观。它是架构文件,它定义了XML文件的结构。因此,它指定了可能的字段以及它们的大小。

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

答案 6 :(得分:0)

XML的应用范围比f.ex广泛得多。 HTML。它没有固有的或默认的“应用程序”。因此,尽管您可能不太在乎网页也受允许的内容支配,但从作者的角度来看,您可能希望精确定义XML文档可能包含和不包含的内容。

这就像设计数据库一样。

关于XML技术的事情是它们本质上是文本的。借助XSD,这意味着您拥有一个可以“插入” PHP等文本处理工具的数据结构定义框架。因此,您不仅可以操纵数据本身,而且可以非常轻松地更改和记录结构,甚至可以自动生成前端。

这样看来,XSD是数据(XML)和数据处理工具之间的“胶水”或“中间件”。