diff --git a/Projects/Win32/BCB6/Xerces-all/XercesLib/XercesLib.bpr b/Projects/Win32/BCB6/Xerces-all/XercesLib/XercesLib.bpr
index f59d58d8233e5dc7533332d2bba219cb0bb12281..1aa8513e59957830c056be4e05762a9582076fe5 100644
--- a/Projects/Win32/BCB6/Xerces-all/XercesLib/XercesLib.bpr
+++ b/Projects/Win32/BCB6/Xerces-all/XercesLib/XercesLib.bpr
@@ -95,6 +95,7 @@
       ..\..\..\..\..\Build\Win32\BCB6\obj\XMLNotationDecl.obj
       ..\..\..\..\..\Build\Win32\BCB6\obj\XMLRecognizer.obj
       ..\..\..\..\..\Build\Win32\BCB6\obj\XMLValidator.obj
+      ..\..\..\..\..\Build\Win32\BCB6\obj\DGXMLScanner.obj
       ..\..\..\..\..\Build\Win32\BCB6\obj\ElemStack.obj
       ..\..\..\..\..\Build\Win32\BCB6\obj\IGXMLScanner.obj
       ..\..\..\..\..\Build\Win32\BCB6\obj\IGXMLScanner2.obj
@@ -430,6 +431,7 @@
       <FILE FILENAME="..\..\..\..\..\src\xercesc\framework\XMLNotationDecl.cpp" FORMNAME="" UNITNAME="XMLNotationDecl" CONTAINERID="CCompiler" DESIGNCLASS="" LOCALCOMMAND=""/>
       <FILE FILENAME="..\..\..\..\..\src\xercesc\framework\XMLRecognizer.cpp" FORMNAME="" UNITNAME="XMLRecognizer" CONTAINERID="CCompiler" DESIGNCLASS="" LOCALCOMMAND=""/>
       <FILE FILENAME="..\..\..\..\..\src\xercesc\framework\XMLValidator.cpp" FORMNAME="" UNITNAME="XMLValidator" CONTAINERID="CCompiler" DESIGNCLASS="" LOCALCOMMAND=""/>
+      <FILE FILENAME="..\..\..\..\..\src\xercesc\internal\DGXMLScanner.cpp" FORMNAME="" UNITNAME="DGXMLScanner" CONTAINERID="CCompiler" DESIGNCLASS="" LOCALCOMMAND=""/>
       <FILE FILENAME="..\..\..\..\..\src\xercesc\internal\ElemStack.cpp" FORMNAME="" UNITNAME="ElemStack" CONTAINERID="CCompiler" DESIGNCLASS="" LOCALCOMMAND=""/>
       <FILE FILENAME="..\..\..\..\..\src\xercesc\internal\IGXMLScanner.cpp" FORMNAME="" UNITNAME="IGXMLScanner" CONTAINERID="CCompiler" DESIGNCLASS="" LOCALCOMMAND=""/>
       <FILE FILENAME="..\..\..\..\..\src\xercesc\internal\IGXMLScanner2.cpp" FORMNAME="" UNITNAME="IGXMLScanner2" CONTAINERID="CCompiler" DESIGNCLASS="" LOCALCOMMAND=""/>
diff --git a/Projects/Win32/BCB6/Xerces-all/XercesLib/XercesLib.mak b/Projects/Win32/BCB6/Xerces-all/XercesLib/XercesLib.mak
index a1b4f37240a2400aa8dbfca34081f8e7611633c9..daadb503c4377a620f0b3845319bd50f37a31737 100644
--- a/Projects/Win32/BCB6/Xerces-all/XercesLib/XercesLib.mak
+++ b/Projects/Win32/BCB6/Xerces-all/XercesLib/XercesLib.mak
@@ -105,6 +105,7 @@ OBJFILES = ..\..\..\..\..\Build\Win32\BCB6\obj\XercesLib.obj \
     ..\..\..\..\..\Build\Win32\BCB6\obj\XMLNotationDecl.obj \
     ..\..\..\..\..\Build\Win32\BCB6\obj\XMLRecognizer.obj \
     ..\..\..\..\..\Build\Win32\BCB6\obj\XMLValidator.obj \
