У меня есть XML-файл, который необходимо проверить по xsd (файлу), который, в свою очередь, включает в себя еще несколько xsd, которые находятся в том же каталоге, что и основной xsd. Как я проверю xml на Xsd, чтобы внутренний xsd также учитывался при проверке?
код для проверки xml
var xdoc = XDocument.Load(TextReader);
var schemas = new XmlSchemaSet();
schemas.Add("example.com/rules-engine-configuration.xsd", xsdFilePath);
try
{
string msg = "";
xdoc.Validate(schemas, (sender, args) =>
{
msg += args.Severity.ToString() + ":" + args.Message + " Line Number :" + args.Exception.LineNumber + " Line Position:" + args.Exception.LinePosition + Environment.NewLine;
});
}
Здесь MSG указывает как "", что означает его анализ, а не показ исключений.
Ниже приведен основной XSD-файл, а тег xs: include содержит другой XSD-файл
.
<?xml version="1.0" encoding="utf-8"?>
<xs:schema targetNamespace="example.com/rules-engine-configuration.xsd"
elementFormDefault="qualified"
xmlns="example.com/rules-engine-configuration.xsd"
xmlns:mstns="example.com/rules-engine-configuration.xsd"
xmlns:xs="example.com/2001/XMLSchema"
>
<xs:include schemaLocation="RulesEngineSimpleTypes.xsd" />
<xs:include schemaLocation="RulesEngineActivities.xsd" />
<xs:include schemaLocation="RulesEngineAttributes.xsd" />
<xs:include schemaLocation="RulesEngineCriteria.xsd" />
<xs:include schemaLocation="RulesEngineEodSettings.xsd" />
<!-- ===================== Common Simple Types ===================== -->
<xs:simpleType name="EnvironmentType">
<xs:annotation>
<xs:documentation>A string of comma-separated values like RTA, PDS .</xs:documentation>
</xs:annotation>