SchemaGrammar.hpp
上传用户:zhuqijet
上传日期:2013-06-25
资源大小:10074k
文件大小:21k
源码类别:

词法分析

开发平台:

Visual C++

  1. /*
  2.  * The Apache Software License, Version 1.1
  3.  *
  4.  * Copyright (c) 2001 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) 2001, 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.  * $Log: SchemaGrammar.hpp,v $
  58.  * Revision 1.7  2003/05/16 21:43:21  knoaman
  59.  * Memory manager implementation: Modify constructors to pass in the memory manager.
  60.  *
  61.  * Revision 1.6  2003/05/15 18:57:27  knoaman
  62.  * Partial implementation of the configurable memory manager.
  63.  *
  64.  * Revision 1.5  2002/11/04 14:49:41  tng
  65.  * C++ Namespace Support.
  66.  *
  67.  * Revision 1.4  2002/08/22 15:42:10  tng
  68.  * Remove unused parameter variables in inline functions.
  69.  *
  70.  * Revision 1.3  2002/07/11 18:21:20  knoaman
  71.  * Grammar caching/preparsing - initial implementation.
  72.  *
  73.  * Revision 1.2  2002/07/05 17:08:10  tng
  74.  * [Bug 10119] Grammar::getGrammarType need a const modifier
  75.  *
  76.  * Revision 1.1.1.1  2002/02/01 22:22:46  peiyongz
  77.  * sane_include
  78.  *
  79.  * Revision 1.14  2001/11/19 18:26:31  knoaman
  80.  * no message
  81.  *
  82.  * Revision 1.13  2001/10/09 12:18:26  tng
  83.  * Leak fix: should use delete [] to delete fTargetNamespace.
  84.  *
  85.  * Revision 1.12  2001/10/04 15:11:51  knoaman
  86.  * Add support for circular import.
  87.  *
  88.  * Revision 1.10  2001/09/14 14:50:22  tng
  89.  * Schema: Fix some wildcard bugs, and some retrieving qualified/unqualified element decl problems.
  90.  *
  91.  * Revision 1.9  2001/08/21 16:06:11  tng
  92.  * Schema: Unique Particle Attribution Constraint Checking.
  93.  *
  94.  * Revision 1.8  2001/07/31 15:27:10  knoaman
  95.  * Added support for <attributeGroup>.
  96.  *
  97.  * Revision 1.7  2001/07/24 18:33:46  knoaman
  98.  * Added support for <group> + extra constraint checking for complexType
  99.  *
  100.  * Revision 1.6  2001/06/25 12:51:57  knoaman
  101.  * Add constraint checking on elements in complex types to prevent same
  102.  * element names from having different definitions - use substitueGroups.
  103.  *
  104.  * Revision 1.5  2001/05/28 20:56:19  tng
  105.  * Schema: Move getTargetNamespace as virtual function in base class Grammar
  106.  *
  107.  * Revision 1.4  2001/05/11 13:27:36  tng
  108.  * Copyright update.
  109.  *
  110.  * Revision 1.3  2001/05/03 20:34:43  tng
  111.  * Schema: SchemaValidator update
  112.  *
  113.  * Revision 1.2  2001/04/19 17:43:19  knoaman
  114.  * More schema implementation classes.
  115.  *
  116.  * Revision 1.1  2001/03/21 21:56:33  tng
  117.  * Schema: Add Schema Grammar, Schema Validator, and split the DTDValidator into DTDValidator, DTDScanner, and DTDGrammar.
  118.  *
  119.  */
  120. #if !defined(SCHEMAGRAMMAR_HPP)
  121. #define SCHEMAGRAMMAR_HPP
  122. #include <xercesc/framework/XMLNotationDecl.hpp>
  123. #include <xercesc/util/RefHash3KeysIdPool.hpp>
  124. #include <xercesc/util/NameIdPool.hpp>
  125. #include <xercesc/util/StringPool.hpp>
  126. #include <xercesc/validators/common/Grammar.hpp>
  127. #include <xercesc/validators/schema/SchemaElementDecl.hpp>
  128. #include <xercesc/util/ValueVectorOf.hpp>
  129. #include <xercesc/validators/datatype/IDDatatypeValidator.hpp>
  130. #include <xercesc/validators/datatype/DatatypeValidatorFactory.hpp>
  131. XERCES_CPP_NAMESPACE_BEGIN
  132. //
  133. // This class stores the Schema information
  134. //  NOTE: Schemas are not namespace aware, so we just use regular NameIdPool
  135. //  data structures to store element and attribute decls. They are all set
  136. //  to be in the global namespace and the full QName is used as the base name
  137. //  of the decl. This means that all the URI parameters below are expected
  138. //  to be null pointers (and anything else will cause an exception.)
  139. //
  140. // ---------------------------------------------------------------------------
  141. //  Forward Declarations
  142. // ---------------------------------------------------------------------------
  143. class ComplexTypeInfo;
  144. class NamespaceScope;
  145. class XercesGroupInfo;
  146. class XercesAttGroupInfo;
  147. // ---------------------------------------------------------------------------
  148. //  typedef declaration
  149. // ---------------------------------------------------------------------------
  150. typedef ValueVectorOf<SchemaElementDecl*> ElemVector;
  151. class VALIDATORS_EXPORT SchemaGrammar : public Grammar
  152. {
  153. public:
  154.     // -----------------------------------------------------------------------
  155.     //  Constructors and Destructor
  156.     // -----------------------------------------------------------------------
  157.     SchemaGrammar(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
  158.     virtual ~SchemaGrammar();
  159.     // -----------------------------------------------------------------------
  160.     //  Implementation of Virtual Interface
  161.     // -----------------------------------------------------------------------
  162.     virtual Grammar::GrammarType getGrammarType() const;
  163.     virtual const XMLCh* getTargetNamespace() const;
  164.     virtual XMLElementDecl* findOrAddElemDecl
  165.     (
  166.         const   unsigned int    uriId
  167.         , const XMLCh* const    baseName
  168.         , const XMLCh* const    prefixName
  169.         , const XMLCh* const    qName
  170.         , unsigned int          scope
  171.         ,       bool&           wasAdded
  172.     ) ;
  173.     virtual unsigned int getElemId
  174.     (
  175.         const   unsigned int    uriId
  176.         , const XMLCh* const    baseName
  177.         , const XMLCh* const    qName
  178.         , unsigned int          scope
  179.     )   const ;
  180.     virtual const XMLElementDecl* getElemDecl
  181.     (
  182.         const   unsigned int    uriId
  183.         , const XMLCh* const    baseName
  184.         , const XMLCh* const    qName
  185.         , unsigned int          scope
  186.     )   const ;
  187.     virtual XMLElementDecl* getElemDecl
  188.     (
  189.         const   unsigned int    uriId
  190.         , const XMLCh* const    baseName
  191.         , const XMLCh* const    qName
  192.         , unsigned int          scope
  193.     );
  194.     virtual const XMLElementDecl* getElemDecl
  195.     (
  196.         const   unsigned int    elemId
  197.     )   const;
  198.     virtual XMLElementDecl* getElemDecl
  199.     (
  200.         const   unsigned int    elemId
  201.     );
  202.     virtual const XMLNotationDecl* getNotationDecl
  203.     (
  204.         const   XMLCh* const    notName
  205.     )   const;
  206.     virtual XMLNotationDecl* getNotationDecl
  207.     (
  208.         const   XMLCh* const    notName
  209.     );
  210.     virtual bool getValidated() const;
  211.     virtual XMLElementDecl* putElemDecl
  212.     (
  213.         const   unsigned int    uriId
  214.         , const XMLCh* const    baseName
  215.         , const XMLCh* const    prefixName
  216.         , const XMLCh* const    qName
  217.         , unsigned int          scope
  218.         , const bool            notDeclared = false
  219.     );
  220.     virtual unsigned int putElemDecl
  221.     (
  222.         XMLElementDecl* const elemDecl
  223.         , const bool          notDeclared = false
  224.     )   const;
  225.     virtual unsigned int putNotationDecl
  226.     (
  227.         XMLNotationDecl* const notationDecl
  228.     )   const;
  229.     virtual void setValidated(const bool newState);
  230.     virtual void reset();
  231.     // -----------------------------------------------------------------------
  232.     //  Getter methods
  233.     // -----------------------------------------------------------------------
  234.     RefHash3KeysIdPoolEnumerator<SchemaElementDecl> getElemEnumerator() const;
  235.     RefHashTableOf<XMLAttDef>* getAttributeDeclRegistry() const;
  236.     RefHashTableOf<ComplexTypeInfo>* getComplexTypeRegistry() const;
  237.     RefHashTableOf<XercesGroupInfo>* getGroupInfoRegistry() const;
  238.     RefHashTableOf<XercesAttGroupInfo>* getAttGroupInfoRegistry() const;
  239.     DatatypeValidatorFactory* getDatatypeRegistry();
  240.     NamespaceScope* getNamespaceScope() const;
  241.     RefHash2KeysTableOf<ElemVector>* getValidSubstitutionGroups() const;
  242.     RefHashTableOf<XMLRefInfo>* getIDRefList() const;
  243.     // -----------------------------------------------------------------------
  244.     //  Setter methods
  245.     // -----------------------------------------------------------------------
  246.     void setTargetNamespace(const XMLCh* const targetNamespace);
  247.     void setAttributeDeclRegistry(RefHashTableOf<XMLAttDef>* const attReg);
  248.     void setComplexTypeRegistry(RefHashTableOf<ComplexTypeInfo>* const other);
  249.     void setGroupInfoRegistry(RefHashTableOf<XercesGroupInfo>* const other);
  250.     void setAttGroupInfoRegistry(RefHashTableOf<XercesAttGroupInfo>* const other);
  251.     void setNamespaceScope(NamespaceScope* const nsScope);
  252.     void setValidSubstitutionGroups(RefHash2KeysTableOf<ElemVector>* const);
  253.     // -----------------------------------------------------------------------
  254.     //  Helper methods
  255.     // -----------------------------------------------------------------------
  256.     unsigned int putGroupElemDecl
  257.     (
  258.         XMLElementDecl* const elemDecl
  259.     )   const;
  260. private:
  261.     // -----------------------------------------------------------------------
  262.     //  Helper methods
  263.     // -----------------------------------------------------------------------
  264.     void cleanUp();
  265.     // -----------------------------------------------------------------------
  266.     //  Private data members
  267.     //
  268.     //  fElemDeclPool
  269.     //      This is the element decl pool. It contains all of the elements
  270.     //      declared in the Schema (and their associated attributes.)
  271.     //
  272.     //  fElemNonDeclPool
  273.     //      This is the element decl pool that is is populated as new elements
  274.     //      are seen in the XML document (not declared in the Schema), and they
  275.     //      are given default characteristics.
  276.     //
  277.     //  fGroupElemDeclPool
  278.     //      This is the element decl pool for elements in a group that are
  279.     //      referenced in different scope. It contains all of the elements
  280.     //      declared in the Schema (and their associated attributes.)
  281.     //
  282.     //  fNotationDeclPool
  283.     //      This is a pool of NotationDecl objects, which contains all of the
  284.     //      notations declared in the Schema.
  285.     //
  286.     //  fTargetNamespace
  287.     //      Target name space for this grammar.
  288.     //
  289.     //  fAttributeDeclRegistry
  290.     //      Global attribute declarations
  291.     //
  292.     //  fComplexTypeRegistry
  293.     //      Stores complexType declaration info
  294.     //
  295.     //  fGroupInfoRegistry
  296.     //      Stores global <group> declaration info
  297.     //
  298.     //  fAttGroupInfoRegistry
  299.     //      Stores global <attributeGroup> declaration info
  300.     //
  301.     //  fDatatypeRegistry
  302.     //      Datatype validator factory
  303.     //
  304.     //  fNamespaceScope
  305.     //      Prefix to Namespace map
  306.     //
  307.     //  fValidSubstitutionGroups
  308.     //      Valid list of elements that can substitute a given element
  309.     //
  310.     //  fIDRefList
  311.     //      List of ids of schema declarations extracted during schema grammar
  312.     //      traversal
  313.     //
  314.     //  fValidated
  315.     //      Indicates if the content of the Grammar has been pre-validated
  316.     //      or not (UPA checking, etc.). When using a cached grammar, no need
  317.     //      for pre content validation.
  318.     // -----------------------------------------------------------------------
  319.     XMLCh*                                 fTargetNamespace;
  320.     RefHash3KeysIdPool<SchemaElementDecl>* fElemDeclPool;
  321.     RefHash3KeysIdPool<SchemaElementDecl>* fElemNonDeclPool;
  322.     RefHash3KeysIdPool<SchemaElementDecl>* fGroupElemDeclPool;
  323.     NameIdPool<XMLNotationDecl>*           fNotationDeclPool;
  324.     RefHashTableOf<XMLAttDef>*             fAttributeDeclRegistry;
  325.     RefHashTableOf<ComplexTypeInfo>*       fComplexTypeRegistry;
  326.     RefHashTableOf<XercesGroupInfo>*       fGroupInfoRegistry;
  327.     RefHashTableOf<XercesAttGroupInfo>*    fAttGroupInfoRegistry;
  328.     NamespaceScope*                        fNamespaceScope;
  329.     RefHash2KeysTableOf<ElemVector>*       fValidSubstitutionGroups;
  330.     RefHashTableOf<XMLRefInfo>*            fIDRefList;
  331.     MemoryManager*                         fMemoryManager;
  332.     bool                                   fValidated;
  333.     DatatypeValidatorFactory               fDatatypeRegistry;
  334. };
  335. // ---------------------------------------------------------------------------
  336. //  SchemaGrammar: Getter methods
  337. // ---------------------------------------------------------------------------
  338. inline RefHash3KeysIdPoolEnumerator<SchemaElementDecl>
  339. SchemaGrammar::getElemEnumerator() const
  340. {
  341.     return RefHash3KeysIdPoolEnumerator<SchemaElementDecl>(fElemDeclPool);
  342. }
  343. inline RefHashTableOf<XMLAttDef>* SchemaGrammar::getAttributeDeclRegistry() const {
  344.     return fAttributeDeclRegistry;
  345. }
  346. inline RefHashTableOf<ComplexTypeInfo>*
  347. SchemaGrammar::getComplexTypeRegistry() const {
  348.     return fComplexTypeRegistry;
  349. }
  350. inline RefHashTableOf<XercesGroupInfo>*
  351. SchemaGrammar::getGroupInfoRegistry() const {
  352.     return fGroupInfoRegistry;
  353. }
  354. inline RefHashTableOf<XercesAttGroupInfo>*
  355. SchemaGrammar::getAttGroupInfoRegistry() const {
  356.     return fAttGroupInfoRegistry;
  357. }
  358. inline DatatypeValidatorFactory* SchemaGrammar::getDatatypeRegistry() {
  359.     return &fDatatypeRegistry;
  360. }
  361. inline NamespaceScope* SchemaGrammar::getNamespaceScope() const {
  362.     return fNamespaceScope;
  363. }
  364. inline RefHash2KeysTableOf<ElemVector>*
  365. SchemaGrammar::getValidSubstitutionGroups() const {
  366.     return fValidSubstitutionGroups;
  367. }
  368. inline RefHashTableOf<XMLRefInfo>* SchemaGrammar::getIDRefList() const {
  369.     return fIDRefList;
  370. }
  371. // -----------------------------------------------------------------------
  372. //  Setter methods
  373. // -----------------------------------------------------------------------
  374. inline void SchemaGrammar::setTargetNamespace(const XMLCh* const targetNamespace)
  375. {
  376.     if (fTargetNamespace)
  377.         fMemoryManager->deallocate(fTargetNamespace);//delete [] fTargetNamespace;
  378.     fTargetNamespace = XMLString::replicate(targetNamespace, fMemoryManager);
  379. }
  380. inline void
  381. SchemaGrammar::setAttributeDeclRegistry(RefHashTableOf<XMLAttDef>* const attReg) {
  382.     fAttributeDeclRegistry = attReg;
  383. }
  384. inline void
  385. SchemaGrammar::setComplexTypeRegistry(RefHashTableOf<ComplexTypeInfo>* const other) {
  386.     fComplexTypeRegistry = other;
  387. }
  388. inline void
  389. SchemaGrammar::setGroupInfoRegistry(RefHashTableOf<XercesGroupInfo>* const other) {
  390.     fGroupInfoRegistry = other;
  391. }
  392. inline void
  393. SchemaGrammar::setAttGroupInfoRegistry(RefHashTableOf<XercesAttGroupInfo>* const other) {
  394.     fAttGroupInfoRegistry = other;
  395. }
  396. inline void SchemaGrammar::setNamespaceScope(NamespaceScope* const nsScope) {
  397.     fNamespaceScope = nsScope;
  398. }
  399. inline void
  400. SchemaGrammar::setValidSubstitutionGroups(RefHash2KeysTableOf<ElemVector>* const other) {
  401.     fValidSubstitutionGroups = other;
  402. }
  403. // ---------------------------------------------------------------------------
  404. //  SchemaGrammar: Virtual methods
  405. // ---------------------------------------------------------------------------
  406. inline Grammar::GrammarType SchemaGrammar::getGrammarType() const {
  407.     return Grammar::SchemaGrammarType;
  408. }
  409. inline const XMLCh* SchemaGrammar::getTargetNamespace() const {
  410.     return fTargetNamespace;
  411. }
  412. // Element Decl
  413. inline unsigned int SchemaGrammar::getElemId (const   unsigned int  uriId
  414.                                               , const XMLCh* const    baseName
  415.                                               , const XMLCh* const
  416.                                               , unsigned int          scope ) const
  417. {
  418.     //
  419.     //  In this case, we don't return zero to mean 'not found', so we have to
  420.     //  map it to the official not found value if we don't find it.
  421.     //
  422.     const SchemaElementDecl* decl = fElemDeclPool->getByKey(baseName, uriId, scope);
  423.     if (!decl) {
  424.         decl = fGroupElemDeclPool->getByKey(baseName, uriId, scope);
  425.         if (!decl)
  426.             return XMLElementDecl::fgInvalidElemId;
  427.     }
  428.     return decl->getId();
  429. }
  430. inline const XMLElementDecl* SchemaGrammar::getElemDecl( const   unsigned int  uriId
  431.                                               , const XMLCh* const    baseName
  432.                                               , const XMLCh* const
  433.                                               , unsigned int          scope )   const
  434. {
  435.     const SchemaElementDecl* decl = fElemDeclPool->getByKey(baseName, uriId, scope);
  436.     if (!decl) {
  437.         decl = fGroupElemDeclPool->getByKey(baseName, uriId, scope);
  438.         if (!decl)
  439.             decl = fElemNonDeclPool->getByKey(baseName, uriId, scope);
  440.     }
  441.     return decl;
  442. }
  443. inline XMLElementDecl* SchemaGrammar::getElemDecl (const   unsigned int  uriId
  444.                                               , const XMLCh* const    baseName
  445.                                               , const XMLCh* const
  446.                                               , unsigned int          scope )
  447. {
  448.     SchemaElementDecl* decl = fElemDeclPool->getByKey(baseName, uriId, scope);
  449.     if (!decl) {
  450.         decl = fGroupElemDeclPool->getByKey(baseName, uriId, scope);
  451.         if (!decl)
  452.             decl = fElemNonDeclPool->getByKey(baseName, uriId, scope);
  453.     }
  454.     return decl;
  455. }
  456. inline const XMLElementDecl* SchemaGrammar::getElemDecl(const unsigned int elemId) const
  457. {
  458.     // Look up this element decl by id
  459.     const SchemaElementDecl* decl = fElemDeclPool->getById(elemId);
  460.     if (!decl)
  461.         decl = fGroupElemDeclPool->getById(elemId);
  462.     return decl;
  463. }
  464. inline XMLElementDecl* SchemaGrammar::getElemDecl(const unsigned int elemId)
  465. {
  466.     // Look up this element decl by id
  467.     SchemaElementDecl* decl = fElemDeclPool->getById(elemId);
  468.     if (!decl)
  469.         decl = fGroupElemDeclPool->getById(elemId);
  470.     return decl;
  471. }
  472. inline unsigned int
  473. SchemaGrammar::putElemDecl(XMLElementDecl* const elemDecl,
  474.                            const bool notDeclared) const
  475. {
  476.     if (notDeclared)
  477.         return fElemNonDeclPool->put(elemDecl->getBaseName(), elemDecl->getURI(), ((SchemaElementDecl* )elemDecl)->getEnclosingScope(), (SchemaElementDecl*) elemDecl);
  478.     return fElemDeclPool->put(elemDecl->getBaseName(), elemDecl->getURI(), ((SchemaElementDecl* )elemDecl)->getEnclosingScope(), (SchemaElementDecl*) elemDecl);
  479. }
  480. inline unsigned int SchemaGrammar::putGroupElemDecl (XMLElementDecl* const elemDecl)   const
  481. {
  482.     return fGroupElemDeclPool->put(elemDecl->getBaseName(), elemDecl->getURI(), ((SchemaElementDecl* )elemDecl)->getEnclosingScope(), (SchemaElementDecl*) elemDecl);
  483. }
  484. // Notation Decl
  485. inline const XMLNotationDecl* SchemaGrammar::getNotationDecl(const XMLCh* const notName) const
  486. {
  487.     return fNotationDeclPool->getByKey(notName);
  488. }
  489. inline XMLNotationDecl* SchemaGrammar::getNotationDecl(const XMLCh* const notName)
  490. {
  491.     return fNotationDeclPool->getByKey(notName);
  492. }
  493. inline unsigned int SchemaGrammar::putNotationDecl(XMLNotationDecl* const notationDecl)   const
  494. {
  495.     return fNotationDeclPool->put(notationDecl);
  496. }
  497. inline bool SchemaGrammar::getValidated() const
  498. {
  499.     return fValidated;
  500. }
  501. inline void SchemaGrammar::setValidated(const bool newState)
  502. {
  503.     fValidated = newState;
  504. }
  505. XERCES_CPP_NAMESPACE_END
  506. #endif