2013-03-15 10 views
1

Я проверяю XML-документ против моей XML-схемы. Недавно я добавил новый атрибут в файлы XML и схему XSD. Но при выполнении проверки я всегда получаю исключениеРезультаты проверки XML-схемы «Атрибут не объявлен»

базис {System.EventArgs}: {System.XML.Shema.ValidationEventArgs}
Исключение:. «The Anhaenger-атрибут не объявлен
сообщение: «Anhaenger-Attribute не объявлен.

Вот декларация в моей XSD схеме:

<xs:attribute id="Anhaenger" name="Anhaenger" use="optional"> 
    <xs:simpleType> 
     <xs:restriction base="D2TAnhaenger_Type" /> 
    </xs:simpleType> 
</xs:attribute> 
<xs:simpleType id="D2TAnhaenger_Type" name="D2TAnhaenger_Type"> 
    <xs:restriction base="xs:string"> 
     <xs:maxLength value="70" /> 
     <xs:whiteSpace value="collapse" /> 
    </xs:restriction> 
</xs:simpleType> 

и это атрибут в файле XML:

Anhaenger="ANH - 0815" 

Вот код я использую для выполнения коррекции в моем применение:

protected XmlDocument ValidateAndCorrect(Stream XMLStream) 
{ 
    // Verwenden von XMLReader, damit die Schemainformationen an den Knoten angefügt werden. 
    // Dann können wir später korrigieren. 
    XmlReaderSettings settings = new XmlReaderSettings(); 
    settings.Schemas.Add("", m_SchemaFile); 
    settings.ValidationEventHandler += new ValidationEventHandler(ValidationEventHandler); 
    settings.ValidationFlags |= XmlSchemaValidationFlags.ProcessInlineSchema; 
    settings.ValidationType = ValidationType.Schema; 

    // Dokument aus dem Stream holen. 
    XmlDocument document = new XmlDocument(); 
    XMLStream.Seek(0, SeekOrigin.Begin); 
    XmlReader reader = XmlReader.Create(XMLStream, settings); 
    document.Load(reader); 

    int i = 0; 

    bool validate = true; 
    while (validate) 
    { 
     i++; 
     Debug.WriteLine("--- Validierung und Korrektur beginnt ---"); 
     Debug.WriteLine("Durchlauf Nummer: " + i.ToString()); 

     m_errors = new List<ValidationEventArgs>(); 
     document.Validate(this.ValidationEventHandler); 
     validate = CorrectValidationResult(document.ChildNodes); 
    } 

    return document; 
} 

Итак, кто-нибудь знает, что я делаю неправильно? Большое спасибо за любую помощь

С наилучшими пожеланиями Adleano

ответ

0

Загвоздка в целевом пространстве имен вашего XSD; Я предполагаю (вы не показываете набор атрибутов xs: schema), так как ваш XML-атрибут объявлен глобальным, он должен иметь префикс с псевдонимом, который соответствует целевому пространству имен вашей схемы.

Смежные вопросы