找不到“schemaLocation”属性

时间:2012-12-20 16:36:35

标签: c# .net xml xsd xml-validation

我正在创建一个模式来验证某些XML,但当它归结为实际读取文档时,我收到了错误:

The 'http://www.w3.org/2001/XMLSchema:schemaLocation' attribute is not declared.

这是使用架构的XML文件之一的开头。

<?xml version="1.0"?>
<envelope xsi:schemaLocation="C:\LocalPath MySchema.xsd" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema" 
 xmlns="http://tempuri.org/MySchema.xsd">
...
</envelope>

我的验证码如下所示:

XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.Schema;
Settings.Schemas.Add(@"http://tempuri.org/MySchema.xsd",
@"C:\LocalPath\ MySchema.xsd");
XmlReader reader = XmlReader.Create(@"C:\LocalPath\testxml\somefile.xml", settings);
xmlDoc.Load(reader);

ValidationEventHandler eventHander = new ValidationEventHandler(validationHandler);

xmlDoc.Validate(eventHander);

1 个答案:

答案 0 :(得分:3)

名称空间http://www.w3.org/2001/XMLSchema(使用常规前缀xsdxs)用于架构文档;您想要的schemaLocation属性位于名称空间http://www.w3.org/2001/XMLSchema-instance中(对于“XML Schema Instance 名称空间”,它具有常规前缀xsi)。