4#ifndef _Stroika_Foundation_DataExchange_XML_Schema_h_
5#define _Stroika_Foundation_DataExchange_XML_Schema_h_ 1
7#include "Stroika/Foundation/StroikaPreComp.h"
9#include "Stroika/Foundation/Containers/Sequence.h"
10#include "Stroika/Foundation/DataExchange/BadFormatException.h"
12#include "Stroika/Foundation/DataExchange/XML/Namespace.h"
13#include "Stroika/Foundation/DataExchange/XML/Resource.h"
14#include "Stroika/Foundation/Execution/Exceptions.h"
22namespace Stroika::Foundation::DataExchange::XML {
23 using Containers::Sequence;
24 using IO::Network::URI;
27namespace Stroika::Foundation::DataExchange::XML::DOM::Document {
30namespace Stroika::Foundation::DataExchange::XML::Providers {
32 struct ISchemaProvider;
35namespace Stroika::Foundation::DataExchange::XML::Schema {
43 virtual const Providers::ISchemaProvider* GetProvider ()
const = 0;
44 virtual optional<URI> GetTargetNamespace ()
const = 0;
59 Ptr (shared_ptr<IRep>
s);
60 Ptr (
const Ptr&) =
default;
63 bool operator== (
const Ptr&
p)
const =
default;
74 nonvirtual shared_ptr<IRep> GetRep ()
const;
86 template <
typename AS_T>
88#if !qCompilerAndStdLib_RequiresNotMatchInlineOutOfLineForTemplateClassBeingDefined_Buggy
90#if qStroika_Foundation_DataExchange_XML_SupportDOM
96 template <
typename AS_T>
97 nonvirtual
AS_T As (
const Providers::ISchemaProvider&
p)
99 template <
typename AS_T>
100 nonvirtual
AS_T As (
const Providers::IDOMProvider&
p)
101#if !qCompilerAndStdLib_RequiresNotMatchInlineOutOfLineForTemplateClassBeingDefined_Buggy
107 shared_ptr<IRep> fRep_;
113#if qStroika_Foundation_DataExchange_XML_SupportSchema
117#if qStroika_Foundation_DataExchange_XML_SupportSchema and qStroika_Foundation_DataExchange_XML_SupportParsing
120 void ValidateFile (
const filesystem::path& externalFileName,
const Ptr& schema);
nonvirtual optional< URI > GetTargetNamespace() const