1

一部の XML を検証するスキーマを作成していますが、実際にドキュメントを読み取ると、次のエラーが発生します。

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

これは、スキーマを使用する XML ファイルの 1 つの先頭がどのように見えるかです。

<?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);
4

1 に答える 1

3

名前空間http://www.w3.org/2001/XMLSchema (従来の接頭辞xsdまたはが付いているxs) は、スキーマ ドキュメント用です。必要なschemaLocation属性は名前空間http://www.w3.org/2001/XMLSchema-instancexsi ( 「XML スキーマインスタンス名前空間」の従来のプレフィックスを持つ) にあります。

于 2012-12-20T18:02:32.680 に答える