+    ..\..\..\..\..\Build\Win32\BCB6\obj\DGXMLScanner.obj \
     ..\..\..\..\..\Build\Win32\BCB6\obj\ElemStack.obj \
     ..\..\..\..\..\Build\Win32\BCB6\obj\IGXMLScanner.obj \
     ..\..\..\..\..\Build\Win32\BCB6\obj\IGXMLScanner2.obj \
diff --git a/Projects/Win32/VC6/xerces-all/XercesLib/XercesLib.dsp b/Projects/Win32/VC6/xerces-all/XercesLib/XercesLib.dsp
index b57e3ecc577110e8f76c75edd04eba953a835257..c9bdcdc168f43e40e61ce62fcfc057754349874f 100644
--- a/Projects/Win32/VC6/xerces-all/XercesLib/XercesLib.dsp
+++ b/Projects/Win32/VC6/xerces-all/XercesLib/XercesLib.dsp
@@ -1147,6 +1147,14 @@ SOURCE=..\..\..\..\..\src\xercesc\internal\CharTypeTables.hpp
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\..\..\..\src\xercesc\internal\DGXMLScanner.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\src\xercesc\internal\DGXMLScanner.hpp
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\..\..\..\src\xercesc\internal\ElemStack.cpp
 # End Source File
 # Begin Source File
diff --git a/Projects/Win32/VC6/xerces-all/XercesLib/XercesLib.mak b/Projects/Win32/VC6/xerces-all/XercesLib/XercesLib.mak
index 84d8361c8780ace1913fcb26e15b7f955e22c57c..ad571d43b576fe0bd65db5cd9f6c2d2bbaff20a4 100644
--- a/Projects/Win32/VC6/xerces-all/XercesLib/XercesLib.mak
+++ b/Projects/Win32/VC6/xerces-all/XercesLib/XercesLib.mak
@@ -83,6 +83,7 @@ CLEAN :
 	-@erase "$(INTDIR)\DecimalDatatypeValidator.obj"
 	-@erase "$(INTDIR)\DeepNodeListImpl.obj"
 	-@erase "$(INTDIR)\DFAContentModel.obj"
+	-@erase "$(INTDIR)\DGXMLScanner.obj"
 	-@erase "$(INTDIR)\DocumentFragmentImpl.obj"
 	-@erase "$(INTDIR)\DocumentImpl.obj"
 	-@erase "$(INTDIR)\DocumentTypeImpl.obj"
@@ -475,6 +476,7 @@ LINK32_OBJS= \
 	"$(INTDIR)\XMLNotationDecl.obj" \
 	"$(INTDIR)\XMLRecognizer.obj" \
 	"$(INTDIR)\XMLValidator.obj" \
+	"$(INTDIR)\DGXMLScanner.obj" \
 	"$(INTDIR)\ElemStack.obj" \
 	"$(INTDIR)\IGXMLScanner.obj" \
 	"$(INTDIR)\IGXMLScanner2.obj" \
@@ -735,6 +737,7 @@ CLEAN :
 	-@erase "$(INTDIR)\DecimalDatatypeValidator.obj"
 	-@erase "$(INTDIR)\DeepNodeListImpl.obj"
 	-@erase "$(INTDIR)\DFAContentModel.obj"
+	-@erase "$(INTDIR)\DGXMLScanner.obj"
 	-@erase "$(INTDIR)\DocumentFragmentImpl.obj"
 	-@erase "$(INTDIR)\DocumentImpl.obj"
 	-@erase "$(INTDIR)\DocumentTypeImpl.obj"
