2016-06-27 15 views
0

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> 

答えて

関連する問題