XML和XSD之间的区别是什么?
可扩展标记语言(XML)和XML模式(XSD)之间的区别是什么?实际上XSD本身就是XML。其目的是验证另一个XML文档的结构。XSD对于任何XML都不是强制性的,但它确保XML可以用于某些特定目的。XML只包含适当格式和结构的数据。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
举个例子
<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设计用于描述数据。它独立于软件和硬件。
它增强了以下功能。
-数据共享。
-平台无关。
-增加数据的可用性 差异:
例如:
表示为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简单
从这个角度来看,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>