XML和XSD有什么区别?
可扩展标记语言(XML)和XML模式(XSD)有什么区别?
其实xsd是xml本身。 其目的是validation另一个xml文档的结构。 xsd对于任何xml都不是强制性的,但是它确保了xml可以用于某些特定的目的。 XML只包含适当格式和结构的数据。
举一个例子
<root> <parent> <child_one>Y</child_one> <child_two>12</child_two> </parent> </root>
并为此devise一个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)您无法使用另一个节点/属性的值validation节点/属性。
2) 这是一个限制:在XSD文件中定义的元素必须仅用一个数据types定义。 [在上面的例子中,对于出现在另一个<parent>
节点中的<child_two>
,数据types不能被定义为int以外的数据types。
3)不能忽略元素和属性的validation,即如果元素/属性出现在XML中,则必须在相应的XSD中定义好。 尽pipe<xsd:any>
允许,但是它有自己的规则。 遵守导致validation错误。 我曾尝试过类似的方法,当然还不成功, 这里是问答
XSD有什么可能:
1)您可以testingXML节点的正确层次结构。 [xsd定义了哪个孩子应该属于哪个父母等等,持久哪一个将被视为错误,在上面的例子中,child_two不能是root的直接子节点,而是父节点的子节点, “根”节点的孩子,有一个层次结构..]
2)您可以定义节点值的数据types。 [在上面的例子中,child_two不能有除数字之外的其他数据]
3)你也可以定义自定义的data_types,例如节点<month>
,可能的数据可以是12个月中的一个..所以你需要在一个新的数据types中定义所有12个月的所有12个月的名字作为枚举值..validation显示错误,如果input的XML包含任何其他值比这12个值..]
4)你可以对元素的出现进行限制,使用minOccurs和maxOccurs,默认值是1和1。
.. 还有很多 …
XSD:
XSD(XML模式定义)指定如何正式描述可扩展标记语言(XML)文档中的元素。
XML:
XML是为了描述数据而devise的,它独立于软件和硬件。
它增强了以下几点。
– 数据共享。
– 平台独立。
– 增加数据的可用性
区别:
-
XSD是基于XML编写的。
-
XSD定义了可以出现在文档中的元素和结构,而XML则没有。
-
XSD确保数据正确解释,而XML不正确。
-
一个XSD文档被validation为XML,但是相反的情况可能并非总是如此。
-
XSD比XML更好地捕捉错误。
XSD 定义了可以在文档中使用的元素 ,与要编码的实际数据有关。
例如:
表示为2010年1月12日的date可以是1月12日或12月1日。 在XSD文档中声明date数据types,确保它遵循由XSD指定的格式。
XML与XSD
XML定义了在格式 良好的文档中构造数据的元素和属性的语法 。
像DTD之前的XSD (又名XML Schema)通过使用户能够在有效的 XML文档中定义元素和属性的词汇和语法 ,为XML的e X张力提供动力。
基本上,一个XSD文件定义了XML文件的外观。 这是一个Schema文件 ,它定义了XML文件的结构。 所以它指定了可能的字段以及它们将会是多less。
XML文件是XSD的一个实例 ,因为它使用XSD中定义的规则。