Stroika Library 3.0d25
 
Loading...
Searching...
No Matches
DataExchange/XML/Schema.cpp
1/*
2 * Copyright(c) Sophist Solutions, Inc. 1990-2026. All rights reserved
3 */
4#include "Stroika/Foundation/StroikaPreComp.h"
5
7
8#include "Schema.h"
9#include "Stroika/Foundation/DataExchange/XML/DOM.h"
11
13
14using namespace Stroika::Foundation;
17using namespace Stroika::Foundation::DataExchange::XML;
18using namespace Stroika::Foundation::DataExchange::XML::Schema;
19
20// Comment this in to turn on aggressive noisy DbgTrace in this module
21//#define USE_NOISY_TRACE_IN_THIS_MODULE_ 1
22
23/*
24 ********************************************************************************
25 ********************************* Schema::Ptr **********************************
26 ********************************************************************************
27 */
28#if qStroika_Foundation_DataExchange_XML_SupportDOM
29template <>
31{
32 return DOM::Document::New (fRep_->GetData ());
33}
34#endif
35template <>
36XML::Schema::Ptr Schema::Ptr::As (const Providers::ISchemaProvider& p)
37{
38 return New (p, fRep_->GetData (), fRep_->GetResolver ());
39}
40template <>
41XML::DOM::Document::Ptr Schema::Ptr::As (const Providers::IDOMProvider& p)
42{
43 return DOM::Document::New (p, fRep_->GetData ());
44}
45
46/*
47 ********************************************************************************
48 ********************************* Schema::New **********************************
49 ********************************************************************************
50 */
51Ptr Schema::New (const Providers::ISchemaProvider& p, const Streams::InputStream::Ptr<byte>& schemaData, const Resource::ResolverPtr& resolver)
52{
53 return Ptr{p.SchemaFactory (schemaData, resolver)};
54}
55
56#if qStroika_Foundation_DataExchange_XML_SupportSchema
57Ptr Schema::New (const Streams::InputStream::Ptr<byte>& schemaData, const Resource::ResolverPtr& resolver, const Options& o)
58{
59 return New (o.GetProvider (), schemaData, resolver);
60}
61#endif
62
63/*
64 ********************************************************************************
65 ************************************ ValidateFile ******************************
66 ********************************************************************************
67 */
68#if qStroika_Foundation_DataExchange_XML_SupportSchema and qStroika_Foundation_DataExchange_XML_SupportParsing
69void DataExchange::XML::Schema::ValidateFile (const filesystem::path& externalFileName, const Ptr& schema)
70{
71 AssertNotNull (dynamic_cast<const Providers::ISAXProvider*> (schema.GetRep ()->GetProvider ()));
72 SAXParse (*dynamic_cast<const Providers::ISAXProvider*> (schema.GetRep ()->GetProvider ()),
73 IO::FileSystem::FileInputStream::New (externalFileName), nullptr, schema);
74}
75#endif
#define AssertNotNull(p)
Definition Assertions.h:336
void SAXParse(const Providers::ISAXProvider &saxProvider, const Streams::InputStream::Ptr< byte > &in, StructuredStreamEvents::IConsumer *callback=nullptr, const Schema::Ptr &schema=nullptr, Execution::ProgressMonitor::Updater progress=nullptr)
Definition SAXReader.cpp:45
Document::Ptr is create with Document::New, and is a smart pointer to a DOM document object.
Definition DOM.h:721
InputStream<>::Ptr is Smart pointer (with abstract Rep) class defining the interface to reading from ...
How XML is read and written - for now, with which provider - taken last by each XML function (DOM::Do...