Index: Ringtoets/Common/src/Ringtoets.Common.IO/Readers/ConfigurationReader.cs =================================================================== diff -u -r8a00046f9112833f25944b0f2631c7003f7a1692 -r94587578a17566618ad7b26fc914d8b4d30fb99b --- Ringtoets/Common/src/Ringtoets.Common.IO/Readers/ConfigurationReader.cs (.../ConfigurationReader.cs) (revision 8a00046f9112833f25944b0f2631c7003f7a1692) +++ Ringtoets/Common/src/Ringtoets.Common.IO/Readers/ConfigurationReader.cs (.../ConfigurationReader.cs) (revision 94587578a17566618ad7b26fc914d8b4d30fb99b) @@ -148,9 +148,10 @@ /// Thrown when the provided XML document does not match the provided XML Schema Definition (XSD). private static void ValidateToSchema(XDocument document, string schemaString, string xmlFilePath) { + var xmlResourcesResolver = new XmlResourcesResolver(); var xmlSchemaSet = new XmlSchemaSet { - XmlResolver = new XmlResourcesResolver() + XmlResolver = xmlResourcesResolver }; try @@ -163,6 +164,11 @@ throw new ArgumentException($"Invalid 'schemaString': {exception.Message}", exception); } + if (!xmlResourcesResolver.BaseSchemeReferenced) + { + throw new ArgumentException("Invalid 'schemaString': the base XML Schema Definition file 'ConfiguratieSchema.xsd' is not referenced."); + } + try { document.Validate(xmlSchemaSet, null); @@ -229,11 +235,14 @@ } } + public bool BaseSchemeReferenced { get; private set; } + public override object GetEntity(Uri absoluteUri, string role, Type ofObjectToReturn) { switch (Path.GetFileName(absoluteUri.ToString())) { case "ConfiguratieSchema.xsd": + BaseSchemeReferenced = true; return new MemoryStream(Encoding.UTF8.GetBytes(Resources.ConfiguratieSchema)); case "StochastSchema.xsd": return new MemoryStream(Encoding.UTF8.GetBytes(Resources.StochastSchema));