XSDでXMLファイルを検証する方法を理解しようとしています。 名前空間がわかりません。私はコードがある場合は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文書がいずれかのxmlns属性で指定されます名前空間を(使用していない、すなわち、あなただけの、Schemas.Addに名前空間としてnullを渡すことができ、あなたのシナリオでは
<?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>