diff --git a/src/xercesc/dom/DOMImplementation.hpp b/src/xercesc/dom/DOMImplementation.hpp
index 8774ac285c80ab9e95187d540d148a3db117f173..ecf664fbde4c1a4898ee68651fa3c57be6756c40 100644
--- a/src/xercesc/dom/DOMImplementation.hpp
+++ b/src/xercesc/dom/DOMImplementation.hpp
@@ -199,6 +199,32 @@ public:
                                         const XMLCh *qualifiedName,
                                         DOMDocumentType *doctype) = 0;
 
+    //@}
+    // -----------------------------------------------------------------------
+    // Functions introduced in DOM Level 3
+    // -----------------------------------------------------------------------
+    /** @name Functions introduced in DOM Level 3 */
+    //@{
+    /**
+     * This method makes available a <code>DOMImplementation</code>'s
+     * specialized interface (see ).
+     *
+     * <p><b>"Experimental - subject to change"</b></p>
+     *
+     * @param feature The name of the feature requested (case-insensitive).
+     * @return Returns an alternate <code>DOMImplementation</code> which
+     *   implements the specialized APIs of the specified feature, if any,
+     *   or <code>null</code> if there is no alternate
+     *   <code>DOMImplementation</code> object which implements interfaces
+     *   associated with that feature. Any alternate
+     *   <code>DOMImplementation</code> returned by this method must
+     *   delegate to the primary core <code>DOMImplementation</code> and not
+     *   return results inconsistent with the primary
+     *   <code>DOMImplementation</code>
+     * @since DOM Level 3
+     */
+    virtual DOMImplementation* getInterface(const XMLCh* feature) = 0;
+
     //@}
 
     // -----------------------------------------------------------------------
diff --git a/src/xercesc/dom/impl/DOMImplementationImpl.cpp b/src/xercesc/dom/impl/DOMImplementationImpl.cpp
index b1f9ead0bbc7b48f7ac8a566f34e5789cc4eac56..4e766d30b0c99dcfa94ecab547f9f80c84ccb32b 100644
--- a/src/xercesc/dom/impl/DOMImplementationImpl.cpp
+++ b/src/xercesc/dom/impl/DOMImplementationImpl.cpp
@@ -199,6 +199,12 @@ DOMDocument *DOMImplementationImpl::createDocument()
         return new DOMDocumentImpl();
 }
 
+//Introduced in DOM Level 3
+DOMImplementation* DOMImplementationImpl::getInterface(const XMLCh* feature){
+    throw DOMException(DOMException::NOT_SUPPORTED_ERR, 0);
+    return 0;
+}
+
 //
 //  DOMImplementation::getImplementation.  DOMImplementation is supposed to
 //                                              be a pure interface class.  This one static
@@ -208,7 +214,6 @@ DOMImplementation *DOMImplementation::getImplementation()
     return (DOMImplementation*) DOMImplementationImpl::getDOMImplementationImpl();
 }
 
-
 // ------------------------------------------------------------
 // DOMImplementationLS Virtual interface
 // ------------------------------------------------------------
diff --git a/src/xercesc/dom/impl/DOMImplementationImpl.hpp b/src/xercesc/dom/impl/DOMImplementationImpl.hpp
index 17cdee614d605d6431c6fc06b77f46f430b10fea..dd170f92d60a95edcfba88a6d7eb23da1f138834 100644
--- a/src/xercesc/dom/impl/DOMImplementationImpl.hpp
+++ b/src/xercesc/dom/impl/DOMImplementationImpl.hpp
@@ -97,6 +97,9 @@ public:
                                                const XMLCh *qualifiedName,
                                                DOMDocumentType *doctype);
 
+    // DOM Level 3
+    virtual DOMImplementation*  getInterface(const XMLCh* feature);
+
     // Non-standard extension
     virtual DOMDocument*        createDocument();