【发布时间】:2016-10-29 14:35:57
【问题描述】:
我正在尝试了解如何使用 XSD 验证 XML 文件。 我不太了解命名空间。
如果我有代码:
XmlDocument xDoc = new XmlDocument();
xDoc.Load(file.InputStream);
xDoc.Schemas.Add("http://www.w3.org/2001/XMLSchema-instance", @"C:MyXSD.xsd");
ValidationEventHandler eventHandler = new ValidationEventHandler(ValidationEventHandler);
xDoc.Validate(eventHandler);
我得到错误: "属性声明的目标命名空间,无论是本地的还是全局的,都不能匹配http://www.w3.org/2001/XMLSchema-instance。"
当我将架构添加到 xDoc 时,我应该将命名空间设置为什么?
我有一个这样的 xml:
<?xml version="1.0"?>
<rootNode xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
// My Nodes
</rootNode>
我从那个 XML 创建了一个 XSD。
<?xml version="1.0" encoding="Windows-1252"?>
<xs:schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema" attributeFormDefault="unqualified" elementFormDefault="qualified">
<xsd:element name="rootNode">
// My Nodes
</xsd:element>
</xs:schema>
【问题讨论】: