DOM_DOMImplementation.hpp
上传用户:huihehuasu
上传日期:2007-01-10
资源大小:6948k
文件大小:9k
源码类别:

xml/soap/webservice

开发平台:

C/C++

  1. /*
  2.  * The Apache Software License, Version 1.1
  3.  * 
  4.  * Copyright (c) 1999-2000 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.  * $Log: DOM_DOMImplementation.hpp,v $
  58.  * Revision 1.8  2001/10/25 21:47:14  peiyongz
  59.  * Replace XMLDeleterFor with XMLRegisterCleanup
  60.  *
  61.  * Revision 1.7  2000/03/02 19:53:54  roddey
  62.  * This checkin includes many changes done while waiting for the
  63.  * 1.1.0 code to be finished. I can't list them all here, but a list is
  64.  * available elsewhere.
  65.  *
  66.  * Revision 1.6  2000/02/24 20:11:27  abagchi
  67.  * Swat for removing Log from API docs
  68.  *
  69.  * Revision 1.5  2000/02/17 17:47:24  andyh
  70.  * Update Doc++ API comments
  71.  * NameSpace update to track W3C
  72.  * Changes were made by Chih Hsiang Chou
  73.  *
  74.  * Revision 1.4  2000/02/10 23:35:11  andyh
  75.  * Update DOM_DOMImplementation::CreateDocumentType and
  76.  * DOM_DocumentType to match latest from W3C
  77.  *
  78.  * Revision 1.3  2000/02/06 07:47:28  rahulj
  79.  * Year 2K copyright swat.
  80.  *
  81.  * Revision 1.2  2000/01/05 01:16:07  andyh
  82.  * DOM Level 2 core, namespace support added.
  83.  *
  84.  * Revision 1.1.1.1  1999/11/09 01:08:57  twl
  85.  * Initial checkin
  86.  *
  87.  * Revision 1.3  1999/11/08 20:44:15  rahul
  88.  * Swat for adding in Product name and CVS comment log variable.
  89.  *
  90.  */
  91. #ifndef DOMImplementation_HEADER_GUARD_
  92. #define DOMImplementation_HEADER_GUARD_
  93. #include <util/XercesDefs.hpp>
  94. #include <dom/DOMString.hpp>
  95. class DOM_Document;
  96. class DOM_DocumentType;
  97. /**
  98.  *   This class provides a way to query the capabilities of an implementation
  99.  *   of the DOM
  100.  */
  101. class CDOM_EXPORT DOM_DOMImplementation {
  102.  private:
  103.     DOM_DOMImplementation(const DOM_DOMImplementation &other);
  104.  public:
  105. /** @name Constructors and assignment operators */
  106. //@{  
  107.  /**
  108.    * Construct a DOM_Implementation reference variable, which should
  109.    * be assigned to the return value from 
  110.    * <code>DOM_Implementation::getImplementation()</code>.
  111.    */
  112.     DOM_DOMImplementation();
  113.  /**
  114.    * Assignment operator
  115.    *
  116.    */
  117.     DOM_DOMImplementation & operator = (const DOM_DOMImplementation &other);
  118. //@}
  119.   /** @name Destructor */
  120.   //@{  
  121.   /**
  122.     * Destructor.  The object being destroyed is a reference to the DOMImplemenentation,
  123.     * not the underlying DOMImplementation object itself, which is owned by
  124.     * the implementation code.
  125.     *
  126.     */
  127.     ~DOM_DOMImplementation();
  128. //@}
  129.   /** @name Getter functions */
  130.   //@{
  131.  /**
  132.    * Test if the DOM implementation implements a specific feature.
  133.    *
  134.    * @param feature The string of the feature to test (case-insensitive). The legal 
  135.    *        values are defined throughout this specification. The string must be 
  136.    *        an <EM>XML name</EM> (see also Compliance).
  137.    * @param version This is the version number of the package name to test.  
  138.    *   In Level 1, this is the string "1.0". If the version is not specified, 
  139.    *   supporting any version of the  feature will cause the method to return 
  140.    *   <code>true</code>. 
  141.    * @return <code>true</code> if the feature is implemented in the specified 
  142.    *   version, <code>false</code> otherwise.
  143.    */
  144.  bool  hasFeature(const DOMString &feature,  const DOMString &version);
  145.   /** Return a reference to a DOM_Implementation object for this 
  146.     *  DOM implementation. 
  147.     *
  148.     * Intended to support applications that may be
  149.     * using DOMs retrieved from several different sources, potentially
  150.     * with different underlying implementations.
  151.     */
  152.  static DOM_DOMImplementation &getImplementation();
  153.   
  154.  //@}
  155.     /** @name Functions introduced in DOM Level 2. */
  156.     //@{
  157.     /**
  158.      * Creates an empty <code>DOM_DocumentType</code> node.
  159.      * Entity declarations and notations are not made available.
  160.      * Entity reference expansions and default attribute additions
  161.      * do not occur. It is expected that a future version of the DOM
  162.      * will provide a way for populating a <code>DOM_DocumentType</code>.
  163.      *
  164.      * <p><b>"Experimental - subject to change"</b></p>
  165.      *
  166.      * @param qualifiedName The <em>qualified name</em>
  167.      * of the document type to be created.
  168.      * @param publicId The external subset public identifier.
  169.      * @param systemId The external subset system identifier.
  170.      * @return A new <code>DOM_DocumentType</code> node with
  171.      * <code>Node.ownerDocument</code> set to <code>null</code>.
  172.      * @exception DOMException
  173.      *   INVALID_CHARACTER_ERR: Raised if the specified qualified name
  174.      *      contains an illegal character.
  175.      * <br>
  176.      *   NAMESPACE_ERR: Raised if the <code>qualifiedName</code> is malformed.
  177.      */
  178.     DOM_DocumentType createDocumentType(const DOMString &qualifiedName,
  179. const DOMString &publicId, const DOMString &systemId);
  180.     /**
  181.      * Creates an XML <code>DOM_Document</code> object of the specified type
  182.      * with its document element.
  183.      *
  184.      * <p><b>"Experimental - subject to change"</b></p>
  185.      *
  186.      * @param namespaceURI The <em>namespace URI</em> of
  187.      * the document element to create, or <code>null</code>.
  188.      * @param qualifiedName The <em>qualified name</em>
  189.      * of the document element to be created.
  190.      * @param doctype The type of document to be created or <code>null</code>.
  191.      * <p>When <code>doctype</code> is not <code>null</code>, its
  192.      * <code>Node.ownerDocument</code> attribute is set to the document
  193.      * being created.
  194.      * @return A new <code>DOM_Document</code> object.
  195.      * @exception DOMException
  196.      *   INVALID_CHARACTER_ERR: Raised if the specified qualified name
  197.      *      contains an illegal character.
  198.      * <br>
  199.      *   NAMESPACE_ERR: Raised if the <CODE>qualifiedName</CODE> is 
  200.      *      malformed, or if the <CODE>qualifiedName</CODE> has a prefix that is 
  201.      *      "xml" and the <CODE>namespaceURI</CODE> is different from 
  202.      *      "http://www.w3.org/XML/1998/namespace".
  203.      * <br>
  204.      *   WRONG_DOCUMENT_ERR: Raised if <code>doctype</code> has already
  205.      *   been used with a different document.
  206.      */
  207.     DOM_Document createDocument(const DOMString &namespaceURI,
  208. const DOMString &qualifiedName, const DOM_DocumentType &doctype);
  209.     //@}
  210.     // -----------------------------------------------------------------------
  211.     //  Notification that lazy data has been deleted
  212.     // -----------------------------------------------------------------------
  213. static void reinitDOM_DOMImplementation();   
  214. };
  215. #endif