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

词法分析

开发平台:

Visual C++

  1. #ifndef DOMImplementation_HEADER_GUARD_
  2. #define DOMImplementation_HEADER_GUARD_
  3. /*
  4.  * The Apache Software License, Version 1.1
  5.  *
  6.  * Copyright (c) 2001-2002 The Apache Software Foundation.  All rights
  7.  * reserved.
  8.  *
  9.  * Redistribution and use in source and binary forms, with or without
  10.  * modification, are permitted provided that the following conditions
  11.  * are met:
  12.  *
  13.  * 1. Redistributions of source code must retain the above copyright
  14.  *    notice, this list of conditions and the following disclaimer.
  15.  *
  16.  * 2. Redistributions in binary form must reproduce the above copyright
  17.  *    notice, this list of conditions and the following disclaimer in
  18.  *    the documentation and/or other materials provided with the
  19.  *    distribution.
  20.  *
  21.  * 3. The end-user documentation included with the redistribution,
  22.  *    if any, must include the following acknowledgment:
  23.  *       "This product includes software developed by the
  24.  *        Apache Software Foundation (http://www.apache.org/)."
  25.  *    Alternately, this acknowledgment may appear in the software itself,
  26.  *    if and wherever such third-party acknowledgments normally appear.
  27.  *
  28.  * 4. The names "Xerces" and "Apache Software Foundation" must
  29.  *    not be used to endorse or promote products derived from this
  30.  *    software without prior written permission. For written
  31.  *    permission, please contact apache@apache.org.
  32.  *
  33.  * 5. Products derived from this software may not be called "Apache",
  34.  *    nor may "Apache" appear in their name, without prior written
  35.  *    permission of the Apache Software Foundation.
  36.  *
  37.  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  38.  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  39.  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  40.  * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
  41.  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  42.  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  43.  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  44.  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  45.  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  46.  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  47.  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  48.  * SUCH DAMAGE.
  49.  * ====================================================================
  50.  *
  51.  * This software consists of voluntary contributions made by many
  52.  * individuals on behalf of the Apache Software Foundation, and was
  53.  * originally based on software copyright (c) 2001, International
  54.  * Business Machines, Inc., http://www.ibm.com .  For more information
  55.  * on the Apache Software Foundation, please see
  56.  * <http://www.apache.org/>.
  57.  */
  58. /*
  59.  * $Id: DOMImplementation.hpp,v 1.12 2003/05/15 18:25:53 knoaman Exp $
  60.  */
  61. #include <xercesc/dom/DOMImplementationLS.hpp>
  62. #include <xercesc/dom/DOMException.hpp>
  63. #include <xercesc/dom/DOMRangeException.hpp>
  64. #include <xercesc/util/PlatformUtils.hpp>
  65. XERCES_CPP_NAMESPACE_BEGIN
  66. class DOMDocument;
  67. class DOMDocumentType;
  68. /**
  69.  * The <code>DOMImplementation</code> interface provides a number of methods
  70.  * for performing operations that are independent of any particular instance
  71.  * of the document object model.
  72.  */
  73. class CDOM_EXPORT DOMImplementation : public DOMImplementationLS
  74. {
  75. protected:
  76.     // -----------------------------------------------------------------------
  77.     //  Hidden constructors
  78.     // -----------------------------------------------------------------------
  79.     /** @name Hidden constructors */
  80.     //@{    
  81.         DOMImplementation() {};                                      // no plain constructor
  82.     //@}
  83. private:
  84.     // -----------------------------------------------------------------------
  85.     // Unimplemented constructors and operators
  86.     // -----------------------------------------------------------------------
  87.     /** @name Unimplemented constructors and operators */
  88.     //@{
  89.         DOMImplementation(const DOMImplementation &);   // no copy construtor.
  90.         DOMImplementation & operator = (const DOMImplementation &);  // No Assignment
  91.     //@}
  92. public:
  93.     // -----------------------------------------------------------------------
  94.     //  All constructors are hidden, just the destructor is available
  95.     // -----------------------------------------------------------------------
  96.     /** @name Destructor */
  97.     //@{
  98.     /**
  99.      * Destructor
  100.      *
  101.      */
  102.     virtual ~DOMImplementation() {};
  103.     //@}
  104.     // -----------------------------------------------------------------------
  105.     // Virtual DOMImplementation interface
  106.     // -----------------------------------------------------------------------
  107.     /** @name Functions introduced in DOM Level 1 */
  108.     //@{
  109.     /**
  110.      * Test if the DOM implementation implements a specific feature.
  111.      * @param feature The name of the feature to test (case-insensitive). The
  112.      *   values used by DOM features are defined throughout the DOM Level 2
  113.      *   specifications and listed in the  section. The name must be an XML
  114.      *   name. To avoid possible conflicts, as a convention, names referring
  115.      *   to features defined outside the DOM specification should be made
  116.      *   unique.
  117.      * @param version This is the version number of the feature to test. In
  118.      *   Level 2, the string can be either "2.0" or "1.0". If the version is
  119.      *   not specified, supporting any version of the feature causes the
  120.      *   method to return <code>true</code>.
  121.      * @return <code>true</code> if the feature is implemented in the
  122.      *   specified version, <code>false</code> otherwise.
  123.      * @since DOM Level 1
  124.      */
  125.     virtual bool  hasFeature(const XMLCh *feature,  const XMLCh *version) const = 0;
  126.     //@}
  127.     // -----------------------------------------------------------------------
  128.     // Functions introduced in DOM Level 2
  129.     // -----------------------------------------------------------------------
  130.     /** @name Functions introduced in DOM Level 2 */
  131.     //@{
  132.     /**
  133.      * Creates an empty <code>DOMDocumentType</code> node. Entity declarations
  134.      * and notations are not made available. Entity reference expansions and
  135.      * default attribute additions do not occur. It is expected that a
  136.      * future version of the DOM will provide a way for populating a
  137.      * <code>DOMDocumentType</code>.
  138.      * @param qualifiedName The qualified name of the document type to be
  139.      *   created.
  140.      * @param publicId The external subset public identifier.
  141.      * @param systemId The external subset system identifier.
  142.      * @return A new <code>DOMDocumentType</code> node with
  143.      *   <code>ownerDocument</code> set to <code>null</code>.
  144.      * @exception DOMException
  145.      *   INVALID_CHARACTER_ERR: Raised if the specified qualified name
  146.      *   contains an illegal character.
  147.      *   <br>NAMESPACE_ERR: Raised if the <code>qualifiedName</code> is
  148.      *   malformed.
  149.      *   <br>NOT_SUPPORTED_ERR: May be raised by DOM implementations which do
  150.      *   not support the <code>"XML"</code> feature, if they choose not to
  151.      *   support this method. Other features introduced in the future, by
  152.      *   the DOM WG or in extensions defined by other groups, may also
  153.      *   demand support for this method; please consult the definition of
  154.      *   the feature to see if it requires this method.
  155.      * @since DOM Level 2
  156.      */
  157.     virtual  DOMDocumentType *createDocumentType(const XMLCh *qualifiedName,
  158.                                                  const XMLCh *publicId,
  159.                                                  const XMLCh *systemId) = 0;
  160.     /**
  161.      * Creates a DOMDocument object of the specified type with its document
  162.      * element.
  163.      * @param namespaceURI The namespace URI of the document element to
  164.      *   create.
  165.      * @param qualifiedName The qualified name of the document element to be
  166.      *   created.
  167.      * @param doctype The type of document to be created or <code>null</code>.
  168.      *   When <code>doctype</code> is not <code>null</code>, its
  169.      *   <code>ownerDocument</code> attribute is set to the document
  170.      *   being created.
  171.      * @return A new <code>DOMDocument</code> object.
  172.      * @exception DOMException
  173.      *   INVALID_CHARACTER_ERR: Raised if the specified qualified name
  174.      *   contains an illegal character.
  175.      *   <br>NAMESPACE_ERR: Raised if the <code>qualifiedName</code> is
  176.      *   malformed, if the <code>qualifiedName</code> has a prefix and the
  177.      *   <code>namespaceURI</code> is <code>null</code>, or if the
  178.      *   <code>qualifiedName</code> has a prefix that is "xml" and the
  179.      *   <code>namespaceURI</code> is different from "
  180.      *   http://www.w3.org/XML/1998/namespace" , or if the DOM
  181.      *   implementation does not support the <code>"XML"</code> feature but
  182.      *   a non-null namespace URI was provided, since namespaces were
  183.      *   defined by XML.
  184.      *   <br>WRONG_DOCUMENT_ERR: Raised if <code>doctype</code> has already
  185.      *   been used with a different document or was created from a different
  186.      *   implementation.
  187.      *   <br>NOT_SUPPORTED_ERR: May be raised by DOM implementations which do
  188.      *   not support the "XML" feature, if they choose not to support this
  189.      *   method. Other features introduced in the future, by the DOM WG or
  190.      *   in extensions defined by other groups, may also demand support for
  191.      *   this method; please consult the definition of the feature to see if
  192.      *   it requires this method.
  193.      * @since DOM Level 2
  194.      */
  195.     virtual DOMDocument *createDocument(const XMLCh *namespaceURI,
  196.                                         const XMLCh *qualifiedName,
  197.                                         DOMDocumentType *doctype,
  198.                                         MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) = 0;
  199.     //@}
  200.     // -----------------------------------------------------------------------
  201.     // Functions introduced in DOM Level 3
  202.     // -----------------------------------------------------------------------
  203.     /** @name Functions introduced in DOM Level 3 */
  204.     //@{
  205.     /**
  206.      * This method makes available a <code>DOMImplementation</code>'s
  207.      * specialized interface (see ).
  208.      *
  209.      * <p><b>"Experimental - subject to change"</b></p>
  210.      *
  211.      * @param feature The name of the feature requested (case-insensitive).
  212.      * @return Returns an alternate <code>DOMImplementation</code> which
  213.      *   implements the specialized APIs of the specified feature, if any,
  214.      *   or <code>null</code> if there is no alternate
  215.      *   <code>DOMImplementation</code> object which implements interfaces
  216.      *   associated with that feature. Any alternate
  217.      *   <code>DOMImplementation</code> returned by this method must
  218.      *   delegate to the primary core <code>DOMImplementation</code> and not
  219.      *   return results inconsistent with the primary
  220.      *   <code>DOMImplementation</code>
  221.      * @since DOM Level 3
  222.      */
  223.     virtual DOMImplementation* getInterface(const XMLCh* feature) = 0;
  224.     //@}
  225.     // -----------------------------------------------------------------------
  226.     // Non-standard extension
  227.     // -----------------------------------------------------------------------
  228.     /** @name Non-standard extension */
  229.     //@{
  230.     /**
  231.      * Non-standard extension
  232.      *
  233.      * Create a completely empty document that has neither a root element or a doctype node.
  234.      */
  235.     virtual DOMDocument *createDocument(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) = 0;
  236.     /**
  237.      * Non-standard extension
  238.      *
  239.      *  Factory method for getting a DOMImplementation object.
  240.      *     The DOM implementation retains ownership of the returned object.
  241.      *     Application code should NOT delete it.
  242.      */
  243.     static DOMImplementation *getImplementation();
  244.     /**
  245.      * Non-standard extension
  246.      *
  247.      *  Load the default error text message for DOMException.
  248.       * @param msgToLoad The DOM ExceptionCode id to be processed
  249.       * @param toFill    The buffer that will hold the output on return. The
  250.       *         size of this buffer should at least be 'maxChars + 1'.
  251.       * @param maxChars  The maximum number of output characters that can be
  252.       *         accepted. If the result will not fit, it is an error.
  253.       * @return <code>true</code> if the message is successfully loaded
  254.      */
  255.     static bool loadDOMExceptionMsg
  256.     (
  257.         const   DOMException::ExceptionCode  msgToLoad
  258.         ,       XMLCh* const                 toFill
  259.         , const unsigned int                 maxChars
  260.     );
  261.     /**
  262.      * Non-standard extension
  263.      *
  264.      *  Load the default error text message for DOMRangeException.
  265.       * @param msgToLoad The DOM RangeExceptionCode id to be processed
  266.       * @param toFill    The buffer that will hold the output on return. The
  267.       *         size of this buffer should at least be 'maxChars + 1'.
  268.       * @param maxChars  The maximum number of output characters that can be
  269.       *         accepted. If the result will not fit, it is an error.
  270.       * @return <code>true</code> if the message is successfully loaded
  271.      */
  272.     static bool loadDOMExceptionMsg
  273.     (
  274.         const   DOMRangeException::RangeExceptionCode  msgToLoad
  275.         ,       XMLCh* const                           toFill
  276.         , const unsigned int                           maxChars
  277.     );
  278.     //@}
  279. };
  280. XERCES_CPP_NAMESPACE_END
  281. #endif