Я проверяю 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