У меня есть две схемы, одна с основным определением объекта, а другая имеет определение для типов, которые не являются простыми типами (например, string, int, decimal)
, который называется common.xsd
Когда я проверяю, он добавляет обе схемы, но не находит типы во включенном файле.
Main.Xsd содержит:
<xs:include schemaLocation="Common.xsd"/>
и это функция проверки:
XmlReaderSettings settings = new XmlReaderSettings();
FileStream fileStream = File.OpenRead(xsdFile);
XmlSchema schema = XmlSchema.Read(File.OpenRead(System.IO.Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "Schemas\\Main.xsd")), OnXsdSyntaxError);
XmlSchema schema2 = XmlSchema.Read(File.OpenRead(System.IO.Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "Schemas\\Common.xsd")), OnXsdSyntaxError);
settings.ValidationType = ValidationType.Schema;
settings.ValidationFlags |= XmlSchemaValidationFlags.ProcessInlineSchema;
settings.ValidationFlags |= XmlSchemaValidationFlags.ProcessSchemaLocation;
settings.ValidationFlags |= XmlSchemaValidationFlags.ReportValidationWarnings;
//þurfum að adda common.xsd líka !
settings.Schemas.Add(schema);
settings.Schemas.Add(schema2);
settings.ValidationEventHandler += new ValidationEventHandler(OnXsdSyntaxError);
using (XmlReader validator = XmlReader.Create(xmlFile, settings))
{
while (validator.Read())
isValid = true;
}
Ошибка:
Тип 'http://schemas.domain.com:Ssn' не объявлен или не является простым типом.
Очевидно, что он не добавляет файл схемы2 и не находит определения для этих пользовательских типов.
Буду очень признателен за помощь, потому что я вынужден использовать несколько файлов XSD в этой проверке.