XML文件是否应该符合XSD的所有元素?

时间:2018-09-30 04:49:39

标签: xml visual-c++ xsd

我一直在尝试使用XSD导入XML文件以对其进行验证。但是,当我尝试导入XML文件时,它将失败。然后,我将XML与XSD文件进行了比较,发现XML并没有在XSD文件中指定所有元素。这是引起问题的原因吗? XML文件是否应该使用XSD文件的所有元素?

考虑以下XSD:

<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType>
    <xs:element name="PersonInfo">
    <xs:element name="orderperson" type="xs:string"/>
    <xs:element name="name" type="xs:string"/>
    <xs:element name="address" type="xs:string"/>
    <xs:element name="city" type="xs:string"/>
    <xs:element name="country" type="xs:string"/>
    <xs:element name="title" type="xs:string"/>
    <xs:element name="note" type="xs:string"/>
    <xs:element name="quantity" type="xs:positiveInteger"/>
    <xs:element name="price" type="xs:decimal"/>
</xs:complexType>
</xs:element>
</xs:schema>

然后我创建一个仅包含以下元素的XML:

<PersonInfo>
    <name>Mark</name>
    <title>XYZ</title>
    <quantity>10</quantity>
    <price>100</price>
</PersonInfo>

这是XSD的有效实现吗?当我尝试通过loadXML()函数导入XML文件时,该函数返回S_FALSE? 我不明白为什么导入失败。

1 个答案:

答案 0 :(得分:0)

XSD模式说明XML中的哪些元素是必需的,哪些是可选的。如果XSD指出需要一个元素,则XML实例如果不存在则无效。