diff --git a/src/xercesc/util/DOMInputSourceWrapper.cpp b/src/xercesc/util/DOMInputSourceWrapper.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..71c3c9ce2b72eb090d5cd1492e2c4747d88c28d0
--- /dev/null
+++ b/src/xercesc/util/DOMInputSourceWrapper.cpp
@@ -0,0 +1,150 @@
+/*
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation.  All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ *    if any, must include the following acknowledgment:
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowledgment may appear in the software itself,
+ *    if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Xerces" and "Apache Software Foundation" must
+ *    not be used to endorse or promote products derived from this
+ *    software without prior written permission. For written
+ *    permission, please contact apache\@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ *    nor may "Apache" appear in their name, without prior written
+ *    permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation, and was
+ * originally based on software copyright (c) 1999, International
+ * Business Machines, Inc., http://www.ibm.com .  For more information
+ * on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+/*
+ * $Log$
+ * Revision 1.1  2002/05/29 21:53:14  knoaman
+ * Initial revision.
+ *
+ */
+
+
+// ---------------------------------------------------------------------------
+//  Includes
+// ---------------------------------------------------------------------------
+#include <xercesc/util/DOMInputSourceWrapper.hpp>
+#include <xercesc/dom/DOMInputSource.hpp>
+#include <xercesc/util/NullPointerException.hpp>
+
+
+// ---------------------------------------------------------------------------
+//  DOMInputSourceWrapper: Constructor and Destructor
+// ---------------------------------------------------------------------------
+DOMInputSourceWrapper::DOMInputSourceWrapper(DOMInputSource* const inputSource) :
+    fAdoptInputSource(true)
+    ,  fInputSource(inputSource)
+{
+    if (!inputSource)
+        ThrowXML(NullPointerException, XMLExcepts::CPtr_PointerIsZero);
+}
+
+DOMInputSourceWrapper::~DOMInputSourceWrapper()
+{
+    if (fAdoptInputSource)
+        delete fInputSource;
+}
+
+
+// ---------------------------------------------------------------------------
+//  DOMInputSourceWrapper: Getter methods
+// ---------------------------------------------------------------------------
+const bool DOMInputSourceWrapper::getIssueFatalErrorIfNotFound() const
+{
+    return fInputSource->getIssueFatalErrorIfNotFound();
+}
+
+const XMLCh* DOMInputSourceWrapper::getEncoding() const
+{
+    return fInputSource->getEncoding();
+}
+
+const XMLCh* DOMInputSourceWrapper::getSystemId() const
+{
+    return fInputSource->getSystemId();
+}
+
+const XMLCh* DOMInputSourceWrapper::getPublicId() const
+{
+    return fInputSource->getPublicId();
+}
+
+
+// ---------------------------------------------------------------------------
+//  DOMInputSourceWrapper: Setter methods
+// ---------------------------------------------------------------------------
+void DOMInputSourceWrapper::setIssueFatalErrorIfNotFound(const bool flag)
+{
+    fInputSource->setIssueFatalErrorIfNotFound(flag);
+}
+
+
+void DOMInputSourceWrapper::setEncoding(const XMLCh* const encodingStr)
+{
+    fInputSource->setEncoding(encodingStr);
+}
+
+
+void DOMInputSourceWrapper::setPublicId(const XMLCh* const publicId)
+{
+    fInputSource->setPublicId(publicId);
+}
+
+
+void DOMInputSourceWrapper::setSystemId(const XMLCh* const systemId)
+{
+    fInputSource->setSystemId(systemId);
+}
+
+
+// ---------------------------------------------------------------------------
+//  DOMInputSourceWrapper: Stream methods
+// ---------------------------------------------------------------------------
+BinInputStream* DOMInputSourceWrapper::makeStream() const
+{
+    return fInputSource->makeStream();
+}
+
+
diff --git a/src/xercesc/util/DOMInputSourceWrapper.hpp b/src/xercesc/util/DOMInputSourceWrapper.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..e186877a403209fa6055796f34578a2616dc91f4
--- /dev/null
+++ b/src/xercesc/util/DOMInputSourceWrapper.hpp
@@ -0,0 +1,255 @@
+/*
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation.  All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ *    if any, must include the following acknowledgment:
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowledgment may appear in the software itself,
+ *    if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Xerces" and "Apache Software Foundation" must
+ *    not be used to endorse or promote products derived from this
+ *    software without prior written permission. For written
+ *    permission, please contact apache\@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ *    nor may "Apache" appear in their name, without prior written
+ *    permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation, and was
+ * originally based on software copyright (c) 1999, International
+ * Business Machines, Inc., http://www.ibm.com .  For more information
+ * on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+/*
+ * $Log$
+ * Revision 1.1  2002/05/29 21:53:14  knoaman
+ * Initial revision.
+ *
+ */
+
+
+#ifndef DOMINPUTSOURCEWRAPPER_HPP
+#define DOMINPUTSOURCEWRAPPER_HPP
+
+#include <xercesc/sax/InputSource.hpp>
+
+class DOMInputSource;
+
+
+/**
+  * Wrap an DOMInputSource object.
+  */
+class XMLUTIL_EXPORT DOMInputSourceWrapper: public InputSource
+{
+public:
+    /** @name Constructors and Destructor */
+    //@{
+
+  /**
+    * Constructor
+    */
+    DOMInputSourceWrapper(DOMInputSource* const inputSource);
+
+  /**
+    * Destructor
+    *
+    */
+    virtual ~DOMInputSourceWrapper();
+    //@}
+
+
+    // -----------------------------------------------------------------------
+    /** @name Virtual input source interface */
+    //@{
+  /**
+    * Makes the byte stream for this input source.
+    *
+    * <p>The derived class must create and return a binary input stream of an
+    * appropriate type for its kind of data source. The returned stream must
+    * be dynamically allocated and becomes the parser's property.
+    * </p>
+    *
+    * @see BinInputStream
+    */
+    BinInputStream* makeStream() const;
+
+    //@}
+
+    // -----------------------------------------------------------------------
+    /** @name Getter methods */
+    //@{
+  /**
+    * An input source can be set to force the parser to assume a particular
+    * encoding for the data that input source reprsents, via the setEncoding()
+    * method. This method returns name of the encoding that is to be forced.
+    * If the encoding has never been forced, it returns a null pointer.
+    *
+    * @return The forced encoding, or null if none was supplied.
+    * @see #setEncoding
+    */
+    const XMLCh* getEncoding() const;
+
+
+  /**
+    * Get the public identifier for this input source.
+    *
+    * @return The public identifier, or null if none was supplied.
+    * @see #setPublicId
+    */
+    const XMLCh* getPublicId() const;
+
+
+  /**
+    * Get the system identifier for this input source.
+    *
+    * <p>If the system ID is a URL, it will be fully resolved.</p>
+    *
+    * @return The system identifier.
+    * @see #setSystemId
+    */
+    const XMLCh* getSystemId() const;
+
+ /**
+    * Get the flag that indicates if the parser should issue fatal error if this input source
+    * is not found.
+    *
+    * @return True if the parser should issue fatal error if this input source is not found.
+    *         False if the parser issue warning message instead.
+    * @see #setIssueFatalErrorIfNotFound
+    */
+    const bool getIssueFatalErrorIfNotFound() const;
+
+    //@}
+
+
+    // -----------------------------------------------------------------------
+    /** @name Setter methods */
+    //@{
+
+  /**
+    * Set the encoding which will be required for use with the XML text read
+    * via a stream opened by this input source.
+    *
+    * <p>This is usually not set, allowing the encoding to be sensed in the
+    * usual XML way. However, in some cases, the encoding in the file is known
+    * to be incorrect because of intermediate transcoding, for instance
+    * encapsulation within a MIME document.
+    *
+    * @param encodingStr The name of the encoding to force.
+    */
+    void setEncoding(const XMLCh* const encodingStr);
+
+
+  /**
+    * Set the public identifier for this input source.
+    *
+    * <p>The public identifier is always optional: if the application writer
+    * includes one, it will be provided as part of the location information.</p>
+    *
+    * @param publicId The public identifier as a string.
+    * @see Locator#getPublicId
+    * @see SAXParseException#getPublicId
+    * @see #getPublicId
+    */
+    void setPublicId(const XMLCh* const publicId);
+
+  /**
+    * Set the system identifier for this input source.
+    *
+    * <p>Set the system identifier for this input source.
+    *
+    * </p>The system id is always required. The public id may be used to map
+    * to another system id, but the system id must always be present as a fall
+    * back.
+    *
+    * <p>If the system ID is a URL, it must be fully resolved.</p>
+    *
+    * @param systemId The system identifier as a string.
+    * @see #getSystemId
+    * @see Locator#getSystemId
+    * @see SAXParseException#getSystemId
+    */
+    void setSystemId(const XMLCh* const systemId);
+
+  /**
+    * Indicates if the parser should issue fatal error if this input source
+    * is not found.  If set to false, the parser issue warning message instead.
+    *
+    * @param  flag True if the parser should issue fatal error if this input source is not found.
+    *               If set to false, the parser issue warning message instead.  (Default: true)
+    *
+    * @see #getIssueFatalErrorIfNotFound
+    */
+    void setIssueFatalErrorIfNotFound(const bool flag);
+
+  /**
+    * Indicates if the parser should own the input source.
+    * If set to true, the parser will delete the input source.
+    *
+    * @param flag if the parser should delete the input source or not.
+    *             (Default: true)
+    *
+    */
+    void setAdoptInputSource(const bool flag);
+
+    //@}
+
+
+private:
+    // -----------------------------------------------------------------------
+    //  Unimplemented constructors and operators
+    // -----------------------------------------------------------------------
+    DOMInputSourceWrapper(const DOMInputSourceWrapper&);
+    void operator=(const DOMInputSourceWrapper&);
+
+    // -----------------------------------------------------------------------
+    //  Private data members
+    // -----------------------------------------------------------------------
+    bool            fAdoptInputSource;
+    DOMInputSource* fInputSource;
+};
+
+
+// ---------------------------------------------------------------------------
+//  DOMInputSourceWrapper: Setter methods
+// ---------------------------------------------------------------------------
+inline void DOMInputSourceWrapper::setAdoptInputSource(const bool flag)
+{
+    fAdoptInputSource = flag;
+}
+
+#endif