インライン スキーマ検証を使用して xml ファイルを読み取ると、このエラーが発生します。XML ファイルは次のようになります。
<?xml version="1.0" encoding="UTF-8"?>
<SysConfig xmlns="PM-NameSpace" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="SysConfig.xsd">
...
</SysConfig>
XSD ファイルは XML ファイルと同じフォルダーにあり、「SysConfig.xsd」と呼ばれ、次のようになります。
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="PM-NameSpace" targetNamespace="PM-NameSpace">
...
</xs:schema>
コードでインライン スキーマ検証を行いたいので、C# は次のようになります。
XmlReaderSettings xmlReaderSettings = new XmlReaderSettings();
xmlReaderSettings.ValidationType = ValidationType.Schema;
xmlReaderSettings.ValidationFlags |= XmlSchemaValidationFlags.ProcessInlineSchema;
xmlReaderSettings.ValidationFlags |= XmlSchemaValidationFlags.ProcessSchemaLocation;
xmlReaderSettings.ValidationFlags |= XmlSchemaValidationFlags.ReportValidationWarnings;
xmlReaderSettings.ValidationEventHandler += new ValidationEventHandler(handler);
XmlReader xmlReader = XmlReader.Create(sysConfigPath, xmlReaderSettings);
XmlDocument sysConfigXmlDocument = new XmlDocument();
sysConfigXmlDocument.Load(xmlReader);
Load が呼び出されるとすぐに (最後の行)、検証イベント ハンドラーが呼び出されます。実際のメッセージは次のとおりです。
名前空間 ' ' のスキーマを読み込めません - targetNamespace パラメータ ' ' は、スキーマの targetNamespace 'PM-NameSpace' と同じ値である必要があります。
これは、何かがデフォルトの ('') 名前空間を使用していることを示しているようですが、私は xlmns とターゲットの名前空間を非常に慎重に指定しました。"The targetNamespace parameter ' ' ..." というエラー メッセージの意味がわかりません - targetNamespace属性が指定されており、空白ではありません (' ') - XML 用語での " parameter " が何であるかわかりません- または、C# コード内の (または欠落している) 何かを参照していますか? 誰でも光を当てることができますか?