Answers:
实际上,XSD是XML本身。其目的是验证另一个XML文档的结构。XSD对于任何XML都不是强制性的,但是它确保XML可以用于某些特定目的。XML仅包含适当格式和结构的数据。
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="QuoteRequestID" type="xs:unsignedLong" minOccurs="0" /> </xs:schema>
但最终收到错误: Error!!! The 'minOccurs' attribute cannot be present.
举个例子
<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>
允许它,但是它有自己的规则。遵守会导致验证错误。我曾尝试过类似的方法,但肯定没有成功,这是问答环节
XSD可能实现的功能:
1)您可以测试XML节点的正确层次结构。[xsd定义哪个子项应该属于哪个父项,等等,并遵循将被视为错误的方式,在上面的示例中,child_two不能是root的直接子项,而是“ parent”标记的子项,这反过来又“根”节点的子节点,有一个层次结构。]
2)您可以定义节点值的数据类型。[在上面的示例中child_two不能有数字以外的任何其他数据]
3)您还可以定义自定义data_types,例如,对于node <month>
,可能的数据可以是12个月中的一个。.因此您需要定义所有12个月在新的数据类型中,将所有12个月的名称都写为枚举值..
4)您可以使用minOccurs和maxOccurs来限制元素的出现,默认值为1和1。
.. 还有很多 ...
<root> <A>A</A> <B/> <C/> </root>
如果Node <A>
是<A>B</A>
,则<B>
强制执行,如果必须,<A>C</A>
则<C>
强制执行。
XSD:
XSD(XML架构定义)指定如何正式描述可扩展标记语言(XML)文档中的元素。
Xml:
XML旨在描述数据。它独立于软件和硬件。
它增强了以下功能。
-数据共享。
-独立于平台。
-增加数据的可用性。
差异:
XSD是基于XML编写的。
XSD定义了可以出现在文档中的元素和结构,而XML则没有。
XSD确保正确解释数据,而XML不正确。
XSD文档已被验证为XML,但并非总是如此。
XSD比XML更能捕获错误。
XSD 定义了可在文档中使用的元素,这些元素与将使用其编码的实际数据有关。
例如:
表示为1/12/2010的日期可以表示1月12日或12月1日。在XSD文档中声明日期数据类型,确保其遵循XSD规定的格式。
<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>
这里:
xs:element:定义一个元素。
xs:sequence:表示子元素仅按提到的顺序出现。
xs:complexType:表示它包含其他元素。
xs:simpleType:表示它们不包含其他元素。
类型: 字符串,十进制,整数,布尔值,日期,时间,
借助额外的属性,我们可以执行多个操作。
在xsd上执行任何任务都比xml简单。