2014-05-12 6 views
5

Mam schemat z następujących cech:XML Document Validation parametr Błąd targetNamespace

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

Mam konstruktora XDocument z następujących atrybutów w znaczniku root (FooFile).

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 

otrzymuję następujący błąd zalogowany kiedy uruchomić metodę XDocument sprawdzenia poprawności:

„Parametr targetNamespace«»powinna być taka sama wartość jak targetNamespace«http://Foostandards.com»schematu”.

Mam parametr targetNamespace w schemacie i nie mogę znaleźć informacji, która mówi mi, że nawet należy do atrybutów dokumentu XML (lub jak je zakodować).

+2

Czy Twój XML rzeczywiście mają znaki '\” "jeśli tak, to proszę, usuń je ze swojego postu. –

Odpowiedz

12

Wymyśliłem to. Błąd nie ma nic wspólnego ze schematem lub parametrami XDocument. Była to metoda Add obiektu SchemaSet, który miał wartość pustą dla parametru targetNamespace.

Mój kod:

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

Gdzie xsd jest reprezentacją ciąg mojego schematu. Zwróć uwagę na "" jako pierwszy parametr metody Add.

kod powinien być:

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

podczas dodawania XmlSchemaSet, musimy umieścić "targetNamespace" z pliku XSD. Oto poniższy wiersz kodu.

plik XSD:

<?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# Kod:

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

Gdzie XXX: targetNamespace z pliku XSD