“未声明\'http://www.w3.org/XML/1998/namespace:lang\'属性。”

|| 有时,当使用XmlValidatingReader验证某些XML文档时,会出现以下错误:
System.Xml.Schema.XmlSchemaValidationException: 
\"The \'http://www.w3.org/XML/1998/namespace:lang\' attribute is not declared.\"
相同的文档有时会成功。我不知道为什么。 我的XSD导入架构如下:
<xs:schema id=\"myschemaId\"
       xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"
       targetNamespace=\"http://mytargetnamespace.com\"
       xmlns=\"http://mytargetnamespace.com\"
       xmlns:mm=\"http://mytargetnamespace.com\"
       elementFormDefault=\"qualified\">
 <xs:import namespace=\"http://www.w3.org/XML/1998/namespace\" 
            schemaLocation=\"http://www.w3.org/2001/xml.xsd\" />
 ...
在XML文档中,我具有以下属性:
<root xmlns=\"http://mytargetnamespace.com\"        
      xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"
      xsi:schemaLocation=\"http://mytargetnamespace.com myschema.xsd\">
最后,XmlReaderSettings:
const XmlSchemaValidationFlags validationFlags =
          XmlSchemaValidationFlags.ProcessInlineSchema |
          XmlSchemaValidationFlags.ProcessSchemaLocation |  
          XmlSchemaValidationFlags.ReportValidationWarnings |
          XmlSchemaValidationFlags.AllowXmlAttributes;

// Set the validation settings.
var settings = new XmlReaderSettings
                   {
                       ValidationType = ValidationType.Schema,
                       ValidationFlags = validationFlags,
                       DtdProcessing = DtdProcessing.Parse
                   };
settings.ValidationEventHandler += OnValidationEventHandler;

// Create the XmlReader object.
var reader = XmlReader.Create(_xmlFilePath, settings);

// Parse the file. 
while (reader.Read()) {}
这是一个在Windows 2003上运行.NET 4.0的独立exe。 我已经注意到,尝试进行验证时会出现明显的停顿。这可能有关吗?是否尝试下载实际的\“ xml.xsd \”模式,但未成功?     
已邀请:
由于许多DTD和XSD起源于W3C,因此存在许多人试图从服务器中解析它们的问题,从而导致大量的请求被淹没。因此,他们开始阻止“过多”请求。 请参阅此博客条目,该条目也适用于XSD。 解决方案是使用本地副本。     
我非常有信心我已经解决了这一问题。我检查了Fiddler,并确实看到向w3c.org发送xsd文件的请求。进一步的研究证实了这一联系。备注#3似乎与我的情况有关。因此,如果由于某种原因我的计算机无法下载XSD文件,那么xml名称空间将变得不可用。遗憾的是,从未报告过真正的错误(“无法访问w3c.org”或您拥有什么)。 从ѭ5上取下
schemaLocation
就可以了。     

要回复问题请先登录注册