Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XML和XSD之间的区别是什么?_Xml_Xsd - Fatal编程技术网

XML和XSD之间的区别是什么?

XML和XSD之间的区别是什么?,xml,xsd,Xml,Xsd,可扩展标记语言(XML)和XML模式(XSD)之间的区别是什么?实际上XSD本身就是XML。其目的是验证另一个XML文档的结构。XSD对于任何XML都不是强制性的,但它确保XML可以用于某些特定目的。XML只包含适当格式和结构的数据。举个例子 <root> <parent> <child_one>Y</child_one> <child_two>12</child_two> </parent

可扩展标记语言(XML)和XML模式(XSD)之间的区别是什么?

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


举个例子

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

Y
12
并为此设计一个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文件中定义的元素必须仅使用一个数据类型定义。[在上述示例中,对于出现在另一个
节点中的
,不能定义除int以外的数据类型。
3) 您不能忽略元素和属性的验证,也就是说,如果元素/属性出现在XML中,它必须在相应的XSD中定义良好。虽然使用
允许它,但它有自己的规则。遵守规则会导致验证错误。我曾尝试过类似的方法,但肯定没有成功,


使用XSD可以做什么:
1) 您可以测试XML节点的适当层次结构。[xsd定义了哪个子节点应该在哪个父节点下,等等,遵循哪个将被视为错误,在上面的示例中,child_two不能是root的直接子节点,但它是“parent”标记的子节点,而“parent”标记又是“root”节点的子节点,有一个层次结构。
2) 您可以定义节点值的数据类型。[在上面的示例中,child_two不能有除number之外的任何其他数据]
3) 您还可以定义自定义数据类型,[例如,对于节点
,可能的数据可以是12个月中的一个。因此,您需要在新数据类型中定义所有12个月,将所有12个月的名称写入枚举值。如果输入XML包含除这12个值以外的任何其他值,验证将显示错误。
4) 您可以使用minOccurs和maxOccurs限制元素的出现,默认值为1和1。

…还有更多…

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

差异:

  • XSD是基于XML编写的

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

  • XSD确保数据得到正确解释,而XML则没有

  • XSD文档被验证为XML,但事实并非总是相反

  • XSD比XML更善于捕捉错误

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

    XML vs XSD 定义文档中结构化数据的语法


    与以前的DTD一样,通过允许用户在XML文档中定义的词汇表和语法,增强了XML中的eX可伸缩性。

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

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

    简单XML示例:
    
    约翰
    史密斯
    
    上述XML的XSD(已解释):
    
    
    此处:

    xs:element:定义一个元素

    xs:sequence:表示子元素仅按所述顺序出现

    xs:complexType:表示它包含其他元素

    xs:simpleType:表示它们不包含其他元素

    类型: 一串 十进制的 整数, 布尔, 日期, 时间,

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

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


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

    这就像设计一个数据库

    XML技术的特点是它们本质上是文本的。使用XSD,这意味着您有一个数据结构定义框架,可以“插入”到PHP等文本处理工具中。因此,您不仅可以操作数据本身,还可以非常轻松地更改和记录结构,甚至自动生成前端


    从这个角度来看,XSD是数据(XML)和数据处理工具之间的“粘合剂”或“中间件”。

    @InfantPro'Aravind'您所说的“无法使用另一个节点/属性的值验证节点/属性”是什么意思
    <school>
      <firstname>John</firstname>
      <lastname>Smith</lastname>
    </school>
    
    <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>