@@ -1129,6 +1132,7 @@ LINK32_OBJS= \
 	"$(INTDIR)\XMLNotationDecl.obj" \
 	"$(INTDIR)\XMLRecognizer.obj" \
 	"$(INTDIR)\XMLValidator.obj" \
+	"$(INTDIR)\DGXMLScanner.obj" \
 	"$(INTDIR)\ElemStack.obj" \
 	"$(INTDIR)\IGXMLSCanner.obj" \
 	"$(INTDIR)\IGXMLSCanner2.obj" \
@@ -1389,6 +1393,7 @@ CLEAN :
 	-@erase "$(INTDIR)\DecimalDatatypeValidator.obj"
 	-@erase "$(INTDIR)\DeepNodeListImpl.obj"
 	-@erase "$(INTDIR)\DFAContentModel.obj"
+	-@erase "$(INTDIR)\DGXMLScanner.obj"
 	-@erase "$(INTDIR)\DocumentFragmentImpl.obj"
 	-@erase "$(INTDIR)\DocumentImpl.obj"
 	-@erase "$(INTDIR)\DocumentTypeImpl.obj"
@@ -1783,6 +1788,7 @@ LINK32_OBJS= \
 	"$(INTDIR)\XMLNotationDecl.obj" \
 	"$(INTDIR)\XMLRecognizer.obj" \
 	"$(INTDIR)\XMLValidator.obj" \
+	"$(INTDIR)\DGXMLScanner.obj" \
 	"$(INTDIR)\ElemStack.obj" \
 	"$(INTDIR)\IGXMLScanner.obj" \
 	"$(INTDIR)\IGXMLScanner2.obj" \
@@ -2043,6 +2049,7 @@ CLEAN :
 	-@erase "$(INTDIR)\DecimalDatatypeValidator.obj"
 	-@erase "$(INTDIR)\DeepNodeListImpl.obj"
 	-@erase "$(INTDIR)\DFAContentModel.obj"
+	-@erase "$(INTDIR)\DGXMLScanner.obj"
 	-@erase "$(INTDIR)\DocumentFragmentImpl.obj"
 	-@erase "$(INTDIR)\DocumentImpl.obj"
 	-@erase "$(INTDIR)\DocumentTypeImpl.obj"
@@ -2436,6 +2443,7 @@ LINK32_OBJS= \
 	"$(INTDIR)\XMLNotationDecl.obj" \
 	"$(INTDIR)\XMLRecognizer.obj" \
 	"$(INTDIR)\XMLValidator.obj" \
+	"$(INTDIR)\DGXMLScanner.obj" \
 	"$(INTDIR)\ElemStack.obj" \
 	"$(INTDIR)\IGXMLScanner.obj" \
 	"$(INTDIR)\IGXMLScanner2.obj" \
@@ -3389,6 +3397,12 @@ SOURCE=..\..\..\..\..\src\xercesc\framework\XMLValidator.cpp
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
+SOURCE=..\..\..\..\..\src\xercesc\internal\DGXMLScanner.cpp
+
+"$(INTDIR)\DGXMLScanner.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
 SOURCE=..\..\..\..\..\src\xercesc\internal\ElemStack.cpp
 
 "$(INTDIR)\ElemStack.obj" : $(SOURCE) "$(INTDIR)"
diff --git a/src/xercesc/internal/Makefile.in b/src/xercesc/internal/Makefile.in
index bc611bcd8544f878f1825eb842f8030cf92d86d7..c2b44cb8f031528b7a0256ab30116e5d8ad16d6d 100644
--- a/src/xercesc/internal/Makefile.in
+++ b/src/xercesc/internal/Makefile.in
@@ -80,6 +80,7 @@ MODULE = internal
 
 INTERNAL_CPP_PUBHEADERS = \
 	CharTypeTables.hpp \
+	DGXMLScanner.hpp \
 	ElemStack.hpp \
 	EndOfEntityException.hpp \
 	IANAEncodings.hpp \
@@ -99,6 +100,7 @@ INTERNAL_CPP_PRIVHEADERS =
 INTERNAL_C_FILES =
 
 INTERNAL_CPP_OBJECTS = \
