source: NonGTP/Xerces/xercesc/framework/psvi/XSWildcard.hpp @ 188

Revision 188, 8.4 KB checked in by mattausch, 19 years ago (diff)

added xercesc to support

Line 
1/*
2 * The Apache Software License, Version 1.1
3 *
4 * Copyright (c) 2003 The Apache Software Foundation.  All rights
5 * reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 *
11 * 1. Redistributions of source code must retain the above copyright
12 *    notice, this list of conditions and the following disclaimer.
13 *
14 * 2. Redistributions in binary form must reproduce the above copyright
15 *    notice, this list of conditions and the following disclaimer in
16 *    the documentation and/or other materials provided with the
17 *    distribution.
18 *
19 * 3. The end-user documentation included with the redistribution,
20 *    if any, must include the following acknowledgment:
21 *       "This product includes software developed by the
22 *        Apache Software Foundation (http://www.apache.org/)."
23 *    Alternately, this acknowledgment may appear in the software itself,
24 *    if and wherever such third-party acknowledgments normally appear.
25 *
26 * 4. The names "Xerces" and "Apache Software Foundation" must
27 *    not be used to endorse or promote products derived from this
28 *    software without prior written permission. For written
29 *    permission, please contact apache\@apache.org.
30 *
31 * 5. Products derived from this software may not be called "Apache",
32 *    nor may "Apache" appear in their name, without prior written
33 *    permission of the Apache Software Foundation.
34 *
35 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
36 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
37 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
38 * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
39 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
40 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
41 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
42 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
43 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
44 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
45 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
46 * SUCH DAMAGE.
47 * ====================================================================
48 *
49 * This software consists of voluntary contributions made by many
50 * individuals on behalf of the Apache Software Foundation, and was
51 * originally based on software copyright (c) 1999, International
52 * Business Machines, Inc., http://www.ibm.com .  For more information
53 * on the Apache Software Foundation, please see
54 * <http://www.apache.org/>.
55 */
56
57/*
58 * $Log: XSWildcard.hpp,v $
59 * Revision 1.6  2003/12/01 23:23:26  neilg
60 * fix for bug 25118; thanks to Jeroen Witmond
61 *
62 * Revision 1.5  2003/11/21 17:34:04  knoaman
63 * PSVI update
64 *
65 * Revision 1.4  2003/11/14 22:47:53  neilg
66 * fix bogus log message from previous commit...
67 *
68 * Revision 1.3  2003/11/14 22:33:30  neilg
69 * Second phase of schema component model implementation. 
70 * Implement XSModel, XSNamespaceItem, and the plumbing necessary
71 * to connect them to the other components.
72 * Thanks to David Cargill.
73 *
74 * Revision 1.2  2003/11/06 15:30:04  neilg
75 * first part of PSVI/schema component model implementation, thanks to David Cargill.  This covers setting the PSVIHandler on parser objects, as well as implementing XSNotation, XSSimpleTypeDefinition, XSIDCDefinition, and most of XSWildcard, XSComplexTypeDefinition, XSElementDeclaration, XSAttributeDeclaration and XSAttributeUse.
76 *
77 * Revision 1.1  2003/09/16 14:33:36  neilg
78 * PSVI/schema component model classes, with Makefile/configuration changes necessary to build them
79 *
80 */
81
82#if !defined(XSWILDCARD_HPP)
83#define XSWILDCARD_HPP
84
85#include <xercesc/framework/psvi/XSObject.hpp>
86
87XERCES_CPP_NAMESPACE_BEGIN
88
89/**
90 * This class describes all properties of a Schema Wildcard
91 * component.
92 * This is *always* owned by the validator /parser object from which
93 * it is obtained. 
94 */
95
96// forward declarations
97class XSAnnotation;
98class SchemaAttDef;
99class ContentSpecNode;
100
101class XMLPARSER_EXPORT XSWildcard : public XSObject
102{
103public:
104
105    // Namespace Constraint
106    enum NAMESPACE_CONSTRAINT {
107            /**
108             * Namespace Constraint: any namespace is allowed.
109             */
110            NSCONSTRAINT_ANY          = 1,
111            /**
112             * Namespace Constraint: namespaces in the list are not allowed.
113             */
114            NSCONSTRAINT_NOT          = 2,
115            /**
116             * Namespace Constraint: namespaces in the list are allowed.
117             */
118            NSCONSTRAINT_DERIVATION_LIST         = 3
119    };
120
121    // Process contents
122    enum PROCESS_CONTENTS {
123            /**
124             * There must be a top-level declaration for the item available, or the
125             * item must have an xsi:type, and the item must be valid as appropriate.
126             */
127            PC_STRICT                 = 1,
128            /**
129             * No constraints at all: the item must simply be well-formed XML.
130             */
131            PC_SKIP                   = 2,
132            /**
133             * If the item, or any items among its [children] is an element
134             * information item, has a uniquely determined declaration available, it
135             * must be valid with respect to that definition, that is, validate
136             * where you can, don't worry when you can't.
137             */
138            PC_LAX                    = 3
139    };
140
141    //  Constructors and Destructor
142    // -----------------------------------------------------------------------
143    /** @name Constructors */
144    //@{
145
146    /**
147      * The default constructor
148      *
149      * @param  attWildCard
150      * @param  annot
151      * @param  xsModel
152      * @param  manager     The configurable memory manager
153      */
154    XSWildcard
155    (
156        SchemaAttDef* const attWildCard
157        , XSAnnotation* const annot
158        , XSModel* const xsModel
159        , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
160    );
161   
162    XSWildcard
163    (
164        const ContentSpecNode* const elmWildCard
165        , XSAnnotation* const annot
166        , XSModel* const xsModel
167        , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
168    );
169
170    //@}
171
172    /** @name Destructor */
173    //@{
174    ~XSWildcard();
175    //@}
176
177    //---------------------
178    /** @name XSWildcard methods */
179
180    //@{
181
182    /**
183     * Namespace constraint: A constraint type: any, not, list.
184     */
185    NAMESPACE_CONSTRAINT getConstraintType() const;
186
187    /**
188     * Namespace constraint. For <code>constraintType</code>
189     * <code>NSCONSTRAINT_DERIVATION_LIST</code>, the list contains allowed namespaces.
190     * For <code>constraintType</code> <code>NSCONSTRAINT_NOT</code>, the
191     * list contains disallowed namespaces.
192     */
193    StringList *getNsConstraintList();
194
195    /**
196     * [process contents]: one of skip, lax or strict. Valid constants values
197     * are: <code>PC_SKIP, PC_LAX, PC_STRICT</code>.
198     */
199    PROCESS_CONTENTS getProcessContents() const;
200
201    /**
202     * Optional. An [annotation].
203     */
204    XSAnnotation *getAnnotation() const;
205
206    //@}
207
208    //----------------------------------
209    /** methods needed by implementation */
210
211    //@{
212
213    //@}
214private:
215
216    // -----------------------------------------------------------------------
217    //  Unimplemented constructors and operators
218    // -----------------------------------------------------------------------
219    XSWildcard(const XSWildcard&);
220    XSWildcard & operator=(const XSWildcard &);
221
222   /**
223     * Build namespace list
224     */
225   void buildNamespaceList(const ContentSpecNode* const rootNode);
226
227protected:
228
229    // -----------------------------------------------------------------------
230    //  data members
231    // -----------------------------------------------------------------------
232    NAMESPACE_CONSTRAINT fConstraintType;
233    PROCESS_CONTENTS     fProcessContents;
234    StringList*          fNsConstraintList;
235    XSAnnotation*        fAnnotation;
236};
237
238inline XSAnnotation *XSWildcard::getAnnotation() const
239{
240    return fAnnotation;
241}
242
243inline XSWildcard::PROCESS_CONTENTS XSWildcard::getProcessContents() const
244{
245    return fProcessContents;
246}
247
248inline StringList* XSWildcard::getNsConstraintList()
249{
250    return fNsConstraintList;
251}
252
253inline XSWildcard::NAMESPACE_CONSTRAINT XSWildcard::getConstraintType() const
254{
255    return fConstraintType;
256}
257
258
259XERCES_CPP_NAMESPACE_END
260
261#endif
Note: See TracBrowser for help on using the repository browser.