diff --git a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs index e800a6395a54d26c526ddc0b3ab113f4e670fa96..201e19b047271bdee2cf405de8c669cded1974f5 100644 --- a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs +++ b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs @@ -82,6 +82,15 @@ namespace TUGraz.VectoCommon.InputData public string SourceVersion { get; set; } + /// <summary> + /// In case of components loaded from XML files, this is the name of the XSD Type + /// </summary> + public string Type { get; set; } + + public string SourceTypeVersion { get; set; } + + + public string SourcePath => SourceFile != null ? Path.GetDirectoryName(Path.GetFullPath(SourceFile)) : null; } diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Common/AbstractXMLResource.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Common/AbstractXMLResource.cs index 057b4afd1e194aada2be9680a066c399ac4667fb..f39e292819b9df4f5c27f454c850329be0cf2b48 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Common/AbstractXMLResource.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Common/AbstractXMLResource.cs @@ -33,6 +33,7 @@ using System.Xml; using System.Xml.Linq; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCore.Utils; +using XmlDocumentType = TUGraz.VectoCore.Utils.XmlDocumentType; namespace TUGraz.VectoCore.InputData.FileIO.XML.Common { public abstract class AbstractXMLResource : AbstractXMLType, IXMLResource @@ -44,13 +45,20 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Common { SourceFile = source; } - public virtual DataSource DataSource => new DataSource() { SourceFile = SourceFile, SourceVersion = SourceVersion, SourceType = SourceType }; + public virtual DataSource DataSource => new DataSource() { + Type = SchemaType, + SourceFile = SourceFile, + SourceVersion = SourceVersion, + SourceType = SourceType, + }; + public string SourceTypeVersion { get; } - protected string SourceVersion => XMLHelper.GetVersionFromNamespaceUri(SchemaNamespace); + protected string SourceVersion => SchemaNamespace.GetVersionFromNamespaceUri(); protected abstract XNamespace SchemaNamespace { get; } + protected abstract DataSourceType SourceType { get; } } } \ No newline at end of file diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Common/AbstractXMLType.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Common/AbstractXMLType.cs index aaf93c05a5982a2877a06e26a5f7036468896ed3..a4b44c0bea6a463b63630e946ac7515c0802e620 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Common/AbstractXMLType.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Common/AbstractXMLType.cs @@ -32,6 +32,7 @@ using System; using System.Collections.Generic; using System.Xml; +using System.Xml.Schema; using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; @@ -42,9 +43,12 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Common { public abstract class AbstractXMLType : LoggingObject { protected readonly XmlNode BaseNode; + protected readonly string SchemaType; protected AbstractXMLType(XmlNode node) { + SchemaType = node.SchemaInfo?.SchemaType?.Name ; + BaseNode = node; }