+	DGXMLScanner.$(TO) \
 	ElemStack.$(TO) \
 	IGXMLScanner.$(TO) \
 	IGXMLScanner2.$(TO) \
diff --git a/src/xercesc/internal/XMLScannerResolver.cpp b/src/xercesc/internal/XMLScannerResolver.cpp
index 5d9c757f530cbbce862f5f8b678021398b81b05c..4d92af6ec0532f30b35c76c80615a7916e68ae41 100644
--- a/src/xercesc/internal/XMLScannerResolver.cpp
+++ b/src/xercesc/internal/XMLScannerResolver.cpp
@@ -66,6 +66,7 @@
 #include <xercesc/internal/IGXMLScanner.hpp>
 #include <xercesc/internal/WFXMLScanner.hpp>
 #include <xercesc/internal/SGXMLScanner.hpp>
+#include <xercesc/internal/DGXMLScanner.hpp>
 
 XERCES_CPP_NAMESPACE_BEGIN
 
@@ -88,6 +89,8 @@ XMLScannerResolver::resolveScanner(const XMLCh* const scannerName,
         return new IGXMLScanner(valToAdopt);
     else if (XMLString::equals(scannerName, XMLUni::fgSGScanner))
         return new SGXMLScanner(valToAdopt);
+    else if (XMLString::equals(scannerName, XMLUni::fgDGScanner))
+        return new DGXMLScanner(valToAdopt);
 
     // REVISIT: throw an exception or return a default one?
     return 0;
@@ -107,6 +110,8 @@ XMLScannerResolver::resolveScanner(const XMLCh* const scannerName,
         return new IGXMLScanner(docHandler, docTypeHandler, entityHandler, errReporter, valToAdopt);
     else if (XMLString::equals(scannerName, XMLUni::fgSGScanner))
         return new SGXMLScanner(docHandler, docTypeHandler, entityHandler, errReporter, valToAdopt);
+    else if (XMLString::equals(scannerName, XMLUni::fgDGScanner))
+        return new DGXMLScanner(docHandler, docTypeHandler, entityHandler, errReporter, valToAdopt);
 
     // REVISIT: throw an exception or return a default one?
     return 0;
diff --git a/src/xercesc/util/XMLUni.cpp b/src/xercesc/util/XMLUni.cpp
index 65d0aecd1be12c04989d0712097befc956d341d3..a729d98edf7930d62d2dd278a45b25590563a3ab 100644
--- a/src/xercesc/util/XMLUni.cpp
+++ b/src/xercesc/util/XMLUni.cpp
@@ -661,6 +661,12 @@ const XMLCh XMLUni::fgSGScanner[] =
     ,   chLatin_n, chLatin_e, chLatin_r, chNull
 };
 
+const XMLCh XMLUni::fgDGScanner[] =
+{
+        chLatin_D, chLatin_G, chLatin_S, chLatin_c, chLatin_a, chLatin_n
+    ,   chLatin_n, chLatin_e, chLatin_r, chNull
+};
+
 //Exception strings
 const XMLCh XMLUni::fgArrayIndexOutOfBoundsException_Name[] =
 {
diff --git a/src/xercesc/util/XMLUni.hpp b/src/xercesc/util/XMLUni.hpp
index 4d9e9e0e95f9b7d76e780938d24c2386d20dba69..8d1fcaca131f29dfc2fb227a9209f0af5298d203 100644
--- a/src/xercesc/util/XMLUni.hpp
+++ b/src/xercesc/util/XMLUni.hpp
@@ -194,6 +194,7 @@ public :
     static const XMLCh fgWFScanner[];
     static const XMLCh fgIGScanner[];
     static const XMLCh fgSGScanner[];
+    static const XMLCh fgDGScanner[];
 
     // Exception Name
     static const XMLCh fgArrayIndexOutOfBoundsException_Name[];