xmlwrapp Lightweight C++ XML parsing library

relaxng.h
Go to the documentation of this file.
1 /*
2 * Copyright (C) 2018 Vadim Zeitlin <vz-xmlwrapp@zeitlins.org>
3 * All Rights Reserved
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in
13 * the documentation and/or other materials provided with the
14 * distribution.
15 * 3. Neither the name of the Author nor the names of its contributors
16 * may be used to endorse or promote products derived from this software
17 * without specific prior written permission.
18 *
19 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS''
20 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
21 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
22 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR
23 * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
26 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
27 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
28 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
29 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30 * SUCH DAMAGE.
31 */
32
33 /**
34 @file
35
36 This file contains the definition of the xml::relaxng class.
37 */
38
39 #ifndef _xmlwrapp_relaxng_h_
40 #define _xmlwrapp_relaxng_h_
41
42 // xmlwrapp includes
43 #include "xmlwrapp/init.h"
44 #include "xmlwrapp/export.h"
45 #include "xmlwrapp/errors.h"
46
47 namespace xml
48 {
49
50 // forward declarations
51 class document;
52 class error_messages;
53
54 namespace impl
55 {
56 struct relaxng_impl;
57 }
58
59 /**
60 XML validator using RelaxNG.
61
62 This class is used to validate documents against RelaxNG schemas expressed
63 in XML syntax (compact RelaxNG syntax is not supported).
64
65 @since 0.9.0
66 */
67 class XMLWRAPP_API relaxng
68 {
69 public:
70 /**
71 Parses XML RelaxNG document and creates relaxng instance from it.
72
73 Errors are handled by @a on_error handler; by default, xml::exception
74 is thrown on errors. If there's a fatal error that prevents the relaxng
75 from being loaded and the error handler doesn't throw an exception, the
76 constructor will throw xml::exception anyway.
77 */
78 explicit relaxng(const document& doc, error_handler& on_error = throw_on_error);
79
80 /// Destructor
81 ~relaxng();
82
83 /**
84 Validates the document @a doc against the relaxng.
85
86 Errors are handled by @a on_error handler; by default, xml::exception
87 is thrown on errors.
88
89 @return `true` if the document is valid with regard to the relaxng,
90 `false` otherwise.
91 */
92 bool validate(const document& doc, error_handler& on_error = throw_on_error) const;
93
94 private:
95 impl::relaxng_impl *pimpl_;
96
97 // This class is not copyable
98 relaxng(const relaxng&);
99 relaxng& operator=(const relaxng&);
100 };
101
102 } // namespace xml
103
104 #endif // _xmlwrapp_relaxng_h_
errors.h
xml::error_handler
The xml::error_handler class is used to handle libxml2 errors and warnings emitted during parsing,...
Definition: errors.h:85
xml::document
The xml::document class is used to hold the XML tree and various bits of information about it.
Definition: document.h:85
xml::throw_on_error
error_handler_throw_on_error throw_on_error
Error handler object that throws on any error.
xml
XML library namespace.
Definition: attributes.h:52
xml::relaxng::relaxng
relaxng(const document &doc, error_handler &on_error=throw_on_error)
Parses XML RelaxNG document and creates relaxng instance from it.
xml::relaxng::validate
bool validate(const document &doc, error_handler &on_error=throw_on_error) const
Validates the document doc against the relaxng.
xml::relaxng::~relaxng
~relaxng()
Destructor.
xml::relaxng
XML validator using RelaxNG.
Definition: relaxng.h:68
init.h