2014-05-12 11 views
5

Tôi có một schema với các thuộc tính sau:XML Document Validation Lỗi targetNamespace tham số

<xs:schema id="FooFile" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    targetNamespace="http://Foostandards.com"  
    elementFormDefault="qualified"  
    xmlns="http://Foostandards.com"> 

Tôi có một nhà xây dựng với các thuộc tính sau trên thẻ gốc (FooFile) XDocument.

XDocument Foo2Xml = new XDocument(
    new XDeclaration("1.0", "utf-8", "yes"), 
    new XComment("Foo2 file specifications implemented in xml"), 
     new XElement("FooFile", 
     new XAttribute(XNamespace.Xmlns + "xsi", "http://Foostandards.com"), 
     new XAttribute(xsi + "schemaLocation", "http://Foostandards.com FooFile.xsd"), etc 

tôi nhận được lỗi sau đăng nhập khi tôi chạy phương pháp XDocument Validate:

"Tham số targetNamespace '' nên giá trị giống như targetNamespace 'http://Foostandards.com' của lược đồ."

Tôi có tham số targetNamespace trong Giản đồ và tôi không thể tìm thấy thông tin cho biết rằng nó thậm chí thuộc về thuộc tính tài liệu XML (hoặc cách mã hóa nó).

+2

Liệu XML của bạn thực sự có các ký tự '\" Nếu không, vui lòng xóa chúng khỏi bài đăng của bạn. –

Trả lời

12

Tôi đã tìm ra. Lỗi không có gì liên quan đến giản đồ hoặc tham số XDocument. Đó là phương thức Add cho đối tượng SchemaSet có giá trị null cho tham số targetNamespace.

Mã của tôi:

XmlSchemaSet schemas = new XmlSchemaSet(); 
schemas.Add("", XmlReader.Create(new StringReader(xsd))); 

đâu XSD là một chuỗi đại diện của giản đồ của tôi. Lưu ý "" làm tham số đầu tiên của phương thức Thêm.

Mã cần phải có được:

XmlSchemaSet schemas = new XmlSchemaSet(); 
schemas.Add("http://Foostandards.com", XmlReader.Create(new StringReader(xsd))); 
0

Trong khi thêm các XmlSchemaSet, chúng ta phải đặt "targetNamespace" từ tập tin XSD. Đây là dòng mã dưới đây.

XSD file:

<?xml version="1.0" encoding="utf-8"?> 
<xs:schema xmlns:tns="XXX" elementFormDefault="qualified" 
     targetNamespace="XXX" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 

C# Code:

var schema = new XmlSchemaSet(); 
schema.Add("XXX", "XSD file path"); 

đâu XXX: targetNamespace từ tập tin XSD

Các vấn đề liên quan