source: trunk/src/xmlpatterns/api/qxmlschema.cpp@ 615

Last change on this file since 615 was 561, checked in by Dmitry A. Kuminov, 15 years ago

trunk: Merged in qt 4.6.1 sources.

  • Property svn:eol-style set to native
File size: 8.4 KB
Line 
1/****************************************************************************
2**
3** Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies).
4** All rights reserved.
5** Contact: Nokia Corporation ([email protected])
6**
7** This file is part of the QtXmlPatterns module of the Qt Toolkit.
8**
9** $QT_BEGIN_LICENSE:LGPL$
10** Commercial Usage
11** Licensees holding valid Qt Commercial licenses may use this file in
12** accordance with the Qt Commercial License Agreement provided with the
13** Software or, alternatively, in accordance with the terms contained in
14** a written agreement between you and Nokia.
15**
16** GNU Lesser General Public License Usage
17** Alternatively, this file may be used under the terms of the GNU Lesser
18** General Public License version 2.1 as published by the Free Software
19** Foundation and appearing in the file LICENSE.LGPL included in the
20** packaging of this file. Please review the following information to
21** ensure the GNU Lesser General Public License version 2.1 requirements
22** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
23**
24** In addition, as a special exception, Nokia gives you certain additional
25** rights. These rights are described in the Nokia Qt LGPL Exception
26** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
27**
28** GNU General Public License Usage
29** Alternatively, this file may be used under the terms of the GNU
30** General Public License version 3.0 as published by the Free Software
31** Foundation and appearing in the file LICENSE.GPL included in the
32** packaging of this file. Please review the following information to
33** ensure the GNU General Public License version 3.0 requirements will be
34** met: http://www.gnu.org/copyleft/gpl.html.
35**
36** If you have questions regarding the use of this file, please contact
37** Nokia at [email protected].
38** $QT_END_LICENSE$
39**
40****************************************************************************/
41
42#include "qxmlschema.h"
43#include "qxmlschema_p.h"
44
45#include <QtCore/QIODevice>
46#include <QtCore/QUrl>
47
48QT_BEGIN_NAMESPACE
49
50/*!
51 \class QXmlSchema
52
53 \brief The QXmlSchema class provides loading and validation of a W3C XML Schema.
54
55 \reentrant
56 \since 4.6
57 \ingroup xml-tools
58
59 The QXmlSchema class loads, compiles and validates W3C XML Schema files
60 that can be used further for validation of XML instance documents via
61 \l{QXmlSchemaValidator}.
62
63 The following example shows how to load a XML Schema file from the network
64 and test whether it is a valid schema document:
65
66 \snippet doc/src/snippets/qxmlschema/main.cpp 0
67
68 \section1 XML Schema Version
69
70 This class is used to represent schemas that conform to the \l{XML Schema} 1.0
71 specification.
72
73 \sa QXmlSchemaValidator, {xmlpatterns/schema}{XML Schema Validation Example}
74*/
75
76/*!
77 Constructs an invalid, empty schema that cannot be used until
78 load() is called.
79 */
80QXmlSchema::QXmlSchema()
81 : d(new QXmlSchemaPrivate(QXmlNamePool()))
82{
83}
84
85/*!
86 Constructs a QXmlSchema that is a copy of \a other. The new
87 instance will share resources with the existing schema
88 to the extent possible.
89 */
90QXmlSchema::QXmlSchema(const QXmlSchema &other)
91 : d(other.d)
92{
93}
94
95/*!
96 Destroys this QXmlSchema.
97 */
98QXmlSchema::~QXmlSchema()
99{
100}
101
102/*!
103 Sets this QXmlSchema to a schema loaded from the \a source
104 URI.
105
106 If the schema \l {isValid()} {is invalid}, \c{false} is returned
107 and the behavior is undefined.
108
109 Example:
110
111 \snippet doc/src/snippets/qxmlschema/main.cpp 0
112
113 \sa isValid()
114 */
115bool QXmlSchema::load(const QUrl &source)
116{
117 d->load(source, QString());
118 return d->isValid();
119}
120
121/*!
122 Sets this QXmlSchema to a schema read from the \a source
123 device. The device must have been opened with at least
124 QIODevice::ReadOnly.
125
126 \a documentUri represents the schema obtained from the \a source
127 device. It is the base URI of the schema, that is used
128 internally to resolve relative URIs that appear in the schema, and
129 for message reporting.
130
131 If \a source is \c null or not readable, or if \a documentUri is not
132 a valid URI, behavior is undefined.
133
134 If the schema \l {isValid()} {is invalid}, \c{false} is returned
135 and the behavior is undefined.
136
137 Example:
138
139 \snippet doc/src/snippets/qxmlschema/main.cpp 1
140
141 \sa isValid()
142 */
143bool QXmlSchema::load(QIODevice *source, const QUrl &documentUri)
144{
145 d->load(source, documentUri, QString());
146 return d->isValid();
147}
148
149/*!
150 Sets this QXmlSchema to a schema read from the \a data
151
152 \a documentUri represents the schema obtained from the \a data.
153 It is the base URI of the schema, that is used internally to
154 resolve relative URIs that appear in the schema, and
155 for message reporting.
156
157 If \a documentUri is not a valid URI, behavior is undefined.