diff --git a/Tests/Compare/compare.cpp b/Tests/Compare/compare.cpp
index 0881fd2..305b8e8 100644
--- a/Tests/Compare/compare.cpp
+++ b/Tests/Compare/compare.cpp
@@ -21,13 +21,8 @@
 
 
 
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <iostream.h>
-#include <strstream.h>
-#else
 #include <iostream>
 #include <strstream>
-#endif
 
 #include <cstdio>
 
@@ -37,8 +32,8 @@
 
 
 
-XALAN_USING_STD(cerr)
-XALAN_USING_STD(endl)
+using std::cerr;
+using std::endl;
 
 
 
@@ -70,7 +65,7 @@
 
 
 
-XALAN_USING_XALAN(XalanFileUtility)
+using xalanc::XalanFileUtility;
 
 
 
@@ -106,17 +101,17 @@
 
     if (h.getParams(argc, argv, "DOMCOM-RESULTS", setGold) == true)
     {
-        XALAN_USING_XALAN(FormatterToSourceTree)
-        XALAN_USING_XALAN(XalanCompiledStylesheet)
-        XALAN_USING_XALAN(XalanDOMString)
-        XALAN_USING_XALAN(XalanParsedSource)
-        XALAN_USING_XALAN(XalanSourceTreeDocument)
-        XALAN_USING_XALAN(XalanSourceTreeDOMSupport)
-        XALAN_USING_XALAN(XalanSourceTreeParserLiaison)
-        XALAN_USING_XALAN(XalanTransformer)
-        XALAN_USING_XALAN(XalanXMLFileReporter)
-        XALAN_USING_XALAN(XSLTInputSource)
-        XALAN_USING_XALAN(XSLTResultTarget)
+        using xalanc::FormatterToSourceTree;
+        using xalanc::XalanCompiledStylesheet;
+        using xalanc::XalanDOMString;
+        using xalanc::XalanParsedSource;
+        using xalanc::XalanSourceTreeDocument;
+        using xalanc::XalanSourceTreeDOMSupport;
+        using xalanc::XalanSourceTreeParserLiaison;
+        using xalanc::XalanTransformer;
+        using xalanc::XalanXMLFileReporter;
+        using xalanc::XSLTInputSource;
+        using xalanc::XSLTResultTarget;
 
         //
         // Call the static initializers for xerces and xalan, and create a transformer
@@ -231,9 +226,9 @@
 
     try
     {
-        XALAN_USING_XERCES(XMLPlatformUtils)
+        using xercesc::XMLPlatformUtils;
 
-        XALAN_USING_XALAN(XalanTransformer)
+        using xalanc::XalanTransformer;
 
         // Call the static initializers for xerces and xalan, and create a transformer
         //
diff --git a/Tests/Conf/conf.cpp b/Tests/Conf/conf.cpp
index 3b6bddb..c228a1d 100644
--- a/Tests/Conf/conf.cpp
+++ b/Tests/Conf/conf.cpp
@@ -21,21 +21,17 @@
 
 
 
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <iostream.h>
-#include <strstream.h>
-#else
 #include <iostream>
 #include <strstream>
-#endif
 
 #include <cstdio>
+#include <cstring>
 
 
 
-XALAN_USING_STD(cerr)
-XALAN_USING_STD(cout)
-XALAN_USING_STD(endl)
+using std::cerr;
+using std::cout;
+using std::endl;
 
 
 
@@ -76,7 +72,7 @@
 
 
 // Just hoist everything...
-XALAN_CPP_NAMESPACE_USE
+using namespace xalanc;
 
 
 
@@ -87,7 +83,7 @@
 
 
 
-XALAN_USING_XERCES(MemoryManager)
+using xercesc::MemoryManager;
 
 
 
@@ -242,9 +238,7 @@
             bool                    isICUIntegrated,
             MemoryManager&          theMemoryManager)
 {
-#if defined(XALAN_STRICT_ANSI_HEADERS)
     using std::strcmp;
-#endif
 
     CharVectorType  theFileName(theMemoryManager);
 
@@ -337,8 +331,8 @@
             XalanXMLFileReporter&           logFile,
             XalanFileUtility&               h)
 {
-    XALAN_USING_XERCES(XercesDOMParser)
-    XALAN_USING_XERCES(DOMDocument)
+    using xercesc::XercesDOMParser;
+    using xercesc::DOMDocument;
 
     MemoryManager&  mgr = h.getMemoryManager();
 
@@ -515,7 +509,7 @@
                         const XSLTInputSource   xmlInputSource(theXMLFile, theMemoryManager);
                         const XSLTResultTarget  resultFile(theOutputFile, theMemoryManager);
 
-                        XALAN_USING_STD(ostrstream)
+                        using std::ostrstream;
 
                         // Setting a warning stream will swallow output in non-verbose mode.
                         ostrstream  theDummyStream;
@@ -640,8 +634,8 @@
 
     try
     {
-        XALAN_USING_XERCES(XMLPlatformUtils)
-        XALAN_USING_XERCES(XMLUni)
+        using xercesc::XMLPlatformUtils;
+        using xercesc::XMLUni;
 
         XalanMemoryManagerDefault       theGlobalMemoryManager;
         XalanDiagnosticMemoryManager    theDiagnosticMemoryManager(theGlobalMemoryManager, true, &cerr);
diff --git a/Tests/Dom2Dom/dom2dom.cpp b/Tests/Dom2Dom/dom2dom.cpp
index 2b04f88..a28f07f 100644
--- a/Tests/Dom2Dom/dom2dom.cpp
+++ b/Tests/Dom2Dom/dom2dom.cpp
@@ -22,13 +22,8 @@
 
 #include <cstdio>
 #include <direct.h>
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <iostream.h>
-#include <strstream.h>
-#else
 #include <iostream>
 #include <strstream>
-#endif
 #include <vector>
 
 
@@ -79,14 +74,14 @@
 
 
 
-XALAN_USING_STD(cerr)
-XALAN_USING_STD(cout)
-XALAN_USING_STD(endl)
+using std::cerr;
+using std::cout;
+using std::endl;
 
 
 
 // Just hoist everything...
-XALAN_CPP_NAMESPACE_USE
+using namespace xalanc;
 
 
 
@@ -311,8 +306,8 @@
                 XalanDOMString  theOutputFile(theManager);
                 f.generateFileName(theOutput, "out", theOutputFile);
 
-                XALAN_USING_XERCES(DOMDocument)
-                XALAN_USING_XERCES(DOMImplementation)
+                using xercesc::DOMDocument;
+                using xercesc::DOMImplementation;
 
                 // Use a Xerces Dom document to create the XSLTResultTarget. 
                 const XalanAutoPtr<DOMDocument>     theDocument(DOMImplementation::getImplementation()->createDocument());
@@ -398,7 +393,7 @@
 
     try
     {
-        XALAN_USING_XERCES(XMLPlatformUtils)
+        using xercesc::XMLPlatformUtils;
 
         // Call the static initializers for xerces and xalan, and create a transformer
         //
diff --git a/Tests/Errortests/Errortests.cpp b/Tests/Errortests/Errortests.cpp
index 762cf8e..e77eb23 100644
--- a/Tests/Errortests/Errortests.cpp
+++ b/Tests/Errortests/Errortests.cpp
@@ -22,18 +22,13 @@
 
 #include <cstdio>
 
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <iostream.h>
-#include <strstream.h>
-#else
 #include <iostream>
 #include <strstream>
-#endif
 
 
-XALAN_USING_STD(cerr)
-XALAN_USING_STD(cout)
-XALAN_USING_STD(endl)
+using std::cerr;
+using std::cout;
+using std::endl;
 
 
 
@@ -74,8 +69,8 @@
 
 
 
-XALAN_USING_XALAN(XalanFileUtility)
-XALAN_USING_XALAN(XalanDOMString)
+using xalanc::XalanFileUtility;
+using xalanc::XalanDOMString;
 
 
 
@@ -117,8 +112,8 @@
             int     argc,
             char*   argv[])
 {
-    XALAN_USING_XALAN(MemoryManager)
-    XALAN_USING_XALAN(XalanMemMgrs)
+    using xalanc::MemoryManager;
+    using xalanc::XalanMemMgrs;
 
     MemoryManager& theManager = XalanMemMgrs::getDefaultXercesMemMgr();
 
@@ -132,10 +127,10 @@
 
     if (h.getParams(argc, argv, "ERR-RESULTS", setGold) == true)
     {
-        XALAN_USING_XALAN(XalanTransformer)
-        XALAN_USING_XALAN(XalanSourceTreeDOMSupport)
-        XALAN_USING_XALAN(XalanSourceTreeParserLiaison)
-        XALAN_USING_XALAN(XalanXMLFileReporter)
+        using xalanc::XalanTransformer;
+        using xalanc::XalanSourceTreeDOMSupport;
+        using xalanc::XalanSourceTreeParserLiaison;
+        using xalanc::XalanXMLFileReporter;
 
         XalanTransformer                xalan;
 
@@ -195,10 +190,10 @@
 
                     for(FileNameVectorType::size_type i = 0; i < files.size(); i++)
                     {
-                        XALAN_USING_XALAN(XSLTInputSource)
-                        XALAN_USING_XALAN(XSLTResultTarget)
-                        XALAN_USING_XALAN(XalanCompiledStylesheet)
-                        XALAN_USING_XALAN(XalanParsedSource)
+                        using xalanc::XSLTInputSource;
+                        using xalanc::XSLTResultTarget;
+                        using xalanc::XalanCompiledStylesheet;
+                        using xalanc::XalanParsedSource;
 
                         XalanXMLFileReporter::Hashtable     attrs(theManager);
 
@@ -325,9 +320,9 @@
 
     try
     {
-        XALAN_USING_XERCES(XMLPlatformUtils)
+        using xercesc::XMLPlatformUtils;
 
-        XALAN_USING_XALAN(XalanTransformer)
+        using xalanc::XalanTransformer;
 
         // Call the static initializers for xerces and xalan, and create a transformer
         //
diff --git a/Tests/Extensions/extensions.cpp b/Tests/Extensions/extensions.cpp
index 5f762ae..f38cfe8 100644
--- a/Tests/Extensions/extensions.cpp
+++ b/Tests/Extensions/extensions.cpp
@@ -22,13 +22,8 @@
 
 #include <cstdio>
 
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <iostream.h>
-#include <strstream.h>
-#else
 #include <iostream>
 #include <strstream>
-#endif
 
 
 
@@ -63,9 +58,9 @@
 
 
 
-XALAN_USING_STD(cerr)
-XALAN_USING_STD(cout)
-XALAN_USING_STD(endl)
+using std::cerr;
+using std::cout;
+using std::endl;
 
 
 
@@ -73,12 +68,12 @@
 const char* const   resultString = "The specified function is not available: http://xml.apache.org/xalan:nodeset";
 
 
-XALAN_USING_XALAN(XalanFileUtility)
-XALAN_USING_XALAN(XalanDOMString)
-XALAN_USING_XALAN(XalanTransformer)
-XALAN_USING_XALAN(XalanXMLFileReporter)
-XALAN_USING_XALAN(XSLTInputSource)
-XALAN_USING_XALAN(XSLTResultTarget)
+using xalanc::XalanFileUtility;
+using xalanc::XalanDOMString;
+using xalanc::XalanTransformer;
+using xalanc::XalanXMLFileReporter;
+using xalanc::XSLTInputSource;
+using xalanc::XSLTResultTarget;
 
 
 
@@ -220,7 +215,7 @@
             XalanXMLFileReporter&   logFile,
             XalanFileUtility&       h)
 {
-    XALAN_USING_XALAN(FunctionNodeSet)
+    using xalanc::FunctionNodeSet;
 
     XalanDOMString  xml, xsl, theOutputFile, theGoldFile;
     
@@ -292,7 +287,7 @@
             XalanXMLFileReporter&   logFile,
             XalanFileUtility&       h)
 {
-    XALAN_USING_XALAN(FunctionNodeSet)
+    using xalanc::FunctionNodeSet;
     
     XalanDOMString  xml, xsl, theOutputFile, theGoldFile;
 
@@ -437,7 +432,7 @@
 
     try
     {
-        XALAN_USING_XERCES(XMLPlatformUtils)
+        using xercesc::XMLPlatformUtils;
 
         // Call the static initializers for xerces and xalan, and create a transformer
         //
diff --git a/Tests/InputSource/inputsource.cpp b/Tests/InputSource/inputsource.cpp
index c5850f6..a047f5c 100644
--- a/Tests/InputSource/inputsource.cpp
+++ b/Tests/InputSource/inputsource.cpp
@@ -22,11 +22,7 @@
 
 #include <cstdio>
 
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <iostream.h>
-#else
 #include <iostream>
-#endif
 
 
 
@@ -69,14 +65,14 @@
 
 
 
-XALAN_USING_STD(cerr)
-XALAN_USING_STD(cout)
-XALAN_USING_STD(endl)
+using std::cerr;
+using std::cout;
+using std::endl;
 
 
     
 // Just hoist everything...
-XALAN_CPP_NAMESPACE_USE
+using namespace xalanc;
 
 
 
@@ -292,8 +288,8 @@
             const XalanDOMString&   theGoldFile,
             XalanFileUtility&       h)
 {
-    XALAN_USING_XERCES(XercesDOMParser)
-    XALAN_USING_XERCES(DOMDocument)
+    using xercesc::XercesDOMParser;
+    using xercesc::DOMDocument;
 
     h.data.testOrFile = "InputSource-TestCase5";
     const XSLTInputSource   xmlInputSource(xml);
@@ -430,7 +426,7 @@
 
     try
     {
-        XALAN_USING_XERCES(XMLPlatformUtils)
+        using xercesc::XMLPlatformUtils;
 
         // Call the static initializers for xerces and xalan, and create a transformer
         //
diff --git a/Tests/Memory/Stressmem.cpp b/Tests/Memory/Stressmem.cpp
index b7f458c..f3205bd 100644
--- a/Tests/Memory/Stressmem.cpp
+++ b/Tests/Memory/Stressmem.cpp
@@ -21,11 +21,7 @@
 
 #include <cstdio>
 
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <iostream.h>
-#else
 #include <iostream>
-#endif
 
 
 
@@ -47,9 +43,9 @@
 
 
 
-XALAN_USING_STD(cerr)
-XALAN_USING_STD(cout)
-XALAN_USING_STD(endl)
+using std::cerr;
+using std::cout;
+using std::endl;
 
 
 
@@ -60,8 +56,8 @@
 
 
 
-XALAN_USING_XALAN(XalanFileUtility)
-XALAN_USING_XALAN(XalanDOMString)
+using xalanc::XalanFileUtility;
+using xalanc::XalanDOMString;
 
 
 
@@ -117,9 +113,9 @@
         //
         if (h.getParams(argc, argv, "MEM-RESULTS", setGold) == true)
         {
-            //XALAN_USING_XALAN(XalanSourceTreeDOMSupport)
-            //XALAN_USING_XALAN(XalanSourceTreeParserLiaison)
-            XALAN_USING_XALAN(XalanXMLFileReporter)
+            //using xalanc::XalanSourceTreeDOMSupport;
+            //using xalanc::XalanSourceTreeParserLiaison;
+            using xalanc::XalanXMLFileReporter;
 
             typedef XalanFileUtility::FileNameVectorType    FileNameVectorType;
 
@@ -140,7 +136,7 @@
 
             try
             {
-                XALAN_USING_XALAN(XalanTransformer)
+                using xalanc::XalanTransformer;
 
                 bool foundDir = false;
 
@@ -166,8 +162,8 @@
                     {
                         if (checkForExclusion(files[i]) == false)
                         {
-                            XALAN_USING_XALAN(XSLTInputSource)
-                            XALAN_USING_XALAN(XSLTResultTarget)
+                            using xalanc::XSLTInputSource;
+                            using xalanc::XSLTResultTarget;
 
                             // Output file name to result log and console.
                             logFile.logTestCaseInit(files[i]);
@@ -244,9 +240,9 @@
 
     try
     {
-        XALAN_USING_XERCES(XMLPlatformUtils)
+        using xercesc::XMLPlatformUtils;
 
-        XALAN_USING_XALAN(XalanTransformer)
+        using xalanc::XalanTransformer;
 
         // Call the static initializers for xerces and xalan, and create a transformer
         //
diff --git a/Tests/Params/Params.cpp b/Tests/Params/Params.cpp
index 9306f87..7cb288f 100644
--- a/Tests/Params/Params.cpp
+++ b/Tests/Params/Params.cpp
@@ -22,11 +22,7 @@
 
 #include <cstdio>
 
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <iostream.h>
-#else
 #include <iostream>
-#endif
 
 // This is here for memory leak testing. 
 #if !defined(NDEBUG) && defined(_MSC_VER)
@@ -57,14 +53,14 @@
 
 
 
-XALAN_USING_STD(cerr)
-XALAN_USING_STD(cout)
-XALAN_USING_STD(endl)
+using std::cerr;
+using std::cout;
+using std::endl;
 
 
 
-XALAN_USING_XALAN(XalanFileUtility)
-XALAN_USING_XALAN(XalanDOMString)
+using xalanc::XalanFileUtility;
+using xalanc::XalanDOMString;
 
 
 
@@ -93,7 +89,7 @@
 {
     assert(8 < theFile.length());
 
-    return theFile[7] - XALAN_CPP_NAMESPACE_QUALIFIER XalanUnicode::charDigit_0;
+    return theFile[7] - xalanc::XalanUnicode::charDigit_0;
 }
 
 
@@ -131,8 +127,8 @@
         }
         else
         {
-            XALAN_USING_XALAN(XalanTransformer)
-            XALAN_USING_XALAN(XalanXMLFileReporter)
+            using xalanc::XalanTransformer;
+            using xalanc::XalanXMLFileReporter;
 
             XalanTransformer    xalan;
 
@@ -190,8 +186,8 @@
                     theGoldFile = h.args.gold + currentDir + XalanFileUtility::s_pathSep + fileName;
                     theGoldFile = h.generateFileName(theGoldFile, "out");
 
-                    XALAN_USING_XALAN(XSLTResultTarget);
-                    XALAN_USING_XALAN(XSLTInputSource);
+                    using xalanc::XSLTResultTarget;;
+                    using xalanc::XSLTInputSource;;
 
                     const XSLTResultTarget  theResultTarget(theOutputFile);
                     const XSLTInputSource   xslInputSource(theXSLFile);
@@ -293,9 +289,9 @@
 
     try
     {
-        XALAN_USING_XERCES(XMLPlatformUtils)
+        using xercesc::XMLPlatformUtils;
 
-        XALAN_USING_XALAN(XalanTransformer)
+        using xalanc::XalanTransformer;
 
         // Call the static initializers for xerces and xalan, and create a transformer
         //
diff --git a/Tests/PerfT/perft.cpp b/Tests/PerfT/perft.cpp
index 2b08243..bbed2a4 100644
--- a/Tests/PerfT/perft.cpp
+++ b/Tests/PerfT/perft.cpp
@@ -23,11 +23,7 @@
 #include <cstdio>
 #include <ctime>
 
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <iostream.h>
-#else
 #include <iostream>
-#endif
 
 
 
@@ -47,9 +43,9 @@
 
 
 
-XALAN_USING_STD(cerr)
-XALAN_USING_STD(cout)
-XALAN_USING_STD(endl)
+using std::cerr;
+using std::cout;
+using std::endl;
 
 
 
@@ -63,11 +59,11 @@
 
 
 inline bool
-checkForExclusion(const XALAN_CPP_NAMESPACE_QUALIFIER XalanDOMString&   currentFile)
+checkForExclusion(const xalanc::XalanDOMString&   currentFile)
 {
     for (int i=0; excludeStylesheets[i] != 0; i++)
     {   
-        if (currentFile == XALAN_CPP_NAMESPACE_QUALIFIER XalanDOMString(excludeStylesheets[i]))
+        if (currentFile == xalanc::XalanDOMString(excludeStylesheets[i]))
         {
             return true;
         }
@@ -97,7 +93,7 @@
 
 
 void
-setHelp(XALAN_CPP_NAMESPACE_QUALIFIER XalanFileUtility& h)
+setHelp(xalanc::XalanFileUtility& h)
 {
     h.args.getHelpStream() << endl
          << "Perft dir [-out -sub -i -iter]"
@@ -123,7 +119,7 @@
             char*   argv[])
 {
     // Just hoist everything...
-    XALAN_CPP_NAMESPACE_USE
+    using namespace xalanc;
 
     MemoryManager& theManager = XalanMemMgrs::getDefaultXercesMemMgr();
 
@@ -401,8 +397,8 @@
 
     try
     {
-        XALAN_USING_XERCES(XMLPlatformUtils)
-        XALAN_USING_XALAN(XalanTransformer)
+        using xercesc::XMLPlatformUtils;
+        using xalanc::XalanTransformer;
 
         // Call the static initializers for xerces and xalan, and create a transformer
         //
diff --git a/Tests/Performance/Logger.cpp b/Tests/Performance/Logger.cpp
index 6abd490..3cfa57f 100644
--- a/Tests/Performance/Logger.cpp
+++ b/Tests/Performance/Logger.cpp
@@ -28,16 +28,11 @@
 
 #include <ctime>
 
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <iostream.h>
-#include <iomanip.h>
-#else
 #include <iostream>
 #include <iomanip>
-#endif
 
 
-XALAN_USING_XALAN(XalanDOMString)
+using xalanc::XalanDOMString;
 
 
 
@@ -78,11 +73,9 @@
 Logger::StreamType& 
 Logger::log(eLogType    logType)
 {
-#if defined(XALAN_STRICT_ANSI_HEADERS)
     using std::ctime;
     using std::time;
     using std::time_t;
-#endif
 
     time_t theTime;
     time(&theTime);
@@ -92,7 +85,7 @@
     timeStr[24] = '\0';
 
     m_stream << timeStr
-             << XALAN_STD_QUALIFIER setw(10)
+             << std::setw(10)
              << logText[logType]
              << ": ";
 
diff --git a/Tests/Performance/Logger.hpp b/Tests/Performance/Logger.hpp
index e04c201..c90ecc8 100644
--- a/Tests/Performance/Logger.hpp
+++ b/Tests/Performance/Logger.hpp
@@ -25,12 +25,7 @@
 
 
 
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <iostream.h>
-#else
 #include <iosfwd>
-//#include <ios>
-#endif
 
 
 
@@ -42,11 +37,7 @@
 {
 public:
 
-#if defined(XALAN_NO_STD_NAMESPACE)
-    typedef ostream         StreamType;
-#else
     typedef std::ostream    StreamType;
-#endif
 
     Logger(StreamType&  stream);
 
diff --git a/Tests/Performance/Parameters.cpp b/Tests/Performance/Parameters.cpp
index 4d53f71..a2e5d60 100644
--- a/Tests/Performance/Parameters.cpp
+++ b/Tests/Performance/Parameters.cpp
@@ -20,11 +20,7 @@
 
 
 
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <iomanip.h>
-#else
 #include <iomanip>
-#endif
 
 
 
@@ -56,26 +52,24 @@
 
 
 
-XALAN_USING_XALAN(XalanTransformer)
-XALAN_USING_XALAN(XalanParsedSource)
-XALAN_USING_XALAN(XalanDocument)
-XALAN_USING_XALAN(XalanNode)
-XALAN_USING_XALAN(XalanNamedNodeMap)
-XALAN_USING_XALAN(XalanDOMString)
-XALAN_USING_XALAN(WideStringToLong)
-XALAN_USING_XALAN(compareIgnoreCaseASCII)
-XALAN_USING_XALAN(XalanMemMgrs)
-XALAN_USING_XALAN(MemoryManager)
-XALAN_USING_XALAN(XalanFileUtility)
-XALAN_USING_XALAN(XSLTInputSource)
+using xalanc::XalanTransformer;
+using xalanc::XalanParsedSource;
+using xalanc::XalanDocument;
+using xalanc::XalanNode;
+using xalanc::XalanNamedNodeMap;
+using xalanc::XalanDOMString;
+using xalanc::WideStringToLong;
+using xalanc::compareIgnoreCaseASCII;
+using xalanc::XalanMemMgrs;
+using xalanc::MemoryManager;
+using xalanc::XalanFileUtility;
+using xalanc::XSLTInputSource;
 
 
 
 
 
-#if !defined(XALAN_NO_STD_NAMESPACE)
 using std::endl;
-#endif
 
 
 
diff --git a/Tests/Performance/Parameters.hpp b/Tests/Performance/Parameters.hpp
index a0d2c18..cc3b050 100644
--- a/Tests/Performance/Parameters.hpp
+++ b/Tests/Performance/Parameters.hpp
@@ -41,10 +41,10 @@
 
 
 
-XALAN_USING_XALAN(XalanDOMChar)
-XALAN_USING_XALAN(XalanDOMString)
-XALAN_USING_XALAN(XalanTransformer)
-XALAN_USING_XALAN(XalanFileUtility)
+using xalanc::XalanDOMChar;
+using xalanc::XalanDOMString;
+using xalanc::XalanTransformer;
+using xalanc::XalanFileUtility;
 
 
 
diff --git a/Tests/Performance/TestHarness.cpp b/Tests/Performance/TestHarness.cpp
index eaad10a..cb1935c 100644
--- a/Tests/Performance/TestHarness.cpp
+++ b/Tests/Performance/TestHarness.cpp
@@ -25,11 +25,11 @@
 
 
 
-XALAN_USING_XALAN(XalanMemMgrs)
-XALAN_USING_XALAN(CharVectorType)
+using xalanc::XalanMemMgrs;
+using xalanc::CharVectorType;
 
 
-XALAN_USING_STD(ostringstream)
+using std::ostringstream;
 
 
 
diff --git a/Tests/Performance/TestHarness.hpp b/Tests/Performance/TestHarness.hpp
index 56c27a8..9d8dec5 100644
--- a/Tests/Performance/TestHarness.hpp
+++ b/Tests/Performance/TestHarness.hpp
@@ -24,11 +24,8 @@
 
 
 #include <climits>
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <fstream.h>
-#else
 #include <fstream>
-#endif
+#include <sstream>
 
 
 
@@ -58,13 +55,13 @@
 
 
 
-XALAN_USING_XALAN(XalanMemMgrs)
-XALAN_USING_XALAN(XalanVector)
-XALAN_USING_XALAN(XalanMap)
-XALAN_USING_XALAN(XalanNode)
-XALAN_USING_XALAN(XalanDOMString)
-XALAN_USING_XALAN(XalanFileUtility)
-XALAN_USING_XALAN(XalanXMLFileReporter)
+using xalanc::XalanMemMgrs;
+using xalanc::XalanVector;
+using xalanc::XalanMap;
+using xalanc::XalanNode;
+using xalanc::XalanDOMString;
+using xalanc::XalanFileUtility;
+using xalanc::XalanXMLFileReporter;
 
 
 
@@ -205,22 +202,10 @@
 
         if (testCase.inputMode == XalanDOMString("stream"))
         {
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-            XALAN_USING_XALAN(CharVectorType)
-            XALAN_USING_XALAN(c_str)
-
-            XALAN_USING_STD(istringstream)
-
-            CharVectorType  buffer;
-            fileToStream(testCase.stylesheet, buffer);
-
-            istrstream      compilerStream(c_str(buffer));
-#else
-            XALAN_USING_STD(istringstream)
+            using std::istringstream;
 
             istringstream compilerStream; 
             fileToStream(testCase.stylesheet, compilerStream);
-#endif
             timeCompile.start();
             compiledStylesheet = m_processor.compileStylesheet(
                     compilerStream,
@@ -237,7 +222,7 @@
         }
         else 
         {
-            XALAN_USING_STD(endl)
+            using std::endl;
 
             m_logger->error() 
                     << "Mode: " 
@@ -271,22 +256,10 @@
             if (testCase.inputMode == XalanDOMString("stream") &&
                 !parsedInputSource)
             {
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-                XALAN_USING_XALAN(CharVectorType)
-                XALAN_USING_XALAN(c_str)
-
-                XALAN_USING_STD(istringstream)
-
-                CharVectorType  buffer;
-                fileToStream(testCase.inputDocument, buffer);
-
-                istrstream      inputStream(c_str(buffer));
-#else
-                XALAN_USING_STD(istringstream)
+                using std::istringstream;
 
                 istringstream inputStream;
                 fileToStream(testCase.inputDocument, inputStream);
-#endif
 
                 timeInput.start();
                 parsedInputSource = m_processor.parseInputSource(
@@ -304,7 +277,7 @@
             }
             else
             {
-                XALAN_USING_STD(endl)
+                using std::endl;
 
                 m_logger->error() 
                     << "Mode: " 
@@ -401,7 +374,7 @@
     }
     catch (const XalanDOMString& exception)
     {
-        XALAN_USING_STD(endl)
+        using std::endl;
 
         m_logger->error()  
                 << "Error encountered during transformation: "
diff --git a/Tests/Performance/Timer.hpp b/Tests/Performance/Timer.hpp
index 16415d3..3d92d37 100644
--- a/Tests/Performance/Timer.hpp
+++ b/Tests/Performance/Timer.hpp
@@ -32,7 +32,7 @@
 class Timer
 {
 public:
-    typedef XALAN_STD_QUALIFIER clock_t TimerType;
+    typedef std::clock_t TimerType;
 
     Timer() :
         m_startTime(0),
@@ -42,13 +42,13 @@
 
   void start()
     {
-        m_startTime = XALAN_STD_QUALIFIER clock();
+        m_startTime = std::clock();
 
     }
 
     TimerType stop()
     {
-        TimerType stopTime = XALAN_STD_QUALIFIER clock();
+        TimerType stopTime = std::clock();
 
         m_totalTime = stopTime - m_startTime;
 
diff --git a/Tests/Performance/Utils.cpp b/Tests/Performance/Utils.cpp
index fd0d6f2..1bb857a 100644
--- a/Tests/Performance/Utils.cpp
+++ b/Tests/Performance/Utils.cpp
@@ -25,9 +25,7 @@
 
 #include <stdio.h>
 
-#if !defined(XALAN_CLASSIC_IOSTREAMS)
 #include <sstream>
-#endif
 
 
 
@@ -52,10 +50,10 @@
 
 
 
-XALAN_USING_XALAN(XalanMemMgrs)
-XALAN_USING_XALAN(CharVectorType)
-XALAN_USING_XALAN(TranscodeToLocalCodePage)
-XALAN_USING_XALAN(c_str)
+using xalanc::XalanMemMgrs;
+using xalanc::CharVectorType;
+using xalanc::TranscodeToLocalCodePage;
+using xalanc::c_str;
 
 
 
@@ -97,42 +95,26 @@
 
 void fileToStream(
             const XalanDOMString&               fileName,
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-            CharVectorType&                     resultStream)
-#else
-            XALAN_STD_QUALIFIER istringstream&  resultStream)
-#endif
+            std::istringstream&  resultStream)
 {
     CharVectorType resultFileName;
     fileName.transcode(resultFileName);
 
-#if !defined(XALAN_NO_STD_NAMESPACE)
     using std::ifstream;
     using std::ostringstream;
-#endif
 
     ifstream resultFile(c_str(resultFileName));
 
-#if !defined(XALAN_CLASSIC_IOSTREAMS)
     ostringstream fileOutputStream;
-#endif
 
     char ch; 
 
     while(resultFile.get(ch))
     {
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-        resultStream.push_back(ch);
-#else
         fileOutputStream.put(ch);
-#endif
     }
 
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-    resultStream.push_back('\0');
-#else
     resultStream.str(fileOutputStream.str());
-#endif
 }
 
 
@@ -144,10 +126,8 @@
     CharVectorType sourceFileName;
     sourceFile.transcode(sourceFileName);
 
-#if !defined(XALAN_NO_STD_NAMESPACE)
     using std::ifstream;
     using std::ofstream;
-#endif
 
     ifstream sourceFileStream(c_str(sourceFileName));
 
diff --git a/Tests/Performance/Utils.hpp b/Tests/Performance/Utils.hpp
index ac85e48..23b14ed 100644
--- a/Tests/Performance/Utils.hpp
+++ b/Tests/Performance/Utils.hpp
@@ -25,11 +25,7 @@
 
 
 
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <fstream.h>
-#else
 #include <fstream>
-#endif
 
 
 #include <xalanc/Harness/XalanFileUtility.hpp>
@@ -40,9 +36,9 @@
 
 
 
-XALAN_USING_XALAN(XalanDOMChar)
-XALAN_USING_XALAN(XalanDOMString)
-XALAN_USING_XALAN(XalanFileUtility)
+using xalanc::XalanDOMChar;
+using xalanc::XalanDOMString;
+using xalanc::XalanFileUtility;
 
 
 
@@ -73,11 +69,7 @@
 void
 fileToStream(
             const XalanDOMString&                           fileName,
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-            XALAN_CPP_NAMESPACE_QUALIFIER CharVectorType&   resultStream);
-#else
-            XALAN_STD_QUALIFIER istringstream&              resultStream);
-#endif
+            std::istringstream&              resultStream);
 
 
 /**
diff --git a/Tests/Performance/XalanCProcessor.cpp b/Tests/Performance/XalanCProcessor.cpp
index fdca231..d0dad09 100644
--- a/Tests/Performance/XalanCProcessor.cpp
+++ b/Tests/Performance/XalanCProcessor.cpp
@@ -21,11 +21,7 @@
 
 
 
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <iostream.h>
-#else
 #include <iostream>
-#endif
 
 
 
@@ -38,9 +34,9 @@
 
 
 
-XALAN_USING_XERCES(XMLPlatformUtils)
-XALAN_USING_XALAN(XalanTransformer)
-XALAN_USING_XALAN(XalanMemMgrs)
+using xercesc::XMLPlatformUtils;
+using xalanc::XalanTransformer;
+using xalanc::XalanMemMgrs;
 
 
 typedef XalanCProcessor::CompiledStylesheetType CompiledStylesheetType;
diff --git a/Tests/Performance/XalanCProcessor.hpp b/Tests/Performance/XalanCProcessor.hpp
index 0b2463d..e2023d2 100644
--- a/Tests/Performance/XalanCProcessor.hpp
+++ b/Tests/Performance/XalanCProcessor.hpp
@@ -23,11 +23,7 @@
 
 
 
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <strstream.h>
-#else
 #include <sstream>
-#endif
 
 
 
@@ -66,8 +62,8 @@
 
 
 
-XALAN_USING_XERCES(DOMDocument);
-XALAN_CPP_NAMESPACE_USE
+using xercesc::DOMDocument;;
+using namespace xalanc;
 
 
 
@@ -351,11 +347,7 @@
 
         void reset() { stringstream.flush();}
 
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-        ostrstream                          stringstream;
-#else
-        XALAN_STD_QUALIFIER ostringstream   stringstream;
-#endif
+        std::ostringstream   stringstream;
     };
 
     StreamResult    m_streamResult;
diff --git a/Tests/Performance/perf.cpp b/Tests/Performance/perf.cpp
index 690b166..a00d32a 100644
--- a/Tests/Performance/perf.cpp
+++ b/Tests/Performance/perf.cpp
@@ -22,17 +22,11 @@
 
 
 #include <cstring>
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <iostream.h>
-#else
 #include <iostream>
-#endif
 
 
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
 using std::strcmp;
-#endif
 
 
 
@@ -61,19 +55,19 @@
 
 
 
-XALAN_USING_STD(cout);
-XALAN_USING_STD(cerr);
-XALAN_USING_STD(endl);
+using std::cout;;
+using std::cerr;;
+using std::endl;;
 
 
-XALAN_USING_XERCES(XMLPlatformUtils)
+using xercesc::XMLPlatformUtils;
 
 
 
-XALAN_USING_XALAN(XalanTransformer)
-XALAN_USING_XALAN(XalanDOMString)
-XALAN_USING_XALAN(XalanXMLFileReporter)
-XALAN_USING_XALAN(XalanFileUtility)
+using xalanc::XalanTransformer;
+using xalanc::XalanDOMString;
+using xalanc::XalanXMLFileReporter;
+using xalanc::XalanFileUtility;
 
 
 
diff --git a/Tests/Threads/ThreadTest.cpp b/Tests/Threads/ThreadTest.cpp
index af9283e..d5183ab 100644
--- a/Tests/Threads/ThreadTest.cpp
+++ b/Tests/Threads/ThreadTest.cpp
@@ -32,11 +32,7 @@
 
 
 
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <iostream.h>
-#else
 #include <iostream>
-#endif
 
 
 
@@ -65,7 +61,7 @@
 #include <csignal>
 
 // This is a workaround for a Tru64 compiler bug...
-#if defined(XALAN_STRICT_ANSI_HEADERS) && defined(TRU64)
+#if defined(TRU64)
 #include <csetjmp>
 typedef long sigjmp_buf[_JBLEN];
 #endif
@@ -78,17 +74,15 @@
 
 
 
-XALAN_USING_STD(cerr)
-XALAN_USING_STD(cout)
-XALAN_USING_STD(endl)
+using std::cerr;
+using std::cout;
+using std::endl;
 
 
     
-#if defined(XALAN_STRICT_ANSI_HEADERS)
-    using std::atoi;
-    using std::signal;
-    using std::strcmp;
-#endif
+using std::atoi;
+using std::signal;
+using std::strcmp;
 
     
     
@@ -99,8 +93,8 @@
 
 
 
-typedef XERCES_CPP_NAMESPACE_QUALIFIER XMLMutex         XMLMutexType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER XMLMutexLock     XMLMutexLockType;
+typedef xercesc::XMLMutex         XMLMutexType;
+typedef xercesc::XMLMutexLock     XMLMutexLockType;
 
 
 
@@ -199,10 +193,10 @@
 
 
 
-XALAN_USING_XALAN(XalanCompiledStylesheet)
-XALAN_USING_XALAN(XalanDOMChar)
-XALAN_USING_XALAN(XalanDOMString)
-XALAN_USING_XALAN(XalanParsedSource)
+using xalanc::XalanCompiledStylesheet;
+using xalanc::XalanDOMChar;
+using xalanc::XalanDOMString;
+using xalanc::XalanParsedSource;
 
 
 
@@ -281,15 +275,15 @@
 
     theInfo->m_counter->increment();
 
-    XALAN_USING_XALAN(MemoryManager)
-    XALAN_USING_XALAN(XalanMemMgrs)
+    using xalanc::MemoryManager;
+    using xalanc::XalanMemMgrs;
 
     MemoryManager& theManager = XalanMemMgrs::getDefaultXercesMemMgr();
 
     try
     {
-        XALAN_USING_XALAN(NumberToDOMString)
-        XALAN_USING_XALAN(XalanTransformer)
+        using xalanc::NumberToDOMString;
+        using xalanc::XalanTransformer;
 
         // Our input file.  The assumption is that the executable will be run
         // from same directory as the input files.
@@ -303,7 +297,7 @@
         // Create a transformer...
         XalanTransformer    theTransformer(theManager);
 
-        XALAN_USING_XALAN(XSLTResultTarget)
+        using xalanc::XSLTResultTarget;
 
         // Do the transform...
         theTransformer.transform(*glbParsedSource, glbCompiledStylesheet, XSLTResultTarget( theOutputFile, theManager));
@@ -350,14 +344,14 @@
 
     try
     {
-        XALAN_USING_XALAN(NumberToDOMString)
-        XALAN_USING_XALAN(XalanTransformer)
+        using xalanc::NumberToDOMString;
+        using xalanc::XalanTransformer;
 
         // Our input file.  The assumption is that the executable will be run
         // from same directory as the input files.
 
-        XALAN_USING_XALAN(MemoryManager)
-        XALAN_USING_XALAN(XalanMemMgrs)
+        using xalanc::MemoryManager;
+        using xalanc::XalanMemMgrs;
 
         MemoryManager& theManager = XalanMemMgrs::getDefaultXercesMemMgr();
 
@@ -372,7 +366,7 @@
 
         assert(theSourceFileName != 0 && theStylesheetFileName != 0);
 
-        XALAN_USING_XALAN(XSLTResultTarget)
+        using xalanc::XSLTResultTarget;
 
         // Do the transform...
         theTransformer.transform(
@@ -580,7 +574,7 @@
 
     cout << endl << "Starting " << theThreadCount << " threads." << endl;
 
-    XALAN_USING_XALAN(XalanArrayAutoPtr)
+    using xalanc::XalanArrayAutoPtr;
 
     XalanArrayAutoPtr<ThreadInfo>   theThreadInfo(new ThreadInfo[theThreadCount]);
 
@@ -706,9 +700,9 @@
         {
             try
             {
-                XALAN_USING_XERCES(XMLPlatformUtils)
+                using xercesc::XMLPlatformUtils;
 
-                XALAN_USING_XALAN(XalanTransformer)
+                using xalanc::XalanTransformer;
 
                 // Initialize Xerces...
                 XMLPlatformUtils::Initialize();
@@ -723,8 +717,8 @@
                     // pre-parsed source document.  Note that we can't let the individual
                     // threads use this as a factory without serializing access to it, but
                     // we can share the stylesheet and source document.
-                    XALAN_USING_XALAN(MemoryManager)
-                    XALAN_USING_XALAN(XalanMemMgrs)
+                    using xalanc::MemoryManager;
+                    using xalanc::XalanMemMgrs;
 
                     MemoryManager& theManager = XalanMemMgrs::getDefaultXercesMemMgr();
 
diff --git a/Tests/Transformer/TestXalanTransformer.cpp b/Tests/Transformer/TestXalanTransformer.cpp
index a436649..d9155fa 100644
--- a/Tests/Transformer/TestXalanTransformer.cpp
+++ b/Tests/Transformer/TestXalanTransformer.cpp
@@ -37,19 +37,14 @@
 
 #include <xalanc/XalanTransformer/XalanTransformer.hpp>
 
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <iostream.h>
-#include <strstream.h>
-#else
 #include <iostream>
 #include <strstream>
-#endif
 
 
-XALAN_USING_STD(cerr)
-XALAN_USING_STD(cout)
-XALAN_USING_STD(endl)
-XALAN_USING_STD(ostrstream)
+using std::cerr;
+using std::cout;
+using std::endl;
+using std::ostrstream;
 
 #else
 
@@ -96,8 +91,8 @@
 
 #if defined(TEST_XALAN_CPP)
 
-    XALAN_USING_XALAN(XalanTransformer)
-    XALAN_USING_XALAN(XalanCompiledStylesheet)
+    using xalanc::XalanTransformer;
+    using xalanc::XalanCompiledStylesheet;
 
     XalanTransformer    xalan;
 
@@ -322,9 +317,9 @@
 #if defined(TEST_XALAN_CPP)
     try
     {
-        XALAN_USING_XERCES(XMLPlatformUtils)
+        using xercesc::XMLPlatformUtils;
 
-        XALAN_USING_XALAN(XalanTransformer)
+        using xalanc::XalanTransformer;
 
         // Call the static initializers for xerces and xalan, and create a transformer
         //
diff --git a/samples/CompileStylesheet/CompileStylesheet.cpp b/samples/CompileStylesheet/CompileStylesheet.cpp
index e2d5941..9ec7796 100644
--- a/samples/CompileStylesheet/CompileStylesheet.cpp
+++ b/samples/CompileStylesheet/CompileStylesheet.cpp
@@ -24,15 +24,9 @@
 
 
 
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <fstream.h>
-#include <iostream.h>
-#include <strstream.h>
-#else
 #include <fstream>
 #include <iostream>
 #include <strstream>
-#endif
 
 
 
@@ -48,9 +42,9 @@
             int     argc,
             char*   /* argv */[])
 {
-    XALAN_USING_STD(cerr)
-    XALAN_USING_STD(endl)
-    XALAN_USING_STD(ostrstream)
+    using std::cerr;
+    using std::endl;
+    using std::ostrstream;
 
     int theResult = 0;
 
@@ -62,11 +56,11 @@
     }
     else
     {
-        XALAN_USING_XERCES(XMLPlatformUtils)
-        XALAN_USING_XERCES(XMLException)
+        using xercesc::XMLPlatformUtils;
+        using xercesc::XMLException;
 
-        XALAN_USING_XALAN(XalanTransformer)
-        XALAN_USING_XALAN(XalanCompiledStylesheet)
+        using xalanc::XalanTransformer;
+        using xalanc::XalanCompiledStylesheet;
 
         // Call the static initializer for Xerces.
         try
diff --git a/samples/DocumentBuilder/DocumentBuilder.cpp b/samples/DocumentBuilder/DocumentBuilder.cpp
index f2b5bca..9dc498a 100644
--- a/samples/DocumentBuilder/DocumentBuilder.cpp
+++ b/samples/DocumentBuilder/DocumentBuilder.cpp
@@ -20,11 +20,7 @@
 
 
 
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <iostream.h>
-#else
 #include <iostream>
-#endif
 
 
 
@@ -42,18 +38,18 @@
 
 
 
-XALAN_USING_XALAN(XalanDocumentBuilder)
-XALAN_USING_XALAN(XalanTransformer)
+using xalanc::XalanDocumentBuilder;
+using xalanc::XalanTransformer;
 
 
 
 void
 BuildDocument(XalanDocumentBuilder*     theBuilder)
 {
-    XALAN_USING_XERCES(ContentHandler)
-    XALAN_USING_XALAN(AttributesImpl)
-    XALAN_USING_XALAN(XalanDOMChar)
-    XALAN_USING_XALAN(XalanDOMString)
+    using xercesc::ContentHandler;
+    using xalanc::AttributesImpl;
+    using xalanc::XalanDOMChar;
+    using xalanc::XalanDOMString;
 
     // Get the SAX2 ContentHandler from the builder...
     ContentHandler* const   theContentHandler = theBuilder->getContentHandler();
@@ -182,8 +178,8 @@
           int       argc,
           char*     /* argv */ [])
 {
-    XALAN_USING_STD(cerr)
-    XALAN_USING_STD(endl)
+    using std::cerr;
+    using std::endl;
 
     int theResult = 0;
 
@@ -195,8 +191,8 @@
     }
     else
     {
-        XALAN_USING_XERCES(XMLPlatformUtils)
-        XALAN_USING_XERCES(XMLException)
+        using xercesc::XMLPlatformUtils;
+        using xercesc::XMLException;
 
         // Call the static initializer for Xerces.
         try
diff --git a/samples/EntityResolver/EntityResolver.cpp b/samples/EntityResolver/EntityResolver.cpp
index 8996ef6..0d9d228 100644
--- a/samples/EntityResolver/EntityResolver.cpp
+++ b/samples/EntityResolver/EntityResolver.cpp
@@ -21,11 +21,7 @@
 
 
 #include <cassert>
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <iostream.h>
-#else
 #include <iostream>
-#endif
 
 
 
@@ -41,14 +37,14 @@
 
 
 
-XALAN_USING_XERCES(EntityResolver)
-XALAN_USING_XERCES(InputSource)
-XALAN_USING_XERCES(MemBufInputSource)
-XALAN_USING_XALAN(MemoryManager)
-XALAN_USING_XERCES(XMLEntityResolver)
-XALAN_USING_XERCES(XMLResourceIdentifier)
-XALAN_USING_XALAN(XalanDOMString)
-XALAN_USING_XALAN(XalanTransformer)
+using xercesc::EntityResolver;
+using xercesc::InputSource;
+using xercesc::MemBufInputSource;
+using xalanc::MemoryManager;
+using xercesc::XMLEntityResolver;
+using xercesc::XMLResourceIdentifier;
+using xalanc::XalanDOMString;
+using xalanc::XalanTransformer;
 
 
 
@@ -214,8 +210,8 @@
             const char*             theOutputFile,
             bool                    fUseDOM)
 {
-    XALAN_USING_XALAN(XalanCompiledStylesheet)
-    XALAN_USING_XALAN(XalanParsedSource)
+    using xalanc::XalanCompiledStylesheet;
+    using xalanc::XalanParsedSource;
 
     typedef XalanTransformer::EnsureDestroyCompiledStylesheet   EnsureDestroyCompiledStylesheet;
     typedef XalanTransformer::EnsureDestroyParsedSource         EnsureDestroyParsedSource;
@@ -302,8 +298,8 @@
             int     argc,
             char*   /* argv */[])
 {
-    XALAN_USING_STD(cerr)
-    XALAN_USING_STD(endl)
+    using std::cerr;
+    using std::endl;
 
     int theResult = 0;
 
@@ -315,8 +311,8 @@
     }
     else
     {
-        XALAN_USING_XERCES(XMLPlatformUtils)
-        XALAN_USING_XERCES(XMLException)
+        using xercesc::XMLPlatformUtils;
+        using xercesc::XMLException;
 
         // Call the static initializer for Xerces.
         try
diff --git a/samples/ExternalFunction/ExternalFunction.cpp b/samples/ExternalFunction/ExternalFunction.cpp
index cd70c84..5b758ca 100644
--- a/samples/ExternalFunction/ExternalFunction.cpp
+++ b/samples/ExternalFunction/ExternalFunction.cpp
@@ -23,11 +23,7 @@
 #include <cmath>
 #include <cstring>
 #include <ctime>
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <iostream.h>
-#else
 #include <iostream>
-#endif
 
 
 
@@ -44,14 +40,14 @@
 
 
 
-XALAN_USING_XALAN(Function)
-XALAN_USING_XALAN(Locator)
-XALAN_USING_XALAN(XPathExecutionContext)
-XALAN_USING_XALAN(XalanDOMString)
-XALAN_USING_XALAN(XalanNode)
-XALAN_USING_XALAN(XObjectPtr)
-XALAN_USING_XALAN(MemoryManager)
-XALAN_USING_XALAN(XalanCopyConstruct)
+using xalanc::Function;
+using xalanc::Locator;
+using xalanc::XPathExecutionContext;
+using xalanc::XalanDOMString;
+using xalanc::XalanNode;
+using xalanc::XObjectPtr;
+using xalanc::MemoryManager;
+using xalanc::XalanCopyConstruct;
 
 // This class defines a function that will return the square root
 // of its argument.
@@ -87,7 +83,6 @@
 
         assert(args[0].null() == false);    
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
         using std::sqrt;
 #endif
 
@@ -101,11 +96,7 @@
      *
      * @return pointer to the new object
      */
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionSquareRoot*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -174,9 +165,7 @@
 
         assert(args[0].null() == false);    
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
         using std::pow;
-#endif
 
         return executionContext.getXObjectFactory().createNumber(pow(args[0]->num(executionContext), 3));
     }
@@ -188,11 +177,7 @@
      *
      * @return pointer to the new object
      */
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionCube*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -257,13 +242,11 @@
             generalError(executionContext, context, locator);
         }
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
         using std::time;
         using std::time_t;
         using std::localtime;
         using std::asctime;
         using std::strlen;
-#endif
 
         time_t  theTime;
 
@@ -286,11 +269,7 @@
      *
      * @return pointer to the new object
      */
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionAsctime*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -330,8 +309,8 @@
             int     argc,
             char*   /* argv */[])
 {
-    XALAN_USING_STD(cerr)
-    XALAN_USING_STD(endl)
+    using std::cerr;
+    using std::endl;
 
     int theResult = 0;
 
@@ -343,10 +322,10 @@
     }
     else
     {
-        XALAN_USING_XERCES(XMLPlatformUtils)
-        XALAN_USING_XERCES(XMLException)
+        using xercesc::XMLPlatformUtils;
+        using xercesc::XMLException;
 
-        XALAN_USING_XALAN(XalanTransformer)
+        using xalanc::XalanTransformer;
 
         // Call the static initializer for Xerces.
         try
diff --git a/samples/ParsedSourceWrappers/ParsedSourceWrappers.cpp b/samples/ParsedSourceWrappers/ParsedSourceWrappers.cpp
index 8414bc1..20e96cd 100644
--- a/samples/ParsedSourceWrappers/ParsedSourceWrappers.cpp
+++ b/samples/ParsedSourceWrappers/ParsedSourceWrappers.cpp
@@ -21,11 +21,7 @@
 
 
 #include <cassert>
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <iostream.h>
-#else
 #include <iostream>
-#endif
 
 
 
@@ -59,11 +55,11 @@
 
 
 
-XALAN_USING_XALAN(XalanCompiledStylesheet)
-XALAN_USING_XALAN(XalanDOMString)
-XALAN_USING_XALAN(XalanTransformer)
-XALAN_USING_XALAN(XSLTInputSource)
-XALAN_USING_XALAN(XSLTResultTarget)
+using xalanc::XalanCompiledStylesheet;
+using xalanc::XalanDOMString;
+using xalanc::XalanTransformer;
+using xalanc::XSLTInputSource;
+using xalanc::XSLTResultTarget;
 
 
 
@@ -74,11 +70,11 @@
             const XalanCompiledStylesheet*  theStylesheet,
             const XSLTResultTarget&         theResultTarget)
 {
-    XALAN_USING_XERCES(URLInputSource)
+    using xercesc::URLInputSource;
 
-    XALAN_USING_XALAN(XercesParserLiaison)
-    XALAN_USING_XALAN(XercesDOMSupport)
-    XALAN_USING_XALAN(XercesDOMWrapperParsedSource)
+    using xalanc::XercesParserLiaison;
+    using xalanc::XercesDOMSupport;
+    using xalanc::XercesDOMWrapperParsedSource;
 
 
     const URLInputSource    theInputSource(theURI.c_str());
@@ -111,13 +107,13 @@
             const XalanCompiledStylesheet*  theStylesheet,
             const XSLTResultTarget&         theResultTarget)
 {
-    XALAN_USING_XERCES(URLInputSource)
+    using xercesc::URLInputSource;
 
-    XALAN_USING_XALAN(XalanDocument)
-    XALAN_USING_XALAN(XalanSourceTreeDocument)
-    XALAN_USING_XALAN(XalanSourceTreeParserLiaison)
-    XALAN_USING_XALAN(XalanSourceTreeDOMSupport)
-    XALAN_USING_XALAN(XalanSourceTreeWrapperParsedSource)
+    using xalanc::XalanDocument;
+    using xalanc::XalanSourceTreeDocument;
+    using xalanc::XalanSourceTreeParserLiaison;
+    using xalanc::XalanSourceTreeDOMSupport;
+    using xalanc::XalanSourceTreeWrapperParsedSource;
 
 
     const URLInputSource            theInputSource(theURI.c_str());
@@ -143,9 +139,9 @@
 int
 transform()
 {
-    XALAN_USING_STD(cerr)
-    XALAN_USING_STD(cout)
-    XALAN_USING_STD(endl)
+    using std::cerr;
+    using std::cout;
+    using std::endl;
 
     int     theResult = -1;
 
@@ -167,7 +163,7 @@
         }
         else
         {
-            XALAN_USING_XALAN(URISupport)
+            using xalanc::URISupport;
 
             assert(theStylesheet != 0);
 
@@ -210,8 +206,8 @@
             int      argc,
             char*   /* argv */[])
 {
-    XALAN_USING_STD(cerr)
-    XALAN_USING_STD(endl)
+    using std::cerr;
+    using std::endl;
 
     int     theResult = -1;
 
@@ -223,7 +219,7 @@
     {
         try
         {
-            XALAN_USING_XERCES(XMLPlatformUtils)
+            using xercesc::XMLPlatformUtils;
 
             // Call the static initializer for Xerces.
             XMLPlatformUtils::Initialize();
diff --git a/samples/SerializeNodeSet/SerializeNodeSet.cpp b/samples/SerializeNodeSet/SerializeNodeSet.cpp
index 1b6057a..50ca244 100644
--- a/samples/SerializeNodeSet/SerializeNodeSet.cpp
+++ b/samples/SerializeNodeSet/SerializeNodeSet.cpp
@@ -22,11 +22,7 @@
 
 #include <cassert>
 
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <iostream.h>
-#else
 #include <iostream>
-#endif
 
 
 
@@ -68,9 +64,9 @@
             int     argc,
             char*   argv[])
 {
-    XALAN_USING_STD(cerr)
-    XALAN_USING_STD(cout)
-    XALAN_USING_STD(endl)
+    using std::cerr;
+    using std::cout;
+    using std::endl;
 
     int     theResult = 0;
 
@@ -84,9 +80,9 @@
     {
         try
         {
-            XALAN_USING_XERCES(XMLPlatformUtils)
+            using xercesc::XMLPlatformUtils;
 
-            XALAN_USING_XALAN(XPathEvaluator)
+            using xalanc::XPathEvaluator;
 
 
             XMLPlatformUtils::Initialize();
@@ -94,16 +90,16 @@
             XPathEvaluator::initialize();
 
             {
-                XALAN_USING_XERCES(LocalFileInputSource)
+                using xercesc::LocalFileInputSource;
 
-                XALAN_USING_XALAN(NodeRefList)
-                XALAN_USING_XALAN(XalanDocument)
-                XALAN_USING_XALAN(XalanDOMString)
-                XALAN_USING_XALAN(XalanNode)
-                XALAN_USING_XALAN(XalanSourceTreeInit)
-                XALAN_USING_XALAN(XMLSupportInit)
-                XALAN_USING_XALAN(XalanSourceTreeDOMSupport)
-                XALAN_USING_XALAN(XalanSourceTreeParserLiaison)
+                using xalanc::NodeRefList;
+                using xalanc::XalanDocument;
+                using xalanc::XalanDOMString;
+                using xalanc::XalanNode;
+                using xalanc::XalanSourceTreeInit;
+                using xalanc::XMLSupportInit;
+                using xalanc::XalanSourceTreeDOMSupport;
+                using xalanc::XalanSourceTreeParserLiaison;
 
 
                 // Initialize the XalanSourceTree subsystem...
@@ -173,10 +169,10 @@
                     }
                     else
                     {
-                        XALAN_USING_XALAN(XalanStdOutputStream)
-                        XALAN_USING_XALAN(XalanOutputStreamPrintWriter)
-                        XALAN_USING_XALAN(FormatterToXML)
-                        XALAN_USING_XALAN(FormatterTreeWalker)
+                        using xalanc::XalanStdOutputStream;
+                        using xalanc::XalanOutputStreamPrintWriter;
+                        using xalanc::FormatterToXML;
+                        using xalanc::FormatterTreeWalker;
 
                         // OK, we're going to serialize the nodes that were
                         // found.  We should really check to make sure the
diff --git a/samples/SimpleTransform/SimpleTransform.cpp b/samples/SimpleTransform/SimpleTransform.cpp
index d7b5677..dee76e2 100644
--- a/samples/SimpleTransform/SimpleTransform.cpp
+++ b/samples/SimpleTransform/SimpleTransform.cpp
@@ -20,11 +20,7 @@
 
 
 
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <iostream.h>
-#else
 #include <iostream>
-#endif
 
 
 
@@ -76,8 +72,8 @@
             int     argc,
             char*   /* argv */[])
 {
-    XALAN_USING_STD(cerr)
-    XALAN_USING_STD(endl)
+    using std::cerr;
+    using std::endl;
 
     int theResult = -1;
 
@@ -91,11 +87,11 @@
     {
         try
         {
-            XALAN_USING_XERCES(XMLPlatformUtils)
+            using xercesc::XMLPlatformUtils;
             
-            XALAN_USING_XERCES(XMLUni)
+            using xercesc::XMLUni;
 
-            XALAN_USING_XALAN(XalanTransformer)
+            using xalanc::XalanTransformer;
 
             XalanMemoryManagerImpl memoryManager;
 
diff --git a/samples/SimpleTransform/XalanMemoryManagerImpl.hpp b/samples/SimpleTransform/XalanMemoryManagerImpl.hpp
index 8dd05b5..4766a1e 100644
--- a/samples/SimpleTransform/XalanMemoryManagerImpl.hpp
+++ b/samples/SimpleTransform/XalanMemoryManagerImpl.hpp
@@ -41,9 +41,9 @@
 #include <stdlib.h>
 
 
-XALAN_USING_XERCES(MemoryManager)
+using xercesc::MemoryManager;
 
-class XalanMemoryManagerImpl : public XALAN_CPP_NAMESPACE_QUALIFIER XalanMemoryManager
+class XalanMemoryManagerImpl : public xalanc::XalanMemoryManager
 {
 public:
 
@@ -58,7 +58,7 @@
 
         if (m_heapHandle == NULL)
         {
-            XALAN_USING_STD(runtime_error)
+            using std::runtime_error;
 
             char buffer[20];
             buffer[0] = 0;
@@ -80,7 +80,7 @@
 
         if (ptr == 0)
         {
-            XALAN_USING_XERCES(OutOfMemoryException)
+            using xercesc::OutOfMemoryException;
 
             throw OutOfMemoryException();
         }
@@ -96,7 +96,7 @@
                         0,              //DWORD dwFlags,
                         pDataPointer ) )//*LPVOID lpMem 
         {
-            XALAN_USING_XERCES(OutOfMemoryException)
+            using xercesc::OutOfMemoryException;
 
             throw OutOfMemoryException();
         }
@@ -113,7 +113,7 @@
     {
         if (0 == HeapDestroy(m_heapHandle))
         {
-            XALAN_USING_STD(runtime_error)
+            using std::runtime_error;
 
             char buffer[20];
             buffer[0] = 0;
@@ -138,11 +138,11 @@
 
 #else
 
-class XalanMemoryManagerImpl : public XALAN_CPP_NAMESPACE_QUALIFIER XalanMemoryManager
+class XalanMemoryManagerImpl : public xalanc::XalanMemoryManager
 {
 public:
 
-    typedef XALAN_CPP_NAMESPACE_QUALIFIER XalanSize_t   XalanSize_t;
+    typedef xalanc::XalanSize_t   XalanSize_t;
 
     virtual
     ~XalanMemoryManagerImpl()
@@ -165,7 +165,7 @@
         {
         }
 
-        XALAN_USING_XERCES(OutOfMemoryException)
+        using xercesc::OutOfMemoryException;
 
         throw OutOfMemoryException();
     }   
diff --git a/samples/SimpleXPathAPI/SimpleXPathAPI.cpp b/samples/SimpleXPathAPI/SimpleXPathAPI.cpp
index a76429e..ab1f46c 100644
--- a/samples/SimpleXPathAPI/SimpleXPathAPI.cpp
+++ b/samples/SimpleXPathAPI/SimpleXPathAPI.cpp
@@ -23,11 +23,7 @@
 #include <cassert>
 
 
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <iostream.h>
-#else
 #include <iostream>
-#endif
 
 
 
@@ -60,9 +56,9 @@
             int     argc,
             char*   argv[])
 {
-    XALAN_USING_STD(cerr)
-    XALAN_USING_STD(cout)
-    XALAN_USING_STD(endl)
+    using std::cerr;
+    using std::cout;
+    using std::endl;
 
     int     theResult = 0;
 
@@ -74,13 +70,13 @@
     }
     else
     {
-        XALAN_USING_XALAN(XSLException)
+        using xalanc::XSLException;
 
         try
         {
-            XALAN_USING_XERCES(XMLPlatformUtils)
+            using xercesc::XMLPlatformUtils;
 
-            XALAN_USING_XALAN(XPathEvaluator)
+            using xalanc::XPathEvaluator;
 
 
             XMLPlatformUtils::Initialize();
@@ -88,16 +84,16 @@
             XPathEvaluator::initialize();
 
             {
-                XALAN_USING_XERCES(LocalFileInputSource)
+                using xercesc::LocalFileInputSource;
 
-                XALAN_USING_XALAN(XalanDocument)
-                XALAN_USING_XALAN(XalanDocumentPrefixResolver)
-                XALAN_USING_XALAN(XalanDOMString)
-                XALAN_USING_XALAN(XalanNode)
-                XALAN_USING_XALAN(XalanSourceTreeInit)
-                XALAN_USING_XALAN(XalanSourceTreeDOMSupport)
-                XALAN_USING_XALAN(XalanSourceTreeParserLiaison)
-                XALAN_USING_XALAN(XObjectPtr)
+                using xalanc::XalanDocument;
+                using xalanc::XalanDocumentPrefixResolver;
+                using xalanc::XalanDOMString;
+                using xalanc::XalanNode;
+                using xalanc::XalanSourceTreeInit;
+                using xalanc::XalanSourceTreeDOMSupport;
+                using xalanc::XalanSourceTreeParserLiaison;
+                using xalanc::XObjectPtr;
 
                 // Initialize the XalanSourceTree subsystem...
                 XalanSourceTreeInit     theSourceTreeInit;
@@ -167,7 +163,7 @@
         }
         catch(const XSLException&   theException)
         {
-            XALAN_USING_XALAN(XalanDOMString)
+            using xalanc::XalanDOMString;
 
             XalanDOMString  theError;
 
diff --git a/samples/StreamTransform/StreamTransform.cpp b/samples/StreamTransform/StreamTransform.cpp
index 68015d2..cf8d056 100644
--- a/samples/StreamTransform/StreamTransform.cpp
+++ b/samples/StreamTransform/StreamTransform.cpp
@@ -21,15 +21,9 @@
 
 
 #include <cstring>
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <iostream.h>
-#include <strstream.h>
-#include <fstream.h>
-#else
 #include <iostream>
 #include <strstream>
 #include <fstream>
-#endif
 
 
 
@@ -46,16 +40,14 @@
             int     argc,
             char*   /* argv */[])
 {
-    XALAN_USING_STD(cerr)
-    XALAN_USING_STD(cout)
-    XALAN_USING_STD(endl)
-    XALAN_USING_STD(istrstream)
-    XALAN_USING_STD(ofstream)
-    XALAN_USING_STD(ostrstream)
+    using std::cerr;
+    using std::cout;
+    using std::endl;
+    using std::istrstream;
+    using std::ofstream;
+    using std::ostrstream;
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
     using std::strlen;
-#endif
 
     int theResult = -1;
 
@@ -69,9 +61,9 @@
     {
         try
         {
-            XALAN_USING_XERCES(XMLPlatformUtils)
+            using xercesc::XMLPlatformUtils;
 
-            XALAN_USING_XALAN(XalanTransformer)
+            using xalanc::XalanTransformer;
 
 
             // Call the static initializer for Xerces.
@@ -118,8 +110,8 @@
                 istrstream  theXMLStream(theInputDocument, strlen(theInputDocument));
                 istrstream  theXSLStream(theStylesheet, strlen(theStylesheet));
 
-                XALAN_USING_XALAN(XalanDOMString)
-                XALAN_USING_XALAN(XSLTInputSource)
+                using xalanc::XalanDOMString;
+                using xalanc::XSLTInputSource;
 
                 XSLTInputSource     inputSource(&theXSLStream);
 
diff --git a/samples/ThreadSafe/ThreadSafe.cpp b/samples/ThreadSafe/ThreadSafe.cpp
index bf647c8..ebce1a9 100644
--- a/samples/ThreadSafe/ThreadSafe.cpp
+++ b/samples/ThreadSafe/ThreadSafe.cpp
@@ -24,15 +24,9 @@
 #include <ctime>
 #include <vector>
 
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <fstream.h>
-#include <iostream.h>
-#include <strstream.h>
-#else
 #include <fstream>
 #include <iostream>
 #include <strstream>
-#endif
 
 
 
@@ -58,10 +52,8 @@
 
 // This is a workaround for a Tru64 compiler bug...
 #if defined(TRU64)
-#if  defined(XALAN_STRICT_ANSI_HEADERS)
 #include <csetjmp>
 typedef long sigjmp_buf[_JBLEN];
-#endif
 extern "C" void  *theThread(void   *param);
 #endif
 
@@ -74,28 +66,26 @@
 //error Unsupported Platform!
 #endif
 
-#if  defined(XALAN_STRICT_ANSI_HEADERS)
-    using std::perror;
-#endif
+using std::perror;
 
 #define NUM_THREADS 10
 
 
 
 
-XALAN_USING_STD(cerr)
-XALAN_USING_STD(cout)
-XALAN_USING_STD(endl)
-XALAN_USING_STD(ostrstream)
+using std::cerr;
+using std::cout;
+using std::endl;
+using std::ostrstream;
 
 
 
-XALAN_USING_XALAN(XalanCompiledStylesheet)
-XALAN_USING_XALAN(XalanDOMString)
-XALAN_USING_XALAN(XalanParsedSource)
-XALAN_USING_XALAN(XalanTransformer)
-XALAN_USING_XALAN(XSLTInputSource)
-XALAN_USING_XALAN(XSLTResultTarget)
+using xalanc::XalanCompiledStylesheet;
+using xalanc::XalanDOMString;
+using xalanc::XalanParsedSource;
+using xalanc::XalanTransformer;
+using xalanc::XSLTInputSource;
+using xalanc::XSLTResultTarget;
 
 
 
@@ -203,7 +193,7 @@
     size_t   i = 0;
     cout << endl << "Clock before starting threads: " << clock() << endl;
 
-    XALAN_USING_STD(vector)
+    using std::vector;
 
     vector<theThreadType>   hThreads;
 
@@ -293,7 +283,7 @@
     {
         try
         {
-            XALAN_USING_XERCES(XMLPlatformUtils)
+            using xercesc::XMLPlatformUtils;
 
             // Call the static initializer for Xerces.
             XMLPlatformUtils::Initialize();
diff --git a/samples/TraceListen/TraceListen.cpp b/samples/TraceListen/TraceListen.cpp
index ebeb605..3a24378 100644
--- a/samples/TraceListen/TraceListen.cpp
+++ b/samples/TraceListen/TraceListen.cpp
@@ -21,13 +21,8 @@
 
 
 #include <cstring>
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <fstream.h>
-#include <iostream.h>
-#else
 #include <fstream>
 #include <iostream>
-#endif
 
 
 
@@ -54,12 +49,10 @@
             int     argc,
             char*   argv[])
 {
-    XALAN_USING_STD(cerr)
-    XALAN_USING_STD(endl)
+    using std::cerr;
+    using std::endl;
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
     using std::strcmp;
-#endif
 
     // TraceListener flags...
     bool    traceTemplates = false;
@@ -103,9 +96,9 @@
  
     try
     {
-        XALAN_USING_XERCES(XMLPlatformUtils)
+        using xercesc::XMLPlatformUtils;
 
-        XALAN_USING_XALAN(XalanTransformer)
+        using xalanc::XalanTransformer;
 
         // Initialize Xerces...
         XMLPlatformUtils::Initialize();
@@ -114,12 +107,12 @@
         XalanTransformer::initialize();
 
         {
-            XALAN_USING_XALAN(TraceListenerDefault)
-            XALAN_USING_XALAN(XalanDOMString)
-            XALAN_USING_XALAN(XalanOutputStreamPrintWriter)
-            XALAN_USING_XALAN(XalanStdOutputStream)
-            XALAN_USING_XALAN(XSLTInputSource)
-            XALAN_USING_XALAN(XSLTResultTarget)
+            using xalanc::TraceListenerDefault;
+            using xalanc::XalanDOMString;
+            using xalanc::XalanOutputStreamPrintWriter;
+            using xalanc::XalanStdOutputStream;
+            using xalanc::XSLTInputSource;
+            using xalanc::XSLTResultTarget;
 
             // Create a XalanTransformer.
             XalanTransformer    theXalanTransformer;
diff --git a/samples/TransformToXercesDOM/TransformToXercesDOM.cpp b/samples/TransformToXercesDOM/TransformToXercesDOM.cpp
index 14cfc20..c4082a6 100644
--- a/samples/TransformToXercesDOM/TransformToXercesDOM.cpp
+++ b/samples/TransformToXercesDOM/TransformToXercesDOM.cpp
@@ -22,11 +22,7 @@
 
 #include <cassert>
 
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <iostream.h>
-#else
 #include <iostream>
-#endif
 
 
 
@@ -70,25 +66,25 @@
 
 
 
-XALAN_USING_STD(cerr)
-XALAN_USING_STD(cout)
-XALAN_USING_STD(endl)
+using std::cerr;
+using std::cout;
+using std::endl;
 
-XALAN_USING_XERCES(DOMDocument)
+using xercesc::DOMDocument;
 
-XALAN_USING_XALAN(XalanCompiledStylesheet)
-XALAN_USING_XALAN(XalanParsedSource)
-XALAN_USING_XALAN(XalanTransformer)
+using xalanc::XalanCompiledStylesheet;
+using xalanc::XalanParsedSource;
+using xalanc::XalanTransformer;
 
 
 
 void
 serialize(const DOMDocument&    theDocument)
 {
-    XALAN_USING_XALAN(XalanStdOutputStream)
-    XALAN_USING_XALAN(XalanOutputStreamPrintWriter)
-    XALAN_USING_XALAN(FormatterToXML)
-    XALAN_USING_XALAN(XercesDOMFormatterWalker)
+    using xalanc::XalanStdOutputStream;
+    using xalanc::XalanOutputStreamPrintWriter;
+    using xalanc::FormatterToXML;
+    using xalanc::XercesDOMFormatterWalker;
 
     // Create an output stream and a PrintWriter for the
     // output
@@ -118,10 +114,10 @@
             const XalanParsedSource&        theParsedSource,
             const XalanCompiledStylesheet&  theStylesheet)
 {
-    XALAN_USING_XERCES(DOMDocument)
-    XALAN_USING_XERCES(DOMImplementation)
-    XALAN_USING_XALAN(FormatterToXercesDOM)
-    XALAN_USING_XALAN(XalanAutoPtr)
+    using xercesc::DOMDocument;
+    using xercesc::DOMImplementation;
+    using xalanc::FormatterToXercesDOM;
+    using xalanc::XalanAutoPtr;
 
     // This is the document which we'll build...
     const XalanAutoPtr<DOMDocument>     theDocument(DOMImplementation::getImplementation()->createDocument());
@@ -178,7 +174,7 @@
     {
         try
         {
-            XALAN_USING_XERCES(XMLPlatformUtils)
+            using xercesc::XMLPlatformUtils;
 
             XMLPlatformUtils::Initialize();
 
diff --git a/samples/UseStylesheetParam/UseStylesheetParam.cpp b/samples/UseStylesheetParam/UseStylesheetParam.cpp
index 442cf2c..5a04300 100644
--- a/samples/UseStylesheetParam/UseStylesheetParam.cpp
+++ b/samples/UseStylesheetParam/UseStylesheetParam.cpp
@@ -18,11 +18,7 @@
 
 #include <xalanc/Include/PlatformDefinitions.hpp>
 
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <iostream.h>
-#else
 #include <iostream>
-#endif
 
 // for 'C' strcmp function used in parsing main() parameters
 #include <string.h>
@@ -44,7 +40,7 @@
 } Parameter[15];
 
 // The Parsed Document Nodesets
-XALAN_USING_XALAN(XalanParsedSource)
+using xalanc::XalanParsedSource;
 const XalanParsedSource * NodesetParam[15] = {
     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
 
@@ -53,8 +49,8 @@
 
 int Usage()
 {
-    XALAN_USING_STD(cerr)
-    XALAN_USING_STD(endl)
+    using std::cerr;
+    using std::endl;
     cerr << "Usage: UseStylesheetParam xmlFile xslFile outFile [parameters]" <<endl
          << "   Parameters are:" <<endl
          << "   -s name \"'String Value'\"" <<endl
@@ -70,8 +66,8 @@
           int       argc,
           char*     argv[])
 {
-    XALAN_USING_STD(cerr)
-    XALAN_USING_STD(endl)
+    using std::cerr;
+    using std::endl;
 
     int theResult = 0;
     int i, j;
@@ -97,11 +93,11 @@
     }
 
     {
-        XALAN_USING_XERCES(XMLPlatformUtils)
-        XALAN_USING_XERCES(XMLException)
+        using xercesc::XMLPlatformUtils;
+        using xercesc::XMLException;
 
-        XALAN_USING_XALAN(XalanTransformer)
-        XALAN_USING_XALAN(XSLTInputSource)
+        using xalanc::XalanTransformer;
+        using xalanc::XSLTInputSource;
 
         // Call the static initializer for Xerces.
         try
@@ -125,7 +121,7 @@
             XalanTransformer::initialize();
 
             {
-                XALAN_USING_XALAN(XalanDOMString)
+                using xalanc::XalanDOMString;
 
                 // Create a XalanTransformer.
                 XalanTransformer    theXalanTransformer;
diff --git a/samples/XPathWrapper/TestDriver.cpp b/samples/XPathWrapper/TestDriver.cpp
index 095badc..efba36f 100644
--- a/samples/XPathWrapper/TestDriver.cpp
+++ b/samples/XPathWrapper/TestDriver.cpp
@@ -29,13 +29,8 @@
 #include <xalanc/XalanTransformer/XalanTransformer.hpp>
 
 
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <fstream.h>
-#include <iostream.h>
-#else
 #include <fstream>
 #include <iostream>
-#endif
 
 
 
@@ -57,10 +52,10 @@
     _CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDERR);
 #endif
 
-    XALAN_USING_STD(cerr)
-    XALAN_USING_STD(cout)
-    XALAN_USING_STD(endl)
-    XALAN_USING_STD(ifstream)
+    using std::cerr;
+    using std::cout;
+    using std::endl;
+    using std::ifstream;
 
     if (argc < 4)
     {
@@ -69,9 +64,9 @@
     }
 
     
-    XALAN_USING_XERCES(XMLPlatformUtils)
-    XALAN_USING_XERCES(XMLException)
-    XALAN_USING_XALAN(XalanTransformer)
+    using xercesc::XMLPlatformUtils;
+    using xercesc::XMLException;
+    using xalanc::XalanTransformer;
 
         //initialize Xerces...
     try
@@ -119,7 +114,7 @@
             for (size_t i=0; i<len; i++)
                 cout << "item " << (i+1) << "= \"" << &*result[i].begin() << "\"" << endl;
         }
-        catch(const XERCES_CPP_NAMESPACE_QUALIFIER XMLException&)
+        catch(const xercesc::XMLException&)
         {
             cerr << "Exception caught!  Exiting..." << endl;
         }
diff --git a/samples/XPathWrapper/XPathWrapper.cpp b/samples/XPathWrapper/XPathWrapper.cpp
index 388a6cf..b0d7311 100644
--- a/samples/XPathWrapper/XPathWrapper.cpp
+++ b/samples/XPathWrapper/XPathWrapper.cpp
@@ -23,11 +23,7 @@
 #include <cassert>
 
 
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <iostream.h>
-#else
 #include <iostream>
-#endif
 
 
 
@@ -70,9 +66,9 @@
 
 
 
-XALAN_USING_STD(cerr)
-XALAN_USING_STD(endl)
-XALAN_USING_STD(ostream)
+using std::cerr;
+using std::endl;
+using std::ostream;
 
 
 
@@ -93,14 +89,12 @@
         ostream&        errorStream,
         CharVectorTypeVectorType& theResultList)
     {
-#if defined(XALAN_STRICT_ANSI_HEADERS)
         using std::strlen;
-#endif
 
 
         {
             // Just hoist everything...
-            XALAN_CPP_NAMESPACE_USE
+            using namespace xalanc;
 
             typedef XPathConstructionContext::GetAndReleaseCachedString     GetAndReleaseCachedString;
 
@@ -116,11 +110,11 @@
 
             XalanElement*   rootElem = 0;
 
-            XALAN_USING_XERCES(XMLException)
+            using xercesc::XMLException;
 
             try
             {
-                XALAN_USING_XERCES(MemBufInputSource)
+                using xercesc::MemBufInputSource;
 
                 // parse XML and get root element
                 MemBufInputSource   inStream((XMLByte*)xml, strlen(xml), "foo", false);
diff --git a/samples/XPathWrapper/XPathWrapper.hpp b/samples/XPathWrapper/XPathWrapper.hpp
index 1b5c85f..c091234 100644
--- a/samples/XPathWrapper/XPathWrapper.hpp
+++ b/samples/XPathWrapper/XPathWrapper.hpp
@@ -45,10 +45,10 @@
 
 public:
 
-    typedef XALAN_CPP_NAMESPACE_QUALIFIER CharVectorType    ChVectorType;
+    typedef xalanc::CharVectorType    ChVectorType;
 
 
-    typedef XALAN_CPP_NAMESPACE_QUALIFIER XalanVector<ChVectorType>     CharVectorTypeVectorType;   
+    typedef xalanc::XalanVector<ChVectorType>     CharVectorTypeVectorType;   
 
 
     XPathWrapper();
diff --git a/samples/XalanTransform/XalanTransform.cpp b/samples/XalanTransform/XalanTransform.cpp
index ad348d7..55be61c 100644
--- a/samples/XalanTransform/XalanTransform.cpp
+++ b/samples/XalanTransform/XalanTransform.cpp
@@ -20,11 +20,7 @@
 
 
 
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <iostream.h>
-#else
 #include <iostream>
-#endif
 
 
 
@@ -41,9 +37,9 @@
             int     argc,
             char*   argv[])
 {
-    XALAN_USING_STD(cerr)
-    XALAN_USING_STD(cout)
-    XALAN_USING_STD(endl)
+    using std::cerr;
+    using std::cout;
+    using std::endl;
 
     if (argc < 3 || argc > 4)
     {
@@ -55,9 +51,9 @@
 
     try
     {
-        XALAN_USING_XERCES(XMLPlatformUtils)
+        using xercesc::XMLPlatformUtils;
 
-        XALAN_USING_XALAN(XalanTransformer)
+        using xalanc::XalanTransformer;
 
         // Call the static initializer for Xerces.
         XMLPlatformUtils::Initialize();
diff --git a/samples/XalanTransformerCallback/XalanTransformerCallback.cpp b/samples/XalanTransformerCallback/XalanTransformerCallback.cpp
index d143617..36b5c48 100644
--- a/samples/XalanTransformerCallback/XalanTransformerCallback.cpp
+++ b/samples/XalanTransformerCallback/XalanTransformerCallback.cpp
@@ -26,21 +26,15 @@
 
 #include <cstdio>
 
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <iostream.h>
-#else
 #include <iostream>
-#endif
 
 
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
 using std::FILE;
 using std::fclose;
 using std::fflush;
 using std::fopen;
 using std::fwrite;
-#endif
 
 
 
@@ -113,10 +107,10 @@
             const char*     theXSLFile,
             FILE*           theOutputFile)
 {
-    XALAN_USING_STD(cerr)
-    XALAN_USING_STD(endl)
+    using std::cerr;
+    using std::endl;
 
-    XALAN_USING_XALAN(XalanTransformer)
+    using xalanc::XalanTransformer;
 
     // Create a XalanTransformer...
     XalanTransformer    theXalanTransformer;
@@ -148,9 +142,9 @@
             int     argc,
             char*   argv[])
 {
-    XALAN_USING_STD(cerr)
-    XALAN_USING_STD(cout)
-    XALAN_USING_STD(endl)
+    using std::cerr;
+    using std::cout;
+    using std::endl;
 
     if (argc < 3 || argc > 4)
     {
@@ -163,9 +157,9 @@
 
     try
     {
-        XALAN_USING_XERCES(XMLPlatformUtils)
+        using xercesc::XMLPlatformUtils;
 
-        XALAN_USING_XALAN(XalanTransformer)
+        using xalanc::XalanTransformer;
 
         // Call the static initializer for Xerces.
         XMLPlatformUtils::Initialize();
diff --git a/src/xalanc/DOMSupport/DOMServices.cpp b/src/xalanc/DOMSupport/DOMServices.cpp
index 40b5e71..449a81c 100644
--- a/src/xalanc/DOMSupport/DOMServices.cpp
+++ b/src/xalanc/DOMSupport/DOMServices.cpp
@@ -43,14 +43,14 @@
 
 
 
-XALAN_USING_XALAN(XalanDOMString)
+using xalanc::XalanDOMString;
 
 
 // These XalanDOMString instances will hold the actual
 // data.  This way, the DOMSupport references can be const,
 // but we can initialize the data when we want to.
 
-XALAN_USING_XALAN(XalanMemMgrs)
+using xalanc::XalanMemMgrs;
 
 static XalanDOMString   s_XMLString(XalanMemMgrs::getDummyMemMgr());
 static XalanDOMString   s_XMLStringWithSeparator(XalanMemMgrs::getDummyMemMgr());
@@ -77,7 +77,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -1268,4 +1268,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/DOMSupport/DOMServices.hpp b/src/xalanc/DOMSupport/DOMServices.hpp
index 0e2b090..ea41351 100644
--- a/src/xalanc/DOMSupport/DOMServices.hpp
+++ b/src/xalanc/DOMSupport/DOMServices.hpp
@@ -41,7 +41,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -936,7 +936,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/DOMSupport/DOMSupport.cpp b/src/xalanc/DOMSupport/DOMSupport.cpp
index cc0040b..2cda1de 100644
--- a/src/xalanc/DOMSupport/DOMSupport.cpp
+++ b/src/xalanc/DOMSupport/DOMSupport.cpp
@@ -19,7 +19,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -35,4 +35,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/DOMSupport/DOMSupport.hpp b/src/xalanc/DOMSupport/DOMSupport.hpp
index 126ad7b..d8fe5cc 100644
--- a/src/xalanc/DOMSupport/DOMSupport.hpp
+++ b/src/xalanc/DOMSupport/DOMSupport.hpp
@@ -25,7 +25,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -82,7 +82,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/DOMSupport/DOMSupportDefault.cpp b/src/xalanc/DOMSupport/DOMSupportDefault.cpp
index 123af11..be52aaf 100644
--- a/src/xalanc/DOMSupport/DOMSupportDefault.cpp
+++ b/src/xalanc/DOMSupport/DOMSupportDefault.cpp
@@ -28,7 +28,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -83,4 +83,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/DOMSupport/DOMSupportDefault.hpp b/src/xalanc/DOMSupport/DOMSupportDefault.hpp
index 13e8cc1..af509f4 100644
--- a/src/xalanc/DOMSupport/DOMSupportDefault.hpp
+++ b/src/xalanc/DOMSupport/DOMSupportDefault.hpp
@@ -29,15 +29,18 @@
 
 
 
-XALAN_DECLARE_XERCES_CLASS(MemoryManager)
+namespace XERCES_CPP_NAMESPACE
+{
+    class MemoryManager;
+}
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
-XALAN_USING_XERCES(MemoryManager)
+using xercesc::MemoryManager;
 
 
 
@@ -76,7 +79,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/DOMSupport/DOMSupportException.cpp b/src/xalanc/DOMSupport/DOMSupportException.cpp
index eb92328..5436011 100644
--- a/src/xalanc/DOMSupport/DOMSupportException.cpp
+++ b/src/xalanc/DOMSupport/DOMSupportException.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -89,4 +89,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/DOMSupport/DOMSupportException.hpp b/src/xalanc/DOMSupport/DOMSupportException.hpp
index 89911c4..eb87fa8 100644
--- a/src/xalanc/DOMSupport/DOMSupportException.hpp
+++ b/src/xalanc/DOMSupport/DOMSupportException.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -76,7 +76,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/DOMSupport/DOMSupportInit.cpp b/src/xalanc/DOMSupport/DOMSupportInit.cpp
index 1fddf91..2ebe16f 100644
--- a/src/xalanc/DOMSupport/DOMSupportInit.cpp
+++ b/src/xalanc/DOMSupport/DOMSupportInit.cpp
@@ -24,7 +24,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -73,4 +73,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/DOMSupport/DOMSupportInit.hpp b/src/xalanc/DOMSupport/DOMSupportInit.hpp
index 2603879..0df9f34 100644
--- a/src/xalanc/DOMSupport/DOMSupportInit.hpp
+++ b/src/xalanc/DOMSupport/DOMSupportInit.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -65,7 +65,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/DOMSupport/TreeWalker.cpp b/src/xalanc/DOMSupport/TreeWalker.cpp
index 5f46b95..27c61e2 100644
--- a/src/xalanc/DOMSupport/TreeWalker.cpp
+++ b/src/xalanc/DOMSupport/TreeWalker.cpp
@@ -28,7 +28,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -288,4 +288,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/DOMSupport/TreeWalker.hpp b/src/xalanc/DOMSupport/TreeWalker.hpp
index 3e14200..9d60400 100644
--- a/src/xalanc/DOMSupport/TreeWalker.hpp
+++ b/src/xalanc/DOMSupport/TreeWalker.hpp
@@ -25,7 +25,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -188,7 +188,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/DOMSupport/XalanDocumentPrefixResolver.cpp b/src/xalanc/DOMSupport/XalanDocumentPrefixResolver.cpp
index bda3e0d..9a5fce4 100644
--- a/src/xalanc/DOMSupport/XalanDocumentPrefixResolver.cpp
+++ b/src/xalanc/DOMSupport/XalanDocumentPrefixResolver.cpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -186,4 +186,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/DOMSupport/XalanDocumentPrefixResolver.hpp b/src/xalanc/DOMSupport/XalanDocumentPrefixResolver.hpp
index 8593ed5..79ee5eb 100644
--- a/src/xalanc/DOMSupport/XalanDocumentPrefixResolver.hpp
+++ b/src/xalanc/DOMSupport/XalanDocumentPrefixResolver.hpp
@@ -44,7 +44,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -140,7 +140,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/DOMSupport/XalanNamespacesStack.cpp b/src/xalanc/DOMSupport/XalanNamespacesStack.cpp
index db1c225..51aa0b7 100644
--- a/src/xalanc/DOMSupport/XalanNamespacesStack.cpp
+++ b/src/xalanc/DOMSupport/XalanNamespacesStack.cpp
@@ -25,7 +25,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -350,4 +350,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/DOMSupport/XalanNamespacesStack.hpp b/src/xalanc/DOMSupport/XalanNamespacesStack.hpp
index 953228a..f8a4c13 100644
--- a/src/xalanc/DOMSupport/XalanNamespacesStack.hpp
+++ b/src/xalanc/DOMSupport/XalanNamespacesStack.hpp
@@ -35,7 +35,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 class XalanDOMString;
@@ -385,7 +385,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/Harness/XalanDiagnosticMemoryManager.cpp b/src/xalanc/Harness/XalanDiagnosticMemoryManager.cpp
index fbe9394..06289ce 100644
--- a/src/xalanc/Harness/XalanDiagnosticMemoryManager.cpp
+++ b/src/xalanc/Harness/XalanDiagnosticMemoryManager.cpp
@@ -19,9 +19,7 @@
 
 
 
-#if !defined(XALAN_CLASSIC_IOSTREAMS)
 #include <iostream>
-#endif
 
 
 
@@ -33,7 +31,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -196,7 +194,7 @@
             const void* const   thePointer = i->first;
             const Data&         theData = i->second;
 
-            XALAN_USING_STD(dec);
+            using std::dec;;
 
             *diagStream << "Block at address "
                         << thePointer
@@ -207,7 +205,7 @@
                         << theData.m_size
                         << " bytes long.\n";
 
-            XALAN_USING_XERCES(XMLPlatformUtils);
+            using xercesc::XMLPlatformUtils;;
 
             const size_type     theHeaderSize =
                 XMLPlatformUtils::alignPointerForNewBlockAllocation(sizeof(MemoryManager*));
@@ -221,7 +219,7 @@
 
             if (theBytesToDump != 0)
             {
-                XALAN_USING_STD(hex);
+                using std::hex;;
 
                 const size_type     theCount =
                     theBytesToDump > theData.m_size ?
@@ -269,4 +267,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/Harness/XalanDiagnosticMemoryManager.hpp b/src/xalanc/Harness/XalanDiagnosticMemoryManager.hpp
index 302ad89..2532a50 100644
--- a/src/xalanc/Harness/XalanDiagnosticMemoryManager.hpp
+++ b/src/xalanc/Harness/XalanDiagnosticMemoryManager.hpp
@@ -28,12 +28,8 @@
 
 
 
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <iostream.h>
-#else
 #include <iosfwd>
 #include <ios>
-#endif
 
 
 
@@ -42,7 +38,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -50,11 +46,7 @@
 {
 public:
 
-#if defined(XALAN_NO_STD_NAMESPACE)
-    typedef ostream             StreamType;
-#else
     typedef std::ostream        StreamType;
-#endif
 
     class LockException
     {
@@ -199,7 +191,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/Harness/XalanFileUtility.cpp b/src/xalanc/Harness/XalanFileUtility.cpp
index e0c77d8..2d14c0f 100644
--- a/src/xalanc/Harness/XalanFileUtility.cpp
+++ b/src/xalanc/Harness/XalanFileUtility.cpp
@@ -44,13 +44,8 @@
 #endif
 
 
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <iostream.h>
-#include <strstream.h>
-#else
 #include <iostream>
 #include <strstream>
-#endif
 
 #if !defined(NDEBUG) && defined(_MSC_VER)
 #include <crtdbg.h>
@@ -58,7 +53,6 @@
 
 
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
 using std::fclose;
 using std::feof;
 using std::ferror;
@@ -69,7 +63,6 @@
 using std::strftime;
 using std::tm;
 using std::time;
-#endif
 
 
 
@@ -111,7 +104,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -135,9 +128,9 @@
 
 
 
-XALAN_USING_STD(cerr)
-XALAN_USING_STD(cout)
-XALAN_USING_STD(endl)
+using std::cerr;
+using std::cout;
+using std::endl;
 
 
 const XalanDOMString    XalanFileUtility::s_emptyString(XalanMemMgrs::getDummyMemMgr());
@@ -919,22 +912,22 @@
 
 
 
-class DummyErrorHandler : public XERCES_CPP_NAMESPACE_QUALIFIER ErrorHandler
+class DummyErrorHandler : public xercesc::ErrorHandler
 {
     virtual void
-    warning(const XERCES_CPP_NAMESPACE_QUALIFIER SAXParseException& exc)
+    warning(const xercesc::SAXParseException& exc)
     {
         throw exc;
     }
 
     virtual void
-    error(const XERCES_CPP_NAMESPACE_QUALIFIER SAXParseException& exc)
+    error(const xercesc::SAXParseException& exc)
     {
         throw exc;
     }
 
     virtual void
-    fatalError(const XERCES_CPP_NAMESPACE_QUALIFIER SAXParseException& exc)
+    fatalError(const xercesc::SAXParseException& exc)
     {
         throw exc;
     }
@@ -991,7 +984,7 @@
     // This exception is being reported prior to this Catch, however, however, I clarify that it's a SAX exception.
     // It's a good indication that the Gold file is not a valid XML.  When this happens the transform result needs
     // to be compared with the Gold,  with a character by character basis,  not via the DOM compair. 
-    catch (const XERCES_CPP_NAMESPACE_QUALIFIER SAXException&)
+    catch (const xercesc::SAXException&)
     {
         if (m_verbose == true)
         {
@@ -2166,4 +2159,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/Harness/XalanFileUtility.hpp b/src/xalanc/Harness/XalanFileUtility.hpp
index 464ef51..2c45e04 100644
--- a/src/xalanc/Harness/XalanFileUtility.hpp
+++ b/src/xalanc/Harness/XalanFileUtility.hpp
@@ -26,11 +26,7 @@
 #include "xalanc/Include/XalanVector.hpp"
 
 
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <strstream.h>
-#else
 #include <strstream>
-#endif
 
 
 
@@ -38,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -54,7 +50,7 @@
 class XSLTInputSource;
 
 
-XALAN_USING_XERCES(MemoryManager)
+using xercesc::MemoryManager;
 
 
 
@@ -98,11 +94,7 @@
     {
     private:
 
-#if defined(XALAN_NO_STD_NAMESPACE)
-        typedef ostrstream          StreamType;
-#else
         typedef std::ostrstream     StreamType;
-#endif
 
         StreamType  help;
 
@@ -467,7 +459,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/Harness/XalanXMLFileReporter.cpp b/src/xalanc/Harness/XalanXMLFileReporter.cpp
index 35e39db..b3496c9 100644
--- a/src/xalanc/Harness/XalanXMLFileReporter.cpp
+++ b/src/xalanc/Harness/XalanXMLFileReporter.cpp
@@ -33,18 +33,16 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
 using std::fclose;
 using std::fflush;
 using std::fopen;
 using std::fprintf;
 using std::fputs;
 using std::sprintf;
-#endif
 
 
 
@@ -1064,4 +1062,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/Harness/XalanXMLFileReporter.hpp b/src/xalanc/Harness/XalanXMLFileReporter.hpp
index 0bdf727..d6bee45 100644
--- a/src/xalanc/Harness/XalanXMLFileReporter.hpp
+++ b/src/xalanc/Harness/XalanXMLFileReporter.hpp
@@ -42,7 +42,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -55,11 +55,7 @@
 
     typedef XalanMap<XalanDOMString, XalanDOMString>  Hashtable;
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
     typedef std::FILE   FileHandleType;
-#else
-    typedef FILE        FileHandleType;
-#endif
 
 public:
 
@@ -391,7 +387,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/ICUBridge/ICUBridge.cpp b/src/xalanc/ICUBridge/ICUBridge.cpp
index f54f282..7310a52 100644
--- a/src/xalanc/ICUBridge/ICUBridge.cpp
+++ b/src/xalanc/ICUBridge/ICUBridge.cpp
@@ -32,7 +32,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -45,7 +45,7 @@
 
 
 
-const UnicodeString
+const icu::UnicodeString
 ICUBridge::XalanDOMCharStringToUnicodeString(
             MemoryManager&      theManager,
             const XalanDOMChar*     theString)
@@ -61,7 +61,7 @@
 }
 
 
-const UnicodeString
+const icu::UnicodeString
 ICUBridge::XalanDOMCharStringToUnicodeString(
             MemoryManager&        /*  theManager */,
             const XalanDOMChar*         theString,
@@ -85,7 +85,7 @@
 
 
 
-const UnicodeString
+const icu::UnicodeString
 ICUBridge::XalanDOMStringToUnicodeString(
             MemoryManager&      theManager,
             const XalanDOMString&   theString)
@@ -135,4 +135,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/ICUBridge/ICUBridge.hpp b/src/xalanc/ICUBridge/ICUBridge.hpp
index cbcb7bd..3fcd6bc 100644
--- a/src/xalanc/ICUBridge/ICUBridge.hpp
+++ b/src/xalanc/ICUBridge/ICUBridge.hpp
@@ -33,13 +33,14 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
 class XALAN_ICUBRIDGE_EXPORT ICUBridge
 {
 public:
+    typedef icu::UnicodeString UnicodeString;
 
     static const UnicodeString
     XalanDOMCharStringToUnicodeString(MemoryManager&    theManager, 
@@ -63,7 +64,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/ICUBridge/ICUBridgeCleanup.cpp b/src/xalanc/ICUBridge/ICUBridgeCleanup.cpp
index cc4fd9d..6cab068 100644
--- a/src/xalanc/ICUBridge/ICUBridgeCleanup.cpp
+++ b/src/xalanc/ICUBridge/ICUBridgeCleanup.cpp
@@ -25,7 +25,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -42,5 +42,5 @@
     //TBD
 }
 
-XALAN_CPP_NAMESPACE_END
+}
 
diff --git a/src/xalanc/ICUBridge/ICUBridgeCleanup.hpp b/src/xalanc/ICUBridge/ICUBridgeCleanup.hpp
index af8b9f7..ecad364 100644
--- a/src/xalanc/ICUBridge/ICUBridgeCleanup.hpp
+++ b/src/xalanc/ICUBridge/ICUBridgeCleanup.hpp
@@ -25,7 +25,7 @@
 
 #include <xalanc/Include/XalanMemoryManagement.hpp>
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -42,7 +42,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/ICUBridge/ICUBridgeCollationCompareFunctor.cpp b/src/xalanc/ICUBridge/ICUBridgeCollationCompareFunctor.cpp
index a820c9e..2cdacb1 100644
--- a/src/xalanc/ICUBridge/ICUBridgeCollationCompareFunctor.cpp
+++ b/src/xalanc/ICUBridge/ICUBridgeCollationCompareFunctor.cpp
@@ -25,7 +25,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -89,4 +89,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/ICUBridge/ICUBridgeCollationCompareFunctor.hpp b/src/xalanc/ICUBridge/ICUBridgeCollationCompareFunctor.hpp
index af73d27..535fba8 100644
--- a/src/xalanc/ICUBridge/ICUBridgeCollationCompareFunctor.hpp
+++ b/src/xalanc/ICUBridge/ICUBridgeCollationCompareFunctor.hpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -74,7 +74,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/ICUBridge/ICUBridgeCollationCompareFunctorImpl.cpp b/src/xalanc/ICUBridge/ICUBridgeCollationCompareFunctorImpl.cpp
index ff3fe4d..010818b 100644
--- a/src/xalanc/ICUBridge/ICUBridgeCollationCompareFunctorImpl.cpp
+++ b/src/xalanc/ICUBridge/ICUBridgeCollationCompareFunctorImpl.cpp
@@ -35,7 +35,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -46,7 +46,7 @@
 inline CollatorType*
 createCollator(
             UErrorCode&         theStatus,
-            const Locale&       theLocale,
+            const icu::Locale&  theLocale,
             XalanDOMString*     theLocaleName = 0)
 {
 
@@ -74,23 +74,19 @@
             XalanDOMString*     theLocaleName = 0)
 {
     const char*     theLang =
-#if defined(XALAN_STRICT_ANSI_HEADERS)
             std::getenv("LANG");
-#else
-            getenv("LANG");
-#endif
 
     if (theLang == 0)
     {
 #if defined(XALAN_ICU_DEFAULT_LOCALE_PROBLEM)
-        return createCollator(theStatus, Locale::US, theLocaleName);
+        return createCollator(theStatus, icu::Locale::US, theLocaleName);
 #else
-        return createCollator(theStatus, Locale::getDefault(), theLocaleName);
+        return createCollator(theStatus, icu::Locale::getDefault(), theLocaleName);
 #endif
     }
     else
     {
-        return createCollator(theStatus, Locale(theLang), theLocaleName);
+        return createCollator(theStatus, icu::Locale(theLang), theLocaleName);
     }
 }
 
@@ -134,7 +130,7 @@
 
 ICUBridgeCollationCompareFunctorImpl::~ICUBridgeCollationCompareFunctorImpl()
 {
-    XALAN_USING_STD(for_each)
+    using std::for_each;
 
     delete m_defaultCollator;
 
@@ -250,7 +246,7 @@
         }
 #endif
         return CollatorType::createInstance(
-                    Locale::createFromName(theBuffer),
+                    icu::Locale::createFromName(theBuffer),
                     theStatus);
     }
 }
@@ -413,7 +409,7 @@
 CollatorType*
 ICUBridgeCollationCompareFunctorImpl::getCachedCollator(const XalanDOMChar*     theLocale) const
 {
-    XALAN_USING_STD(find_if)
+    using std::find_if;
 
     CollatorCacheListType::iterator i =
         find_if(
@@ -483,4 +479,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/ICUBridge/ICUBridgeCollationCompareFunctorImpl.hpp b/src/xalanc/ICUBridge/ICUBridgeCollationCompareFunctorImpl.hpp
index 651880f..d362e48 100644
--- a/src/xalanc/ICUBridge/ICUBridgeCollationCompareFunctorImpl.hpp
+++ b/src/xalanc/ICUBridge/ICUBridgeCollationCompareFunctorImpl.hpp
@@ -38,14 +38,10 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
-#if defined(XALAN_HAS_CPP_NAMESPACE)
 typedef U_ICU_NAMESPACE::Collator   CollatorType;
-#else
-typedef Collator                    CollatorType;
-#endif
 
 struct CollationCacheStruct
 {
@@ -243,7 +239,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/ICUBridge/ICUFormatNumberFunctor.cpp b/src/xalanc/ICUBridge/ICUFormatNumberFunctor.cpp
index 9116436..aef878c 100644
--- a/src/xalanc/ICUBridge/ICUFormatNumberFunctor.cpp
+++ b/src/xalanc/ICUBridge/ICUFormatNumberFunctor.cpp
@@ -44,7 +44,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -76,7 +76,7 @@
 
 ICUFormatNumberFunctor::~ICUFormatNumberFunctor()
 {
-    XALAN_USING_STD(for_each)
+    using std::for_each;
 
     for_each(
         m_decimalFormatCache.begin(),
@@ -116,7 +116,7 @@
 DecimalFormatType * 
 ICUFormatNumberFunctor::getCachedDecimalFormat(const XalanDecimalFormatSymbols &theDFS) const
 {
-    XALAN_USING_STD(find_if)
+    using std::find_if;
 
     DecimalFormatCacheListType::iterator i =
         find_if(
@@ -226,67 +226,67 @@
     UErrorCode theStatus = U_ZERO_ERROR;    
 
     // Use a XalanAutoPtr, to keep this safe until we construct the DecimalFormat instance.
-    XalanAutoPtr<DecimalFormatSymbols>  theDFS(new DecimalFormatSymbols(theStatus));
+    XalanAutoPtr<icu::DecimalFormatSymbols>  theDFS(new icu::DecimalFormatSymbols(theStatus));
     // We got a XalanDecimalFormatSymbols, so set the
     // corresponding data in the ICU DecimalFormatSymbols.
     theDFS->setSymbol(
-        DecimalFormatSymbols::kZeroDigitSymbol,
+        icu::DecimalFormatSymbols::kZeroDigitSymbol,
         UChar(theXalanDFS.getZeroDigit()));
 
     theDFS->setSymbol(
-        DecimalFormatSymbols::kGroupingSeparatorSymbol,
+        icu::DecimalFormatSymbols::kGroupingSeparatorSymbol,
         UChar(theXalanDFS.getGroupingSeparator()));
 
     theDFS->setSymbol(
-        DecimalFormatSymbols::kDecimalSeparatorSymbol,
+        icu::DecimalFormatSymbols::kDecimalSeparatorSymbol,
         UChar(theXalanDFS.getDecimalSeparator()));
 
     theDFS->setSymbol(
-        DecimalFormatSymbols::kPerMillSymbol,
+        icu::DecimalFormatSymbols::kPerMillSymbol,
         UChar(theXalanDFS.getPerMill()));
 
     theDFS->setSymbol(
-        DecimalFormatSymbols::kPercentSymbol,
+        icu::DecimalFormatSymbols::kPercentSymbol,
         UChar(theXalanDFS.getPercent()));
 
     theDFS->setSymbol(
-        DecimalFormatSymbols::kDigitSymbol,
+        icu::DecimalFormatSymbols::kDigitSymbol,
         UChar(theXalanDFS.getDigit()));
 
     theDFS->setSymbol(
-        DecimalFormatSymbols::kPatternSeparatorSymbol,
+        icu::DecimalFormatSymbols::kPatternSeparatorSymbol,
         UChar(theXalanDFS.getPatternSeparator()));
 
     theDFS->setSymbol(
-        DecimalFormatSymbols::kInfinitySymbol,
+        icu::DecimalFormatSymbols::kInfinitySymbol,
         ICUBridge::XalanDOMStringToUnicodeString(
             theManager,
             theXalanDFS.getInfinity()));
 
     theDFS->setSymbol(
-        DecimalFormatSymbols::kNaNSymbol,
+        icu::DecimalFormatSymbols::kNaNSymbol,
         ICUBridge::XalanDOMStringToUnicodeString(
             theManager,
             theXalanDFS.getNaN()));
 
     theDFS->setSymbol(
-        DecimalFormatSymbols::kMinusSignSymbol,
+        icu::DecimalFormatSymbols::kMinusSignSymbol,
         UChar(theXalanDFS.getMinusSign()));
 
     theDFS->setSymbol(
-        DecimalFormatSymbols::kCurrencySymbol,
+        icu::DecimalFormatSymbols::kCurrencySymbol,
         ICUBridge::XalanDOMStringToUnicodeString(
             theManager,
             theXalanDFS.getCurrencySymbol()));
 
     theDFS->setSymbol(
-        DecimalFormatSymbols::kIntlCurrencySymbol,
+        icu::DecimalFormatSymbols::kIntlCurrencySymbol,
         ICUBridge::XalanDOMStringToUnicodeString(
             theManager,
             theXalanDFS.getInternationalCurrencySymbol()));
 
     theDFS->setSymbol(
-        DecimalFormatSymbols::kMonetarySeparatorSymbol,
+        icu::DecimalFormatSymbols::kMonetarySeparatorSymbol,
         UChar(theXalanDFS.getMonetaryDecimalSeparator()));
 
     // Construct a DecimalFormat instance.
@@ -379,7 +379,7 @@
     if (U_SUCCESS(theStatus))
     {
         // Do the format...
-        UnicodeString   theUnicodeResult;
+        icu::UnicodeString   theUnicodeResult;
         theFormatter->format(theNumber, theUnicodeResult);
         ICUBridge::UnicodeStringToXalanDOMString(theUnicodeResult, theResult);
     }
@@ -459,4 +459,4 @@
     return theResult;
 }
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/ICUBridge/ICUFormatNumberFunctor.hpp b/src/xalanc/ICUBridge/ICUFormatNumberFunctor.hpp
index c78ba72..bf7769e 100644
--- a/src/xalanc/ICUBridge/ICUFormatNumberFunctor.hpp
+++ b/src/xalanc/ICUBridge/ICUFormatNumberFunctor.hpp
@@ -46,15 +46,11 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 typedef StylesheetExecutionContextDefault::FormatNumberFunctor FormatNumberFunctor;
 
-#if defined(XALAN_HAS_CPP_NAMESPACE)
     typedef U_ICU_NAMESPACE::DecimalFormat  DecimalFormatType;
-#else
-    typedef DecimalFormat                   DecimalFormatType;
-#endif
 
 struct DecimalFormatCacheStruct
 {
@@ -224,12 +220,12 @@
         DecimalFormatType*                  theFormatter,
         const XalanDecimalFormatSymbols&    theDFS) const;
 
-    static DecimalFormat*
+    static DecimalFormatType*
     createDecimalFormat(
         const XalanDecimalFormatSymbols&    theXalanDFS,
         MemoryManager&                      theManager);
 
-    static DecimalFormat*
+    static DecimalFormatType*
     createDecimalFormat(MemoryManager&  theManager)
     {
         const XalanDecimalFormatSymbols     theDFS(theManager);
@@ -260,7 +256,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/ICUBridge/ICUXalanNumberFormatFactory.cpp b/src/xalanc/ICUBridge/ICUXalanNumberFormatFactory.cpp
index 257fabb..cc3d67f 100644
--- a/src/xalanc/ICUBridge/ICUXalanNumberFormatFactory.cpp
+++ b/src/xalanc/ICUBridge/ICUXalanNumberFormatFactory.cpp
@@ -24,7 +24,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -52,4 +52,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/ICUBridge/ICUXalanNumberFormatFactory.hpp b/src/xalanc/ICUBridge/ICUXalanNumberFormatFactory.hpp
index 75a7fb5..af0e150 100644
--- a/src/xalanc/ICUBridge/ICUXalanNumberFormatFactory.hpp
+++ b/src/xalanc/ICUBridge/ICUXalanNumberFormatFactory.hpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -52,7 +52,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/ICUBridge/ICUXalanNumberFormatProxy.cpp b/src/xalanc/ICUBridge/ICUXalanNumberFormatProxy.cpp
index 36b72c8..0ba4b51 100644
--- a/src/xalanc/ICUBridge/ICUXalanNumberFormatProxy.cpp
+++ b/src/xalanc/ICUBridge/ICUXalanNumberFormatProxy.cpp
@@ -35,7 +35,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -126,7 +126,7 @@
 
 XalanDOMString&
 ICUXalanNumberFormatProxy::format(
-            XALAN_UINT64        theValue,
+            XMLUInt64           theValue,
             XalanDOMString&     theResult)
 
 {
@@ -138,7 +138,7 @@
 
 XalanDOMString&
 ICUXalanNumberFormatProxy::format(
-            XALAN_INT64         theValue,
+            XMLInt64            theValue,
             XalanDOMString&     theResult)
 
 {
@@ -191,4 +191,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/ICUBridge/ICUXalanNumberFormatProxy.hpp b/src/xalanc/ICUBridge/ICUXalanNumberFormatProxy.hpp
index d548c9a..2ffa57a 100644
--- a/src/xalanc/ICUBridge/ICUXalanNumberFormatProxy.hpp
+++ b/src/xalanc/ICUBridge/ICUXalanNumberFormatProxy.hpp
@@ -33,7 +33,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -86,7 +86,7 @@
      */
     virtual XalanDOMString&
     format(
-            XALAN_INT64         theValue,
+            XMLInt64            theValue,
             XalanDOMString&     theResult);
 
     /**
@@ -97,7 +97,7 @@
      */
     virtual XalanDOMString&
     format(
-            XALAN_UINT64        theValue,
+            XMLUInt64           theValue,
             XalanDOMString&     theResult);
 
     virtual bool
@@ -114,11 +114,7 @@
 
 private:
 
-#if defined(XALAN_HAS_CPP_NAMESPACE)
     typedef U_ICU_NAMESPACE::DecimalFormat      DecimalFormatType;
-#else
-    typedef DecimalFormat*                      DecimalFormatType;
-#endif
 
     DecimalFormatType*      m_decimalFormat;
 
@@ -126,7 +122,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/Include/AIXDefinitions.hpp b/src/xalanc/Include/AIXDefinitions.hpp
index bfce6ff..48fb9a5 100644
--- a/src/xalanc/Include/AIXDefinitions.hpp
+++ b/src/xalanc/Include/AIXDefinitions.hpp
@@ -35,11 +35,6 @@
 
 
 #define XALAN_POSIX2_AVAILABLE
-#define XALAN_EXPLICIT_SCOPE_IN_TEMPLATE_BUG
-#define XALAN_NEW_STD_ALLOCATOR
-#define XALAN_HAS_CPP_NAMESPACE
-#define XALAN_HAS_STD_ITERATORS
-#define XALAN_HAS_STD_DISTANCE
 
 
 
diff --git a/src/xalanc/Include/GCCDefinitions.hpp b/src/xalanc/Include/GCCDefinitions.hpp
index c43e9df..4b7bb55 100644
--- a/src/xalanc/Include/GCCDefinitions.hpp
+++ b/src/xalanc/Include/GCCDefinitions.hpp
@@ -33,14 +33,6 @@
 
 
 
-#define XALAN_SGI_BASED_STL
-#define XALAN_INLINE_INITIALIZATION
-#define XALAN_HAS_CPP_NAMESPACE
-#define XALAN_HAS_STD_ITERATORS
-#define XALAN_HAS_STD_DISTANCE
-
-#define XALAN_NO_STD_NUMERIC_LIMITS
-
 #if defined(CYGWIN)
 #if defined(WIN32)
 #undef WIN32
diff --git a/src/xalanc/Include/HPUXDefinitions.hpp b/src/xalanc/Include/HPUXDefinitions.hpp
index 3b63be6..b501182 100644
--- a/src/xalanc/Include/HPUXDefinitions.hpp
+++ b/src/xalanc/Include/HPUXDefinitions.hpp
@@ -33,21 +33,13 @@
 #define XALAN_PLATFORM_IMPORT_FUNCTION(T) T XALAN_PLATFORM_IMPORT
 
 #if defined(_HP_NAMESPACE_STD)
-#define XALAN_HAS_STD_ITERATORS
-#define XALAN_HAS_STD_DISTANCE
 #else
 #if defined(RWSTD_MULTI_THREAD) && !defined(__HPACC_THREAD_SAFE_RB_TREE)
 #define __HPACC_THREAD_SAFE_RB_TREE
 #endif
-#define XALAN_NO_STD_NAMESPACE
-#define XALAN_CLASSIC_IOSTREAMS
-#define XALAN_NO_STD_ALLOCATORS
-#define XALAN_SGI_BASED_STL
 #endif
 
-#define XALAN_HAS_CPP_NAMESPACE
 #define XALAN_POSIX2_AVAILABLE
-#define XALAN_INLINE_INITIALIZATION
 
 
 
diff --git a/src/xalanc/Include/IntelDefinitions.hpp b/src/xalanc/Include/IntelDefinitions.hpp
index 882ed64..2d63ce5 100644
--- a/src/xalanc/Include/IntelDefinitions.hpp
+++ b/src/xalanc/Include/IntelDefinitions.hpp
@@ -33,11 +33,7 @@
 
 
 
-#define XALAN_HAS_STD_ITERATORS
-#define XALAN_HAS_STD_DISTANCE
-#define XALAN_HAS_CPP_NAMESPACE
 #define XALAN_POSIX2_AVAILABLE
-#define XALAN_INLINE_INITIALIZATION
 
 
 
diff --git a/src/xalanc/Include/OS390Definitions.hpp b/src/xalanc/Include/OS390Definitions.hpp
index 6b76184..19e5c60 100644
--- a/src/xalanc/Include/OS390Definitions.hpp
+++ b/src/xalanc/Include/OS390Definitions.hpp
@@ -35,11 +35,6 @@
 
 #define XALAN_NON_ASCII_PLATFORM
 
-#define XALAN_EXPLICIT_SCOPE_IN_TEMPLATE_BUG
-//#define XALAN_NEW_STD_ALLOCATOR
-#define XALAN_HAS_STD_ITERATORS
-#define XALAN_HAS_STD_DISTANCE
-#define XALAN_HAS_CPP_NAMESPACE
 #define XALAN_NO_REENTRANT_TIME_FUNCTIONS
 #define XALAN_POSIX2_AVAILABLE
 
diff --git a/src/xalanc/Include/OS400Definitions.hpp b/src/xalanc/Include/OS400Definitions.hpp
index c7e2ebf..e353054 100644
--- a/src/xalanc/Include/OS400Definitions.hpp
+++ b/src/xalanc/Include/OS400Definitions.hpp
@@ -34,9 +34,6 @@
 
 
 #define XALAN_POSIX2_AVAILABLE
-#define XALAN_EXPLICIT_SCOPE_IN_TEMPLATE_BUG
-#define XALAN_NEW_STD_ALLOCATOR
-#define XALAN_HAS_CPP_NAMESPACE
 
 
 
diff --git a/src/xalanc/Include/PlatformDefinitions.hpp b/src/xalanc/Include/PlatformDefinitions.hpp
index 22fb4b4..3dc693a 100644
--- a/src/xalanc/Include/PlatformDefinitions.hpp
+++ b/src/xalanc/Include/PlatformDefinitions.hpp
@@ -59,70 +59,14 @@
 // ---------------------------------------------------------------------------
 // Define namespace symbols if the compiler supports it.
 // ---------------------------------------------------------------------------
-#if defined(XALAN_HAS_CPP_NAMESPACE)
-    #define XALAN_CPP_NAMESPACE_BEGIN namespace XALAN_CPP_NAMESPACE {
-    #define XALAN_CPP_NAMESPACE_END  }
-    #define XALAN_CPP_NAMESPACE_USE using namespace XALAN_CPP_NAMESPACE;
-    #define XALAN_CPP_NAMESPACE_QUALIFIER XALAN_CPP_NAMESPACE::
-    #define XALAN_USING(NAMESPACE,NAME) using NAMESPACE :: NAME;
-    #define XALAN_DECLARE_CLASS(NAMESPACE,NAME) namespace NAMESPACE { class NAME; }
-    #define XALAN_DECLARE_STRUCT(NAMESPACE,NAME) namespace NAMESPACE { struct NAME; }
-
-    namespace XALAN_CPP_NAMESPACE { }
-    namespace xalanc = XALAN_CPP_NAMESPACE;
-#else
-    #if defined(XALAN_CPP_NAMESPACE)
-    #undef XALAN_CPP_NAMESPACE
-    #endif
-
-    #define XALAN_CPP_NAMESPACE
-    #define XALAN_CPP_NAMESPACE_BEGIN
-    #define XALAN_CPP_NAMESPACE_END
-    #define XALAN_CPP_NAMESPACE_USE
-    #define XALAN_CPP_NAMESPACE_QUALIFIER
-    #define XALAN_USING(NAMESPACE,NAME)
-    #define XALAN_DECLARE_CLASS(NAMESPACE,NAME) class NAME;
-    #define XALAN_DECLARE_STRUCT(NAMESPACE,NAME) struct NAME;
-    #if !defined(XALAN_NO_STD_NAMESPACE)
-        #define XALAN_NO_STD_NAMESPACE
-    #endif
-#endif
-
-
-#if defined(XALAN_NO_STD_NAMESPACE)
-    #define XALAN_USING_STD(NAME)
-    #define XALAN_STD_QUALIFIER 
-#else
-    #define XALAN_USING_STD(NAME) using std :: NAME;
-    #define XALAN_STD_QUALIFIER  std ::
-#endif
-
-#define XALAN_DECLARE_XALAN_CLASS(NAME) XALAN_DECLARE_CLASS(XALAN_CPP_NAMESPACE, NAME)
-#define XALAN_DECLARE_XALAN_STRUCT(NAME) XALAN_DECLARE_STRUCT(XALAN_CPP_NAMESPACE, NAME)
-#define XALAN_USING_XALAN(NAME) XALAN_USING(XALAN_CPP_NAMESPACE, NAME)
-
-
-#if defined(XERCES_HAS_CPP_NAMESPACE)
-    #define XALAN_USING_XERCES(NAME) XALAN_USING(XERCES_CPP_NAMESPACE, NAME)
-    #define XALAN_DECLARE_XERCES_CLASS(NAME) XALAN_DECLARE_CLASS(XERCES_CPP_NAMESPACE, NAME)
-    #define XALAN_DECLARE_XERCES_STRUCT(NAME) XALAN_DECLARE_STRUCT(XERCES_CPP_NAMESPACE, NAME)
-#else
-    #define XERCES_CPP_NAMESPACE_QUALIFIER
-    #define XERCES_CPP_NAMESPACE_BEGIN
-    #define XERCES_CPP_NAMESPACE_END
-    #define XERCES_CPP_NAMESPACE_USE
-    #define XALAN_USING_XERCES(NAME)
-    #define XALAN_DECLARE_XERCES_CLASS(NAME) class NAME;
-    #define XALAN_DECLARE_XERCES_STRUCT(NAME) struct NAME;
-#endif
-
+namespace XALAN_CPP_NAMESPACE { }
+namespace xalanc = XALAN_CPP_NAMESPACE;
 
 
 #include <cstddef>
 
 
-
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 #if XERCES_VERSION_MAJOR < 3
 typedef unsigned int    XalanSize_t;
@@ -144,15 +88,10 @@
     char    foo[value];
 };
  
-XALAN_CPP_NAMESPACE_END
+}
 
 
-#if !defined(XALAN_NO_LONG_LONG)
-typedef unsigned long long XALAN_UINT64;
-typedef long long  XALAN_INT64;
-#endif
-
-#define XALAN_STATIC_ASSERT(expr) XALAN_CPP_NAMESPACE_QUALIFIER XalanCompileErrorBoolean<bool(expr)>()
+#define XALAN_STATIC_ASSERT(expr) xalanc::XalanCompileErrorBoolean<bool(expr)>()
 
 
 
diff --git a/src/xalanc/Include/STLHelper.hpp b/src/xalanc/Include/STLHelper.hpp
index 0a55ebe..b4344b4 100644
--- a/src/xalanc/Include/STLHelper.hpp
+++ b/src/xalanc/Include/STLHelper.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -97,21 +97,8 @@
  * Functor to delete objects, used in STL iteration algorithms.
  */
 template <class Type>
-#if defined(XALAN_NO_STD_NAMESPACE)
-struct DeleteFunctor : public unary_function<const Type*, void>
-#else
-struct DeleteFunctor : public std::unary_function<const Type*, void>
-#endif
+struct DeleteFunctor
 {
-#if defined(XALAN_NO_STD_NAMESPACE)
-    typedef unary_function<const Type*, void>       BaseClassType;
-#else
-    typedef std::unary_function<const Type*, void>  BaseClassType;
-#endif
-
-    typedef typename BaseClassType::result_type     result_type;
-    typedef typename BaseClassType::argument_type   argument_type;
-
     DeleteFunctor(MemoryManager&    theManager) :
         m_memoryManager(theManager)
     {
@@ -122,8 +109,8 @@
      *
      * @param thePointer pointer to object to be deleted
      */
-    result_type
-    operator()(argument_type    thePointer) const
+    void
+    operator()(const Type*    thePointer) const
     {
         return makeXalanDestroyFunctor(thePointer)(thePointer, m_memoryManager);
     }
@@ -134,114 +121,20 @@
 };
 
 
-
-#if !defined(XALAN_SGI_BASED_STL)
-
-/**
- * Functor to retrieve the key of a key-value pair in a map, used in STL
- * iteration algorithms.
- */
-template <class PairType>
-#if defined(XALAN_NO_STD_NAMESPACE)
-struct select1st : public unary_function<PairType, PairType::first_type>
-#else
-struct select1st : public std::unary_function<PairType, typename PairType::first_type>
-#endif
-{
-#if defined(XALAN_NO_STD_NAMESPACE)
-    typedef unary_function<PairType, PairType::first_type>  BaseClassType;
-#else
-    typedef std::unary_function<PairType, typename PairType::first_type>    BaseClassType;
-#endif
-
-    typedef typename BaseClassType::result_type     result_type;
-    typedef typename BaseClassType::argument_type   argument_type;
-
-    typedef PairType                                value_type;
-
-    /**
-     * Retrieve the key of a key-value pair.
-     *
-     * @param thePair key-value pair
-     * @return key
-     */
-    result_type
-    operator()(const argument_type&     thePair) const
-    {
-        return thePair.first;
-    }
-};
-
-
-
-/**
- * Functor to retrieve the value of a key-value pair in a map, used in STL
- * iteration algorithms.
- */
-template <class PairType>
-#if defined(XALAN_NO_STD_NAMESPACE)
-struct select2nd : public unary_function<PairType, PairType::second_type>
-#else
-struct select2nd : public std::unary_function<PairType, typename PairType::second_type>
-#endif
-{
-#if defined(XALAN_NO_STD_NAMESPACE)
-    typedef unary_function<PairType, PairType::second_type> BaseClassType;
-#else
-    typedef std::unary_function<PairType, typename PairType::second_type>   BaseClassType;
-#endif
-
-    typedef typename BaseClassType::result_type     result_type;
-    typedef typename BaseClassType::argument_type   argument_type;
-
-    typedef PairType                                value_type;
-
-    /**
-     * Retrieve the value of a key-value pair.
-     *
-     * @param thePair key-value pair
-     * @return value
-     */
-    result_type
-    operator()(const argument_type&     thePair) const
-    {
-        return thePair.second;
-    }
-};
-
-#endif
-
-
-
 /**
  * Functor to call a clear() member function on its argument.
  */
 template <class Type>
-#if defined(XALAN_NO_STD_NAMESPACE)
-struct ClearFunctor : public unary_function<Type, void>
-#else
-struct ClearFunctor : public std::unary_function<Type, void>
-#endif
+struct ClearFunctor
 {
-#if defined(XALAN_NO_STD_NAMESPACE)
-    typedef unary_function<Type, void>      BaseClassType;
-#else
-    typedef std::unary_function<Type, void> BaseClassType;
-#endif
-
-    typedef typename BaseClassType::result_type     result_type;
-    typedef typename BaseClassType::argument_type   argument_type;
-
-    typedef Type                                    value_type;
-
     /**
      * Retrieve the value of a key-value pair.
      *
      * @param thePair key-value pair
      * @return value
      */
-    result_type
-    operator()(argument_type&   theArg) const
+    void
+    operator()(Type&   theArg) const
     {
         return theArg.clear();
     }
@@ -253,21 +146,8 @@
  * Functor to delete value objects in maps, used in STL iteration algorithms.
  */
 template <class T>
-#if defined(XALAN_NO_STD_NAMESPACE)
-struct MapValueDeleteFunctor : public unary_function<const typename T::value_type&, void>
-#else
-struct MapValueDeleteFunctor : public std::unary_function<const typename T::value_type&, void>
-#endif
+struct MapValueDeleteFunctor
 {
-#if defined(XALAN_NO_STD_NAMESPACE)
-    typedef unary_function<const typename T::value_type&, void>         BaseClassType;
-#else
-    typedef std::unary_function<const typename T::value_type&, void>    BaseClassType;
-#endif
-
-    typedef typename BaseClassType::result_type     result_type;
-    typedef typename BaseClassType::argument_type   argument_type;
-
     MapValueDeleteFunctor(MemoryManager&    theManager) :
         m_memoryManager(theManager)
     {
@@ -279,8 +159,8 @@
      *
      * @param thePair key-value pair
      */
-    result_type
-    operator()(argument_type    thePair) const
+    void
+    operator()(const typename T::value_type&    thePair) const
     {
         return makeXalanDestroyFunctor(thePair.second)(thePair.second, m_memoryManager);
     }
@@ -311,22 +191,8 @@
  * the default will allow the map to work as expected.
  */
 template<class T>
-#if defined(XALAN_NO_STD_NAMESPACE)
-struct less_null_terminated_arrays : public binary_function<const T*, const T*, bool>
-#else
-struct less_null_terminated_arrays : public std::binary_function<const T*, const T*, bool>
-#endif
+struct less_null_terminated_arrays
 {
-#if defined(XALAN_NO_STD_NAMESPACE)
-    typedef binary_function<const T*, const T*, bool>           BaseClassType;
-#else
-    typedef std::binary_function<const T*, const T*, bool>      BaseClassType;
-#endif
-
-    typedef typename BaseClassType::result_type             result_type;
-    typedef typename BaseClassType::first_argument_type     first_argument_type;
-    typedef typename BaseClassType::second_argument_type    second_argument_type;
-
     /**
      * Compare the values of two objects.
      *
@@ -335,10 +201,10 @@
      * @param theRHS second object to compare
      * @return true if objects are the same
      */
-    result_type
+    bool
     operator()(
-            first_argument_type     theLHS,
-            second_argument_type    theRHS) const
+            const T*    theLHS,
+            const T*    theRHS) const
     {
         while(*theLHS && *theRHS)
         {
@@ -360,13 +226,8 @@
 
 
 template<class T>
-struct equal_null_terminated_arrays : public XALAN_STD_QUALIFIER binary_function<const T*, const T*, bool>
+struct equal_null_terminated_arrays
 {
-    typedef XALAN_STD_QUALIFIER binary_function<const T*, const T*, bool>       BaseClassType;
-
-    typedef typename BaseClassType::result_type             result_type;
-    typedef typename BaseClassType::first_argument_type     first_argument_type;
-    typedef typename BaseClassType::second_argument_type    second_argument_type;
     /**
      * Compare the values of two objects.
      *
@@ -375,10 +236,10 @@
      * @param theRHS second object to compare
      * @return true if objects are the same
      */
-    result_type
+    bool
     operator()(
-            first_argument_type     theLHS,
-            second_argument_type    theRHS) const
+            const T*    theLHS,
+            const T*    theRHS) const
     {
         while(*theLHS && *theRHS)
         {
@@ -418,22 +279,17 @@
 
 
 template <class T>
-struct hash_non_terminated_array : public XALAN_STD_QUALIFIER unary_function<const T*, size_t>
+struct hash_non_terminated_array
 {
-    typedef XALAN_STD_QUALIFIER unary_function<const T*, size_t>    BaseClassType;
-
-    typedef typename BaseClassType::result_type     result_type;
-    typedef typename BaseClassType::argument_type   argument_type;
-
-    result_type
+    size_t
     operator() (
-        argument_type   theKey,
-        result_type     theLength,
-        result_type     theInitialValue = 0) const
+        const T*    theKey,
+        size_t      theLength,
+        size_t      theInitialValue = 0) const
     {
-        result_type     theHashValue = theInitialValue; 
+        size_t      theHashValue = theInitialValue; 
 
-        const argument_type     theEnd =
+        const T*    theEnd =
                 theKey + theLength;
 
         while (theKey != theEnd)
@@ -450,19 +306,14 @@
 
 
 template <class T>
-struct hash_null_terminated_array : public XALAN_STD_QUALIFIER unary_function<const T*, size_t>
+struct hash_null_terminated_array
 {
-    typedef XALAN_STD_QUALIFIER unary_function<const T*, size_t>    BaseClassType;
-
-    typedef typename BaseClassType::result_type     result_type;
-    typedef typename BaseClassType::argument_type   argument_type;
-
-    result_type
+    size_t
     operator() (
-        argument_type   theKey,
-        result_type     theInitialValue = 0) const
+        const T*   theKey,
+        size_t     theInitialValue = 0) const
     {
-        result_type     theHashValue = theInitialValue; 
+        size_t     theHashValue = theInitialValue; 
 
         while (*theKey)
         {
@@ -538,9 +389,7 @@
     {
         if (m_collection != 0)
         {
-#if !defined(XALAN_NO_STD_NAMESPACE)
             using std::for_each;
-#endif
 
             // Delete all of the objects in the temp vector.
             for_each(m_collection->begin(),
@@ -570,26 +419,12 @@
 
 
 template<class T>
-#if defined(XALAN_NO_STD_NAMESPACE)
-struct pointer_equals : public binary_function<const T*, const T*, bool>
-#else
-struct pointer_equals : public std::binary_function<const T*, const T*, bool>
-#endif
+struct pointer_equals
 {
-#if defined(XALAN_NO_STD_NAMESPACE)
-    typedef binary_function<const T*, const T*, bool>           BaseClassType;
-#else
-    typedef std::binary_function<const T*, const T*, bool>      BaseClassType;
-#endif
-
-    typedef typename BaseClassType::result_type             result_type;
-    typedef typename BaseClassType::first_argument_type     first_argument_type;
-    typedef typename BaseClassType::second_argument_type    second_argument_type;
-
-    result_type
+    bool
     operator()(
-        first_argument_type     theLHS,
-        second_argument_type    theRHS) const
+        const T*    theLHS,
+        const T*    theRHS) const
     {
         assert(theLHS != 0 && theRHS != 0);
 
@@ -600,29 +435,16 @@
 
 
 template<class T>
-#if defined(XALAN_NO_STD_NAMESPACE)
-struct pointer_equals_predicate : public unary_function<const T*, bool>
-#else
-struct pointer_equals_predicate : public std::unary_function<const T*, bool>
-#endif
+struct pointer_equals_predicate
 {
-#if defined(XALAN_NO_STD_NAMESPACE)
-    typedef unary_function<const T*, bool>          BaseClassType;
-#else
-    typedef std::unary_function<const T*, bool>     BaseClassType;
-#endif
-
-    typedef typename BaseClassType::result_type     result_type;
-    typedef typename BaseClassType::argument_type   argument_type;
-
-    pointer_equals_predicate(argument_type  theArg) :
+    pointer_equals_predicate(const T*    theArg) :
         m_arg(theArg)
     {
     }
 
-    result_type
+    bool
     operator()(
-        argument_type   theOther) const
+        const T*   theOther) const
     {
         assert(theOther != 0);
 
@@ -631,38 +453,22 @@
 
 private:
 
-    const argument_type     m_arg;
+    const T*    m_arg;
 };
 
 
 
 template<class T>
-#if defined(XALAN_NO_STD_NAMESPACE)
-struct pointer_less : public binary_function<const T*, const T*, bool>
-#else
-struct pointer_less : public std::binary_function<const T*, const T*, bool>
-#endif
+struct pointer_less
 {
-#if defined(XALAN_NO_STD_NAMESPACE)
-    typedef binary_function<const T*, const T*, bool>           BaseClassType;
-#else
-    typedef std::binary_function<const T*, const T*, bool>      BaseClassType;
-#endif
-
-    typedef typename BaseClassType::result_type             result_type;
-    typedef typename BaseClassType::first_argument_type     first_argument_type;
-    typedef typename BaseClassType::second_argument_type    second_argument_type;
-
-    result_type
+    bool
     operator()(
-        first_argument_type     theLHS,
-        second_argument_type    theRHS) const
+        const T*    theLHS,
+        const T*    theRHS) const
     {
         assert(theLHS != 0 && theRHS != 0);
 
-#if !defined(XALAN_NO_STD_NAMESPACE)
         using std::less;
-#endif
 
         return less<T>()(*theLHS, *theRHS);
     }
@@ -671,28 +477,22 @@
 
 
 template<class T>
-struct pointer_equal : public XALAN_STD_QUALIFIER binary_function<const T*, const T*, bool>
+struct pointer_equal
 {
-    typedef XALAN_STD_QUALIFIER binary_function<const T*, const T*, bool> BaseClassType;
-
-    typedef typename BaseClassType::result_type             result_type;
-    typedef typename BaseClassType::first_argument_type     first_argument_type;
-    typedef typename BaseClassType::second_argument_type    second_argument_type;
-
-    result_type
+    bool
     operator()(
-        first_argument_type     theLHS,
-        second_argument_type    theRHS) const
+        const T*    theLHS,
+        const T*    theRHS) const
     {
         assert(theLHS != 0 && theRHS != 0);
-        return XALAN_STD_QUALIFIER equal_to<T>()(*theLHS, *theRHS);
+        return std::equal_to<T>()(*theLHS, *theRHS);
     }
 };
 
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/Include/SolarisDefinitions.hpp b/src/xalanc/Include/SolarisDefinitions.hpp
index 1268b52..efbf725 100644
--- a/src/xalanc/Include/SolarisDefinitions.hpp
+++ b/src/xalanc/Include/SolarisDefinitions.hpp
@@ -32,19 +32,6 @@
 #define XALAN_PLATFORM_IMPORT_FUNCTION(T) T XALAN_PLATFORM_IMPORT
 
 
-#define XALAN_HAS_CPP_NAMESPACE
-#define XALAN_STRICT_ANSI_HEADERS
-
-#if defined(_STLP_CONFIG_H)
-#define XALAN_HAS_STD_ITERATORS
-#define XALAN_HAS_STD_DISTANCE
-#else
-#define XALAN_RW_NO_CLASS_PARTIAL_SPEC
-#endif
-
 #define XALAN_POSIX2_AVAILABLE
-#if defined(__sparc)
-#define XALAN_NO_STD_NUMERIC_LIMITS
-#endif
 
 #endif  // SOLARISDEFINITIONS_HEADER_GUARD_1357924680
diff --git a/src/xalanc/Include/TRU64Definitions.hpp b/src/xalanc/Include/TRU64Definitions.hpp
index 772c662..e1240e9 100644
--- a/src/xalanc/Include/TRU64Definitions.hpp
+++ b/src/xalanc/Include/TRU64Definitions.hpp
@@ -35,17 +35,9 @@
 
 // This next line enables standard IO streams.
 #define __USE_STD_IOSTREAM
-#define XALAN_HAS_CPP_NAMESPACE
 #define XALAN_POSIX2_AVAILABLE
-#define XALAN_INLINE_INITIALIZATION
-#define XALAN_HAS_STD_ITERATORS
-#define XALAN_HAS_STD_DISTANCE
 #define XALAN_NO_REENTRANT_TIME_FUNCTIONS
 
-#if defined(__STD_STRICT_ANSI) || defined(__STD_STRICT_ANSI_ERRORS)
-#define XALAN_STRICT_ANSI_HEADERS
-#endif
-
 
 
 #endif  // TRU64DEFINITIONS_HEADER_GUARD_1357924680
diff --git a/src/xalanc/Include/VCPPDefinitions.hpp b/src/xalanc/Include/VCPPDefinitions.hpp
index 3e110db..d296c9c 100644
--- a/src/xalanc/Include/VCPPDefinitions.hpp
+++ b/src/xalanc/Include/VCPPDefinitions.hpp
@@ -35,36 +35,16 @@
 #define XALAN_PLATFORM_IMPORT_FUNCTION(T) XALAN_PLATFORM_IMPORT T
 
 
-#if _MSC_VER >= 1300
-  #define XALAN_INLINE_INITIALIZATION
-  #if !defined(__INTEL_COMPILER)
-    #define XALAN_INLINE_INITIALIZATION_IS_DEFINITION_BUG
-    #if _MSC_VER >= 1400
-      #define XALAN_AUTO_PTR_REQUIRES_DEFINITION
-      #define XALAN_USE_WINDOWS_COLLATION
-    #endif
+#if !defined(__INTEL_COMPILER)
+  #if _MSC_VER >= 1400
+    #define XALAN_AUTO_PTR_REQUIRES_DEFINITION
+    #define XALAN_USE_WINDOWS_COLLATION
   #endif
-  #define XALAN_NEW_STD_ALLOCATOR
-  #define XALAN_HAS_STD_ITERATORS
-  #if _MSC_VER == 1300
-    #define XALAN_VCPP_USE_PTRIT
-  #endif
-#else
-  #define XALAN_REQUIRES_QUALIFIED_DESTRUCTOR
-  #define XALAN_NO_COVARIANT_RETURN_TYPE
 #endif
 
 #define XALAN_NEWLINE_IS_CRLF
-#define XALAN_HAS_CPP_NAMESPACE
-#define XALAN_HAS_STD_DISTANCE
 #define XALAN_NO_REENTRANT_TIME_FUNCTIONS
 
-// long long is not supported on all MS compilers.
-#define XALAN_NO_LONG_LONG
-
-typedef UINT64 XALAN_UINT64;
-typedef INT64  XALAN_INT64;
-
 #define XALAN_WINDOWS
 #define XALAN_WINDOWS_DIR_FUNCTIONS
 #define WINDOWS_THREAD_FUNCTIONS
diff --git a/src/xalanc/Include/XalanAutoPtr.hpp b/src/xalanc/Include/XalanAutoPtr.hpp
index 9cd2e81..8e7bd5b 100644
--- a/src/xalanc/Include/XalanAutoPtr.hpp
+++ b/src/xalanc/Include/XalanAutoPtr.hpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -179,11 +179,7 @@
     }
 
     Type&
-#if defined(XALAN_STRICT_ANSI_HEADERS)
     operator[](std::size_t  index) const
-#else
-    operator[](size_t   index) const
-#endif
     {
         return m_pointer[index];
     }
@@ -223,7 +219,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/Include/XalanDeque.hpp b/src/xalanc/Include/XalanDeque.hpp
index 6c6b21a..4091c62 100644
--- a/src/xalanc/Include/XalanDeque.hpp
+++ b/src/xalanc/Include/XalanDeque.hpp
@@ -31,7 +31,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -65,7 +65,7 @@
     typedef typename Traits::const_reference    const_reference;
     typedef ptrdiff_t                           difference_type;
 
-    typedef XALAN_STD_QUALIFIER random_access_iterator_tag  iterator_category;
+    typedef std::random_access_iterator_tag  iterator_category;
 
     // The non-const iterator type.  In the case of the non-const instatiation, this
     // is the same type.
@@ -215,32 +215,8 @@
     typedef XalanDequeIterator<XalanDequeIteratorTraits<value_type>, ThisType>          iterator;
     typedef XalanDequeIterator<XalanDequeConstIteratorTraits<value_type>, ThisType>     const_iterator;
 
-#if defined(XALAN_HAS_STD_ITERATORS)
-    typedef XALAN_STD_QUALIFIER reverse_iterator<iterator>          reverse_iterator_;
-    typedef XALAN_STD_QUALIFIER reverse_iterator<const_iterator>    const_reverse_iterator_;
-#elif defined(XALAN_RW_NO_CLASS_PARTIAL_SPEC)
-    typedef typename iterator::iterator_category    iterator_category;
-
-    // This is a specific case for the Rogue Wave STL on Solaris.
-    typedef XALAN_STD_QUALIFIER reverse_iterator<
-        iterator,
-        iterator_category,
-        value_type> reverse_iterator_;
-
-    typedef XALAN_STD_QUALIFIER reverse_iterator<
-        const_iterator,
-        iterator_category,
-        const value_type> const_reverse_iterator_;
-#else
-    typedef XALAN_STD_QUALIFIER reverse_iterator<
-        iterator,
-        value_type>        reverse_iterator_;
-
-    typedef XALAN_STD_QUALIFIER reverse_iterator<
-        const_iterator,
-        value_type,
-        const_reference>   const_reverse_iterator_;
-#endif
+    typedef std::reverse_iterator<iterator>          reverse_iterator_;
+    typedef std::reverse_iterator<const_iterator>    const_reverse_iterator_;
 
     typedef reverse_iterator_           reverse_iterator;
     typedef const_reverse_iterator_     const_reverse_iterator;
@@ -260,8 +236,8 @@
     {
         const ConstructableType     defaultValue(*m_memoryManager);
 
-        XALAN_USING_STD(fill_n)
-        XALAN_USING_STD(back_inserter)
+        using std::fill_n;
+        using std::back_inserter;
 
         fill_n(
             back_inserter(*this),
@@ -278,8 +254,8 @@
                     theRHS.size() / theRHS.m_blockSize + (theRHS.size() % theRHS.m_blockSize == 0 ? 0 : 1)),
         m_freeBlockVector(theMemoryManager)
     {
-        XALAN_USING_STD(copy)
-        XALAN_USING_STD(back_inserter)
+        using std::copy;
+        using std::back_inserter;
 
         copy(
             theRHS.begin(),
@@ -469,8 +445,8 @@
     {
         if (this != &theRHS)
         {
-            XALAN_USING_STD(copy)
-            XALAN_USING_STD(back_inserter)
+            using std::copy;
+            using std::back_inserter;
 
             clear();
 
@@ -559,7 +535,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/Include/XalanList.hpp b/src/xalanc/Include/XalanList.hpp
index 4abfe31..cf72f46 100644
--- a/src/xalanc/Include/XalanList.hpp
+++ b/src/xalanc/Include/XalanList.hpp
@@ -39,7 +39,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -68,7 +68,7 @@
     
     typedef ptrdiff_t       difference_type;
 
-    typedef XALAN_STD_QUALIFIER bidirectional_iterator_tag iterator_category;
+    typedef std::bidirectional_iterator_tag iterator_category;
 
     typedef XalanListIteratorBase<XalanListIteratorTraits<value_type>, Node> iterator;
 
@@ -186,32 +186,8 @@
     typedef XalanListIteratorBase<XalanListIteratorTraits<value_type>, Node>        iterator;
     typedef XalanListIteratorBase<XalanListConstIteratorTraits<value_type>, Node>   const_iterator;
 
-#if defined(XALAN_HAS_STD_ITERATORS)
-    typedef XALAN_STD_QUALIFIER reverse_iterator<iterator>          reverse_iterator_;
-    typedef XALAN_STD_QUALIFIER reverse_iterator<const_iterator>    const_reverse_iterator_;
-#elif defined(XALAN_RW_NO_CLASS_PARTIAL_SPEC)
-    typedef typename iterator::iterator_category    iterator_category;
-
-    // This is a specific case for the Rogue Wave STL on Solaris.
-    typedef XALAN_STD_QUALIFIER reverse_iterator<
-        iterator,
-        iterator_category,
-        value_type>         reverse_iterator_;
-
-    typedef XALAN_STD_QUALIFIER reverse_iterator<
-        const_iterator,
-        iterator_category,
-        const value_type>   const_reverse_iterator_;
-#else
-    typedef XALAN_STD_QUALIFIER reverse_iterator<
-        iterator,
-        value_type>         reverse_iterator_;
-
-    typedef XALAN_STD_QUALIFIER reverse_iterator<
-        const_iterator,
-        value_type,
-        const_reference>    const_reverse_iterator_;
-#endif
+    typedef std::reverse_iterator<iterator>          reverse_iterator_;
+    typedef std::reverse_iterator<const_iterator>    const_reverse_iterator_;
 
     typedef reverse_iterator_           reverse_iterator;
     typedef const_reverse_iterator_     const_reverse_iterator;
@@ -450,15 +426,9 @@
 
     void swap(ThisType& theRHS)
     {
-    #if defined(XALAN_NO_STD_NAMESPACE)
-        ::swap(m_memoryManager, theRHS.m_memoryManager);
-        ::swap(m_listHead, theRHS.m_listHead);
-        ::swap(m_freeListHeadPtr, theRHS.m_freeListHeadPtr);
-    #else
-        XALAN_STD_QUALIFIER swap(m_memoryManager, theRHS.m_memoryManager);
-        XALAN_STD_QUALIFIER swap(m_listHead, theRHS.m_listHead);
-        XALAN_STD_QUALIFIER swap(m_freeListHeadPtr, theRHS.m_freeListHeadPtr);
-    #endif
+        std::swap(m_memoryManager, theRHS.m_memoryManager);
+        std::swap(m_listHead, theRHS.m_listHead);
+        std::swap(m_freeListHeadPtr, theRHS.m_freeListHeadPtr);
     }
 
 
@@ -567,6 +537,6 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 #endif  // XALANLIST_HEADER_GUARD_1357924680
diff --git a/src/xalanc/Include/XalanMap.hpp b/src/xalanc/Include/XalanMap.hpp
index 198073a..d0aac2d 100644
--- a/src/xalanc/Include/XalanMap.hpp
+++ b/src/xalanc/Include/XalanMap.hpp
@@ -36,7 +36,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 #if defined(_MSC_VER)
 #pragma warning(push)
@@ -46,7 +46,7 @@
 typedef size_t  size_type;
 
 template <class Key>
-class XalanHasher : public XALAN_STD_QUALIFIER unary_function<Key, size_type>
+class XalanHasher
 {
 public:
     size_type operator()(const Key& key) const
@@ -68,7 +68,7 @@
 struct XalanMapKeyTraits
 {
     typedef XalanHasher<Key>                    Hasher;
-    typedef XALAN_STD_QUALIFIER equal_to<Key>   Comparator;
+    typedef std::equal_to<Key>   Comparator;
 };
 
 
@@ -119,7 +119,7 @@
     typedef typename XalanMapTraits::pointer            pointer;
 
     typedef ptrdiff_t                           difference_type;
-    typedef XALAN_STD_QUALIFIER bidirectional_iterator_tag iterator_category;
+    typedef std::bidirectional_iterator_tag iterator_category;
 
     typedef XalanMapIterator<
         XalanMapIteratorTraits<value_type>, 
@@ -198,7 +198,7 @@
     typedef Value               data_type;
     typedef size_t              size_type;
 
-    typedef XALAN_STD_QUALIFIER pair<const key_type, data_type>   value_type;
+    typedef std::pair<const key_type, data_type>   value_type;
 
     struct Entry
     {
@@ -748,7 +748,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/Include/XalanMemMgrAutoPtr.hpp b/src/xalanc/Include/XalanMemMgrAutoPtr.hpp
index 8804a07..0e029a0 100644
--- a/src/xalanc/Include/XalanMemMgrAutoPtr.hpp
+++ b/src/xalanc/Include/XalanMemMgrAutoPtr.hpp
@@ -35,11 +35,11 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
-XALAN_USING_XERCES(MemoryManager)
+using xercesc::MemoryManager;
 
 // An auto_ptr-like class that supports the MemoryManager class.
 template<class Type>
@@ -47,7 +47,7 @@
 {
 public:
 
-    typedef XALAN_STD_QUALIFIER pair<MemoryManager*, Type*> AutoPtrPairType;
+    typedef std::pair<MemoryManager*, Type*> AutoPtrPairType;
 
     class MemMgrAutoPtrData : public AutoPtrPairType
     {
@@ -218,11 +218,7 @@
 {
 public:
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
     typedef std::size_t     size_type;
-#else
-    typedef size_t          size_type;
-#endif
 
     class MemMgrAutoPtrArrayData 
     {
@@ -444,7 +440,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/Include/XalanMemoryManagement.hpp b/src/xalanc/Include/XalanMemoryManagement.hpp
index 5b6223f..6b4757b 100644
--- a/src/xalanc/Include/XalanMemoryManagement.hpp
+++ b/src/xalanc/Include/XalanMemoryManagement.hpp
@@ -35,11 +35,11 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
-XALAN_USING_XERCES(MemoryManager)
+using xercesc::MemoryManager;
 typedef MemoryManager    MemoryManagerType;
 
 
@@ -48,11 +48,7 @@
 public:
 
 #if XERCES_VERSION_MAJOR < 3
-  #if defined(XALAN_STRICT_ANSI_HEADERS)
     typedef std::size_t     size_type;
-  #else
-    typedef size_t          size_type;
-  #endif
 #else
     typedef XalanSize_t     size_type;
 #endif
@@ -101,11 +97,7 @@
 {
 public:
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
     typedef std::size_t     size_type;
-#else
-    typedef size_t          size_type;
-#endif
 
     XalanAllocationGuard(
                 MemoryManager&  theMemoryManager,
@@ -615,7 +607,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/Include/XalanObjectCache.hpp b/src/xalanc/Include/XalanObjectCache.hpp
index a57a9a7..b0117d0 100644
--- a/src/xalanc/Include/XalanObjectCache.hpp
+++ b/src/xalanc/Include/XalanObjectCache.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -144,9 +144,7 @@
     {
         reset();
 
-#if !defined(XALAN_NO_STD_NAMESPACE)
         using std::for_each;
-#endif
 
         for_each(
                 m_availableList.begin(),
@@ -182,9 +180,7 @@
     bool
     release(ObjectType*     theInstance)
     {
-#if !defined(XALAN_NO_STD_NAMESPACE)
         using std::find;
-#endif
 
         typedef typename VectorType::iterator   IteratorType;
 
@@ -285,9 +281,7 @@
     {
         reset();
 
-#if !defined(XALAN_NO_STD_NAMESPACE)
         using std::for_each;
-#endif
 
         for_each(
                 m_availableList.begin(),
@@ -460,7 +454,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/Include/XalanObjectStackCache.hpp b/src/xalanc/Include/XalanObjectStackCache.hpp
index 2131fae..803e6a8 100644
--- a/src/xalanc/Include/XalanObjectStackCache.hpp
+++ b/src/xalanc/Include/XalanObjectStackCache.hpp
@@ -31,7 +31,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 template<
@@ -67,9 +67,8 @@
 
     ~XalanObjectStackCache()
     {
-#if !defined(XALAN_NO_STD_NAMESPACE)
         using std::for_each;
-#endif
+
         for_each(
                 m_stack.begin(),
                 m_stack.end(),
@@ -162,7 +161,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/Include/XalanSet.hpp b/src/xalanc/Include/XalanSet.hpp
index 2e2679e..4ce3633 100644
--- a/src/xalanc/Include/XalanSet.hpp
+++ b/src/xalanc/Include/XalanSet.hpp
@@ -31,7 +31,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -44,7 +44,7 @@
     typedef Value*  pointer;
 
     typedef ptrdiff_t                                       difference_type;
-    typedef XALAN_STD_QUALIFIER bidirectional_iterator_tag  iterator_category;
+    typedef std::bidirectional_iterator_tag  iterator_category;
 
     XalanSetIterator(const MapIterator&     iter) :
         m_mapIterator(iter)
@@ -180,6 +180,6 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 #endif  // XALANSET_HEADER_GUARD_1357924680
diff --git a/src/xalanc/Include/XalanVector.hpp b/src/xalanc/Include/XalanVector.hpp
index 8376334..b8ed46d 100644
--- a/src/xalanc/Include/XalanVector.hpp
+++ b/src/xalanc/Include/XalanVector.hpp
@@ -39,7 +39,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -50,7 +50,7 @@
 
 
 
-XALAN_USING_XERCES(MemoryManager)
+using xercesc::MemoryManager;
 
 
 
@@ -68,51 +68,11 @@
     typedef size_t              size_type;
     typedef ptrdiff_t           difference_type;
 
-#if defined(XALAN_VCPP_USE_PTRIT)
-    typedef std::_Ptrit<
-                Type,
-                ptrdiff_t,
-                pointer,
-                reference,
-                pointer,
-                reference>          iterator;
-
-    typedef std::_Ptrit<
-                Type,
-                ptrdiff_t,
-                const_pointer,
-                const_reference,
-                pointer,
-                reference>          const_iterator;
-#else
     typedef value_type*             iterator;
     typedef const value_type*       const_iterator;
-#endif
 
-#if defined(XALAN_HAS_STD_ITERATORS)
-    typedef XALAN_STD_QUALIFIER reverse_iterator<iterator>          reverse_iterator_;
-    typedef XALAN_STD_QUALIFIER reverse_iterator<const_iterator>    const_reverse_iterator_;
-#elif defined(XALAN_RW_NO_CLASS_PARTIAL_SPEC)
-    typedef XALAN_STD_QUALIFIER random_access_iterator_tag  iterator_category;
-
-    // This is a specific case for the Rogue Wave STL on Solaris.
-    typedef XALAN_STD_QUALIFIER reverse_iterator<
-        iterator,
-        iterator_category,
-        value_type> reverse_iterator_;
-    typedef XALAN_STD_QUALIFIER reverse_iterator<
-        const_iterator,
-        iterator_category,
-        const value_type> const_reverse_iterator_;
-#else
-    typedef XALAN_STD_QUALIFIER reverse_iterator<
-        iterator,
-        value_type>         reverse_iterator_;
-    typedef XALAN_STD_QUALIFIER reverse_iterator<
-        const_iterator,
-        value_type,
-        const_reference>    const_reverse_iterator_;
-#endif
+    typedef std::reverse_iterator<iterator>          reverse_iterator_;
+    typedef std::reverse_iterator<const_iterator>    const_reverse_iterator_;
 
     typedef reverse_iterator_           reverse_iterator;
     typedef const_reverse_iterator_     const_reverse_iterator;
@@ -276,7 +236,7 @@
 
         if (theFirst != theLast)
         {
-            XALAN_STD_QUALIFIER copy(
+            std::copy(
                 theLast, 
                 end(),
                 theFirst);
@@ -386,7 +346,7 @@
 
                     // copy the remaining part of inserted range into 
                     // the original vector spaces
-                    XALAN_STD_QUALIFIER copy(theFirst, toInsertSplit, thePosition);
+                    std::copy(theFirst, toInsertSplit, thePosition);
                 }
                 else
                 {
@@ -403,10 +363,10 @@
                     }
 
                     // reverse copy the remaining part of the "right" piece of the current vector
-                    XALAN_STD_QUALIFIER copy_backward(thePosition, theOriginalEnd - theInsertSize, theOriginalEnd);
+                    std::copy_backward(thePosition, theOriginalEnd - theInsertSize, theOriginalEnd);
 
                     // insert into current vector
-                    XALAN_STD_QUALIFIER copy(theFirst, theLast, thePosition);
+                    std::copy(theFirst, theLast, thePosition);
                 }
             }
         }
@@ -487,7 +447,7 @@
 
                     // copy the remaining part of inserted range into 
                     // the original vector spaces
-                    XALAN_STD_QUALIFIER fill(thePosition, thePosition + theRightSplitSize, theData);
+                    std::fill(thePosition, thePosition + theRightSplitSize, theData);
                 }
                 else
                 {
@@ -504,10 +464,10 @@
                     }
 
                     // reverse copy the remaining part of the "right" piece of the current vector
-                    XALAN_STD_QUALIFIER copy_backward(thePosition, theOriginalEnd - theCount, theOriginalEnd);
+                    std::copy_backward(thePosition, theOriginalEnd - theCount, theOriginalEnd);
 
                     // insert into current vector
-                    XALAN_STD_QUALIFIER fill(thePosition, thePosition + theCount, theData);
+                    std::fill(thePosition, thePosition + theCount, theData);
                 }
             }
         }
@@ -838,7 +798,7 @@
                 }
 
                 // Copy everything that already exists...
-                XALAN_STD_QUALIFIER copy(
+                std::copy(
                     theRHS.begin(),
                     theRHSCopyEnd,
                     begin());
@@ -933,15 +893,7 @@
         // assert this...
         assert(theFirst <= theLast);
 
-#if defined(XALAN_HAS_STD_DISTANCE)
-        return XALAN_STD_QUALIFIER distance(theFirst, theLast);
-#else
-        size_type   theDistance = size_type(0);
-
-        XALAN_STD_QUALIFIER distance(theFirst, theLast, theDistance);
-
-        return theDistance;
-#endif
+        return std::distance(theFirst, theLast);
     }
 
     value_type*
@@ -1097,7 +1049,7 @@
     static void
     outOfRange()
     {
-        throw XALAN_STD_QUALIFIER out_of_range("");
+        throw std::out_of_range("");
     }
 
     void
@@ -1177,7 +1129,7 @@
     }
     else
     {
-        return XALAN_STD_QUALIFIER equal(theLHS.begin(), theLHS.end(), theRHS.begin());
+        return std::equal(theLHS.begin(), theLHS.end(), theRHS.begin());
     }
 }
 
@@ -1200,7 +1152,7 @@
             const XalanVector<Type>&    theLHS,
             const XalanVector<Type>&    theRHS)
 {
-    return XALAN_STD_QUALIFIER lexicographical_compare(
+    return std::lexicographical_compare(
                 theLHS.begin(),
                 theLHS.end(),
                 theRHS.begin(),
@@ -1248,7 +1200,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/ArenaAllocator.hpp b/src/xalanc/PlatformSupport/ArenaAllocator.hpp
index 9889f64..a3118bc 100644
--- a/src/xalanc/PlatformSupport/ArenaAllocator.hpp
+++ b/src/xalanc/PlatformSupport/ArenaAllocator.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -199,7 +199,7 @@
     virtual void
     reset()
     {
-        XALAN_STD_QUALIFIER for_each(
+        std::for_each(
             m_blocks.begin(),
             m_blocks.end(),
             DeleteFunctor<ArenaBlockType>(m_blocks.getMemoryManager()));
@@ -228,7 +228,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/ArenaBlock.hpp b/src/xalanc/PlatformSupport/ArenaBlock.hpp
index 252e0a6..eb464a4 100644
--- a/src/xalanc/PlatformSupport/ArenaBlock.hpp
+++ b/src/xalanc/PlatformSupport/ArenaBlock.hpp
@@ -26,7 +26,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 template<class ObjectType,
@@ -152,7 +152,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/ArenaBlockBase.hpp b/src/xalanc/PlatformSupport/ArenaBlockBase.hpp
index 8970576..8863462 100644
--- a/src/xalanc/PlatformSupport/ArenaBlockBase.hpp
+++ b/src/xalanc/PlatformSupport/ArenaBlockBase.hpp
@@ -32,7 +32,7 @@
 #endif
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 #if defined(XALAN_NO_SELECTIVE_TEMPLATE_INSTANTIATION)
@@ -192,11 +192,7 @@
         m_allocator(theManager),
         m_objectCount(0),
         m_blockSize(theBlockSize),
-#if defined(XALAN_NEW_STD_ALLOCATOR)
         m_objectBlock(m_allocator.allocate(m_blockSize))
-#else
-        m_objectBlock(m_allocator.allocate(m_blockSize, 0))
-#endif
     {
         assert(theBlockSize > 0);
 
@@ -229,7 +225,7 @@
 
         // Use less<>, since it's guaranteed to do pointer
         // comparisons correctly...
-        XALAN_STD_QUALIFIER less<const ObjectType*>     functor;
+        std::less<const ObjectType*>     functor;
 
         if (functor(theObject, m_objectBlock) == false &&
             functor(theObject, m_objectBlock + rightBoundary) == true)
@@ -296,7 +292,7 @@
     operator==(const ThisType&) const;
 };
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/AttributeListImpl.cpp b/src/xalanc/PlatformSupport/AttributeListImpl.cpp
index 6390f0b..f50d80e 100644
--- a/src/xalanc/PlatformSupport/AttributeListImpl.cpp
+++ b/src/xalanc/PlatformSupport/AttributeListImpl.cpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -92,7 +92,7 @@
 AttributeListImpl::deleteEntries(AttributeVectorType&   theVector)
 {
     // Delete all of the objects in the vector.
-    XALAN_STD_QUALIFIER for_each(
+    std::for_each(
         theVector.begin(),
         theVector.end(),
         DeleteFunctor<AttributeVectorEntry>(theVector.getMemoryManager()));
@@ -268,7 +268,7 @@
     assert(name != 0);
 
     const AttributeVectorType::const_iterator   i =
-        XALAN_STD_QUALIFIER find_if(
+        std::find_if(
             m_AttributeVector.begin(),
             m_AttributeVector.end(),
             NameCompareFunctor(name));
@@ -291,7 +291,7 @@
     assert(name != 0);
 
     const AttributeVectorType::const_iterator   i =
-        XALAN_STD_QUALIFIER find_if(
+        std::find_if(
             m_AttributeVector.begin(),
             m_AttributeVector.end(),
             NameCompareFunctor(name));
@@ -332,8 +332,8 @@
 
     bool    fResult = false;
 
-    XALAN_USING_STD(find_if)
-    XALAN_USING_STD(copy)
+    using std::find_if;
+    using std::copy;
 
     typedef AttributeVectorEntry::XMLChVectorType   XMLChVectorType;
 
@@ -450,7 +450,7 @@
 
     // Update the attribute, if it's already there...
     const AttributeVectorType::iterator     i =
-        XALAN_STD_QUALIFIER find_if(
+        std::find_if(
             m_AttributeVector.begin(),
             m_AttributeVector.end(),
             NameCompareFunctor(name));
@@ -469,4 +469,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/PlatformSupport/AttributeListImpl.hpp b/src/xalanc/PlatformSupport/AttributeListImpl.hpp
index 0e5929a..eb198e5 100644
--- a/src/xalanc/PlatformSupport/AttributeListImpl.hpp
+++ b/src/xalanc/PlatformSupport/AttributeListImpl.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -42,7 +42,7 @@
 
 
 
-typedef XERCES_CPP_NAMESPACE_QUALIFIER AttributeList    AttributeListType;
+typedef xercesc::AttributeList    AttributeListType;
 
 
 
@@ -180,7 +180,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/AttributeVectorEntry.hpp b/src/xalanc/PlatformSupport/AttributeVectorEntry.hpp
index 092bd85..5949c22 100644
--- a/src/xalanc/PlatformSupport/AttributeVectorEntry.hpp
+++ b/src/xalanc/PlatformSupport/AttributeVectorEntry.hpp
@@ -31,7 +31,7 @@
 #include <xalanc/Include/XalanMemMgrAutoPtr.hpp>
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -123,7 +123,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/AttributeVectorEntryExtended.hpp b/src/xalanc/PlatformSupport/AttributeVectorEntryExtended.hpp
index 50f9551..536841f 100644
--- a/src/xalanc/PlatformSupport/AttributeVectorEntryExtended.hpp
+++ b/src/xalanc/PlatformSupport/AttributeVectorEntryExtended.hpp
@@ -29,7 +29,7 @@
 
 #include <xalanc/Include/XalanMemMgrAutoPtr.hpp>
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -144,7 +144,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/AttributesImpl.cpp b/src/xalanc/PlatformSupport/AttributesImpl.cpp
index 7b7c8f9..dd25abd 100644
--- a/src/xalanc/PlatformSupport/AttributesImpl.cpp
+++ b/src/xalanc/PlatformSupport/AttributesImpl.cpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -92,7 +92,7 @@
 AttributesImpl::deleteEntries(AttributesVectorType&     theVector)
 {
     // Delete all of the objects in the vector.
-    XALAN_STD_QUALIFIER for_each(
+    std::for_each(
             theVector.begin(),
             theVector.end(),
             DeleteFunctor<AttributeVectorEntryExtended>(theVector.getMemoryManager()));
@@ -400,7 +400,7 @@
     assert(uri != 0 && localPart != 0);
 
     const AttributesVectorType::const_iterator  i =
-        XALAN_STD_QUALIFIER find_if(
+        std::find_if(
             m_attributesVector.begin(),
             m_attributesVector.end(),
             URIAndLocalNameCompareFunctor(uri, localPart));
@@ -447,7 +447,7 @@
     assert(qname != 0);
 
     const AttributesVectorType::const_iterator  i =
-        XALAN_STD_QUALIFIER find_if(
+        std::find_if(
             m_attributesVector.begin(),
             m_attributesVector.end(),
             NameCompareFunctor(qname));
@@ -560,7 +560,7 @@
 
     // Update the attribute, if it's already there...
     const AttributesVectorType::iterator        i =
-        XALAN_STD_QUALIFIER find_if(
+        std::find_if(
             m_attributesVector.begin(),
             m_attributesVector.end(),
             NameCompareFunctor(name));
@@ -579,4 +579,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/PlatformSupport/AttributesImpl.hpp b/src/xalanc/PlatformSupport/AttributesImpl.hpp
index e0caacb..e478bdf 100644
--- a/src/xalanc/PlatformSupport/AttributesImpl.hpp
+++ b/src/xalanc/PlatformSupport/AttributesImpl.hpp
@@ -33,7 +33,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -41,7 +41,7 @@
 
 
 
-typedef XERCES_CPP_NAMESPACE_QUALIFIER Attributes   AttributesType;
+typedef xercesc::Attributes   AttributesType;
 
 
 
@@ -238,7 +238,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/DOMStringHelper.cpp b/src/xalanc/PlatformSupport/DOMStringHelper.cpp
index 7124ad4..111bcbd 100644
--- a/src/xalanc/PlatformSupport/DOMStringHelper.cpp
+++ b/src/xalanc/PlatformSupport/DOMStringHelper.cpp
@@ -35,11 +35,7 @@
 
 
 
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <iostream.h>
-#else
 #include <iostream>
-#endif
 
 
 
@@ -53,13 +49,11 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
-#if defined (XALAN_STRICT_ANSI_HEADERS)
-    using std::size_t;
-#endif
+using std::size_t;
 
 
 
@@ -326,26 +320,19 @@
 
 
 
-XALAN_USING_STD(ostream)
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-typedef int     streamsize;
-#else
-XALAN_USING_STD(streamsize)
-#endif
-
 XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(void)
 OutputString(
-            ostream&                theStream,
+            std::ostream&           theStream,
             const CharVectorType&   theString)
 {
     if (theString.empty() == false)
     {
         assert(
-            static_cast<XALAN_UINT64>(static_cast<streamsize>(theString.size())) == theString.size());
+            static_cast<XMLUInt64>(static_cast<std::streamsize>(theString.size())) == theString.size());
 
         theStream.write(
             &*theString.begin(),
-            static_cast<streamsize>(theString.size()));
+            static_cast<std::streamsize>(theString.size()));
     }
 }
 
@@ -365,7 +352,7 @@
 
 XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(void)
 OutputString(
-            ostream&                theStream,
+            std::ostream&           theStream,
             const XalanDOMChar*     theString,
             MemoryManager&          theMemoryManager)
 {
@@ -456,7 +443,7 @@
             OutputIteratorType  theOutputIterator,
             FunctionType        theFunction)
 {
-    return XALAN_STD_QUALIFIER transform(
+    return std::transform(
             theInputBegin,
             theInputEnd,
             theOutputIterator,
@@ -478,7 +465,7 @@
     TransformString(
             theInputString,
             theInputString + theInputStringLength,
-            XALAN_STD_QUALIFIER back_inserter(theConvertedString),
+            std::back_inserter(theConvertedString),
             theFunction);
 
     return theConvertedString;
@@ -996,10 +983,10 @@
 
         theResult.reserve(theLength);
 
-        XALAN_STD_QUALIFIER copy(
+        std::copy(
             data,
             data + theLength,
-            XALAN_STD_QUALIFIER back_inserter(theResult));
+            std::back_inserter(theResult));
     }
 
     return theResult;
@@ -1398,9 +1385,7 @@
 {
     char            theBuffer[MAX_PRINTF_DIGITS + 1];
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
-    XALAN_USING_STD(sprintf);
-#endif
+    using std::sprintf;;
 
     const int   theCharsWritten = sprintf(theBuffer, "%p", theValue);
     assert(theCharsWritten != 0);
@@ -1410,7 +1395,7 @@
     TranscodeNumber(
             theBuffer,
             theBuffer + theCharsWritten,
-            XALAN_STD_QUALIFIER back_inserter(theResult));
+            std::back_inserter(theResult));
 
     return theResult;
 }
@@ -1448,19 +1433,17 @@
             theZeroString,
             sizeof(theZeroString) / sizeof(theZeroString[0]) - 1);
     }
-    else if (static_cast<XALAN_INT64>(theValue) == theValue)
+    else if (static_cast<XMLInt64>(theValue) == theValue)
     {
-        NumberToCharacters(static_cast<XALAN_INT64>(theValue), formatterListener, function);
+        NumberToCharacters(static_cast<XMLInt64>(theValue), formatterListener, function);
     }
     else
     {
         char            theBuffer[MAX_PRINTF_DIGITS + 1];
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
-        XALAN_USING_STD(sprintf)
-        XALAN_USING_STD(atof)
-        XALAN_USING_STD(isdigit)
-#endif
+        using std::sprintf;
+        using std::atof;
+        using std::isdigit;
 
         const char* const *     thePrintfString = thePrintfStrings;
 
@@ -1666,7 +1649,7 @@
 
 void
 DOMStringHelper::NumberToCharacters(
-            long                theValue,
+            XMLInt32            theValue,
             FormatterListener&  formatterListener,
             MemberFunctionPtr   function)
 {
@@ -1684,7 +1667,7 @@
 
 void
 DOMStringHelper::NumberToCharacters(
-            XALAN_INT64     theValue,
+            XMLInt64     theValue,
             FormatterListener&  formatterListener,
             MemberFunctionPtr   function)
 {
@@ -1702,7 +1685,7 @@
 
 XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(XalanDOMString&)
 NumberToDOMString(
-            XALAN_INT64         theValue,
+            XMLInt64         theValue,
             XalanDOMString&     theResult)
 {
     return ScalarToDecimalString(theValue, theResult);
@@ -1712,7 +1695,7 @@
 
 XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(XalanDOMString&)
 NumberToDOMString(
-            XALAN_UINT64        theValue,
+            XMLUInt64        theValue,
             XalanDOMString&     theResult)
 {
     return ScalarToDecimalString(theValue, theResult);
@@ -1750,19 +1733,17 @@
             theZeroString,
             sizeof(theZeroString) / sizeof(theZeroString[0]) - 1);
     }
-    else if (static_cast<XALAN_INT64>(theValue) == theValue)
+    else if (static_cast<XMLInt64>(theValue) == theValue)
     {
-        NumberToDOMString(static_cast<XALAN_INT64>(theValue), theResult);
+        NumberToDOMString(static_cast<XMLInt64>(theValue), theResult);
     }
     else
     {
         char            theBuffer[MAX_PRINTF_DIGITS + 1];
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
-        XALAN_USING_STD(sprintf)
-        XALAN_USING_STD(atof)
-        XALAN_USING_STD(isdigit)
-#endif
+        using std::sprintf;
+        using std::atof;
+        using std::isdigit;
 
         const char* const *     thePrintfString = thePrintfStrings;
 
@@ -1827,7 +1808,7 @@
         TranscodeNumber(
                 theBuffer,
                 theBuffer + theCharsWritten,
-                XALAN_STD_QUALIFIER back_inserter(theResult));
+                std::back_inserter(theResult));
     }
 
     return theResult;
@@ -1838,7 +1819,7 @@
 
 XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(XalanDOMString&)
 NumberToHexDOMString(
-            XALAN_UINT64        theValue,
+            XMLUInt64        theValue,
             XalanDOMString&     theResult)
 {
     return UnsignedScalarToHexadecimalString(theValue, theResult);
@@ -1848,7 +1829,7 @@
 
 XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(XalanDOMString&)
 NumberToHexDOMString(
-            XALAN_INT64         theValue,
+            XMLInt64         theValue,
             XalanDOMString&     theResult)
 {
     return UnsignedScalarToHexadecimalString(theValue, theResult);
@@ -1917,4 +1898,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/PlatformSupport/DOMStringHelper.hpp b/src/xalanc/PlatformSupport/DOMStringHelper.hpp
index 263e1f6..c52b431 100644
--- a/src/xalanc/PlatformSupport/DOMStringHelper.hpp
+++ b/src/xalanc/PlatformSupport/DOMStringHelper.hpp
@@ -28,11 +28,7 @@
 #include <algorithm>
 #include <cassert>
 #include <functional>
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-class ostream;
-#else
 #include <iosfwd>
-#endif
 
 
 
@@ -53,11 +49,11 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
-XALAN_USING_XERCES(MemoryManager)
+using xercesc::MemoryManager;
 
 
 
@@ -72,7 +68,7 @@
             InputIteratorType   end,
             OutputIteratorType  iterator)
 {
-    return XALAN_STD_QUALIFIER copy(begin, end, iterator);
+    return std::copy(begin, end, iterator);
 }
 
 
@@ -85,7 +81,7 @@
             OutputIteratorType  iterator,
             UnaryFunction       function)
 {
-    return XALAN_STD_QUALIFIER transform(begin, end, iterator);
+    return std::transform(begin, end, iterator);
 }
 
 
@@ -694,13 +690,13 @@
 
     static void
     NumberToCharacters(
-            long                theValue,
+            XMLInt32            theValue,
             FormatterListener&  formatterListener,
             MemberFunctionPtr   function);
 
     static void
     NumberToCharacters(
-            XALAN_INT64         theValue,
+            XMLInt64         theValue,
             FormatterListener&  formatterListener,
             MemberFunctionPtr   function);
 };
@@ -722,7 +718,7 @@
 
 
 /**
- * Converts an 64-bit unsigned value into a XalanDOMString
+ * Converts an 64-bit unsigned int value into a XalanDOMString
  * 
  * @param theValue number to be converted
  * @param theResult the string to append with the result
@@ -730,13 +726,13 @@
  */
 XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(XalanDOMString&)
 NumberToDOMString(
-            XALAN_UINT64        theValue,
+            XMLUInt64        theValue,
             XalanDOMString&     theResult);
 
 
 
 /**
- * Converts an 64-bit signed value into a XalanDOMString
+ * Converts an 64-bit signed int value into a XalanDOMString
  * 
  * @param theValue number to be converted
  * @param theResult the string to append with the result
@@ -744,13 +740,13 @@
  */
 XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(XalanDOMString&)
 NumberToDOMString(
-            XALAN_INT64         theValue,
+            XMLInt64         theValue,
             XalanDOMString&     theResult);
 
 
 
 /**
- * Converts an unsigned long value into a XalanDOMString
+ * Converts a 32-bit unsigned int value into a XalanDOMString
  * 
  * @param theValue number to be converted
  * @param theResult the string to append with the result
@@ -758,18 +754,18 @@
  */
 inline XalanDOMString&
 NumberToDOMString(
-            unsigned long       theValue,
+            XMLUInt32           theValue,
             XalanDOMString&     theResult)
 {
     return NumberToDOMString(
-                static_cast<XALAN_UINT64>(theValue),
+                static_cast<XMLUInt64>(theValue),
                 theResult);
 }
 
 
 
 /**
- * Converts a XalanSSize_t value into a XalanDOMString
+ * Converts a 32-bit int value into a XalanDOMString
  * 
  * @param theValue number to be converted
  * @param theResult the string to append with the result
@@ -777,18 +773,18 @@
  */
 inline XalanDOMString&
 NumberToDOMString(
-            long                theValue,
+            XMLInt32            theValue,
             XalanDOMString&     theResult)
 {
     return NumberToDOMString(
-                static_cast<XALAN_INT64>(theValue),
+                static_cast<XMLInt64>(theValue),
                 theResult);
 }
 
 
 
 /**
- * Converts an unsigned int value into a XalanDOMString
+ * Converts a 16-bit unsigned int value into a XalanDOMString
  * 
  * @param theValue number to be converted
  * @param theResult the string to append with the result
@@ -796,18 +792,18 @@
  */
 inline XalanDOMString&
 NumberToDOMString(
-            unsigned int        theValue,
+            XMLUInt16           theValue,
             XalanDOMString&     theResult)
 {
     return NumberToDOMString(
-                static_cast<XALAN_UINT64>(theValue),
+                static_cast<XMLUInt64>(theValue),
                 theResult);
 }
 
 
 
 /**
- * Converts an int value into a XalanDOMString
+ * Converts a 16-bit int value into a XalanDOMString
  * 
  * @param theValue number to be converted
  * @param theResult the string to append with the result
@@ -815,56 +811,18 @@
  */
 inline XalanDOMString&
 NumberToDOMString(
-            int                 theValue,
+            XMLInt16            theValue,
             XalanDOMString&     theResult)
 {
     return NumberToDOMString(
-                static_cast<XALAN_INT64>(theValue),
+                static_cast<XMLInt64>(theValue),
                 theResult);
 }
 
 
 
 /**
- * Converts an unsigned short value into a XalanDOMString
- * 
- * @param theValue number to be converted
- * @param theResult the string to append with the result
- * @return a reference to the passed string result.
- */
-inline XalanDOMString&
-NumberToDOMString(
-            unsigned short      theValue,
-            XalanDOMString&     theResult)
-{
-    return NumberToDOMString(
-                static_cast<XALAN_UINT64>(theValue),
-                theResult);
-}
-
-
-
-/**
- * Converts a short value into a XalanDOMString
- * 
- * @param theValue number to be converted
- * @param theResult the string to append with the result
- * @return a reference to the passed string result.
- */
-inline XalanDOMString&
-NumberToDOMString(
-            short               theValue,
-            XalanDOMString&     theResult)
-{
-    return NumberToDOMString(
-                static_cast<XALAN_INT64>(theValue),
-                theResult);
-}
-
-
-
-/**
- * Converts an 64-bit unsigned value into a XalanDOMString
+ * Converts an 64-bit unsigned int value into a XalanDOMString
  * 
  * @param theValue number to be converted
  * @param theResult the string to append with the result
@@ -872,13 +830,13 @@
  */
 XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(XalanDOMString&)
 NumberToHexDOMString(
-            XALAN_UINT64        theValue,
+            XMLUInt64        theValue,
             XalanDOMString&     theResult);
 
 
 
 /**
- * Converts an 64-bit signed value into a XalanDOMString
+ * Converts an 64-bit signed int value into a XalanDOMString
  * 
  * @param theValue number to be converted
  * @param theResult the string to append with the result
@@ -886,13 +844,13 @@
  */
 XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(XalanDOMString&)
 NumberToHexDOMString(
-            XALAN_INT64         theValue,
+            XMLInt64         theValue,
             XalanDOMString&     theResult);
 
 
 
 /**
- * Converts a XalanSSize_t value into a XalanDOMString
+ * Converts a 32-bit unsigned int value into a XalanDOMString
  * 
  * @param theValue number to be converted
  * @param theResult the string to append with the result
@@ -900,18 +858,18 @@
  */
 inline XalanDOMString&
 NumberToHexDOMString(
-            unsigned long       theValue,
+            XMLUInt32           theValue,
             XalanDOMString&     theResult)
 {
     return NumberToHexDOMString(
-                static_cast<XALAN_UINT64>(theValue),
+                static_cast<XMLUInt64>(theValue),
                 theResult);
 }
 
 
 
 /**
- * Converts a XalanSSize_t value into a XalanDOMString
+ * Converts a 32-bit signed int value into a XalanDOMString
  * 
  * @param theValue number to be converted
  * @param theResult the string to append with the result
@@ -919,18 +877,18 @@
  */
 inline XalanDOMString&
 NumberToHexDOMString(
-            long                theValue,
+            XMLInt32            theValue,
             XalanDOMString&     theResult)
 {
     return NumberToHexDOMString(
-                static_cast<XALAN_INT64>(theValue),
+                static_cast<XMLInt64>(theValue),
                 theResult);
 }
 
 
 
 /**
- * Converts an unsigned int value into a XalanDOMString
+ * Converts a 16-bit unsigned int value into a XalanDOMString
  * 
  * @param theValue number to be converted
  * @param theResult the string to append with the result
@@ -938,18 +896,18 @@
  */
 inline XalanDOMString&
 NumberToHexDOMString(
-            unsigned int        theValue,
+            XMLUInt16           theValue,
             XalanDOMString&     theResult)
 {
     return NumberToHexDOMString(
-                static_cast<XALAN_UINT64>(theValue),
+                static_cast<XMLUInt64>(theValue),
                 theResult);
 }
 
 
 
 /**
- * Converts an int value into a XalanDOMString
+ * Converts a 16-bit signed int value into a XalanDOMString
  * 
  * @param theValue number to be converted
  * @param theResult the string to append with the result
@@ -957,49 +915,11 @@
  */
 inline XalanDOMString&
 NumberToHexDOMString(
-            int                 theValue,
+            XMLInt16            theValue,
             XalanDOMString&     theResult)
 {
     return NumberToHexDOMString(
-                static_cast<XALAN_INT64>(theValue),
-                theResult);
-}
-
-
-
-/**
- * Converts an unsigned short value into a XalanDOMString
- * 
- * @param theValue number to be converted
- * @param theResult the string to append with the result
- * @return a reference to the passed string result.
- */
-inline XalanDOMString&
-NumberToHexDOMString(
-            unsigned short      theValue,
-            XalanDOMString&     theResult)
-{
-    return NumberToHexDOMString(
-                static_cast<XALAN_UINT64>(theValue),
-                theResult);
-}
-
-
-
-/**
- * Converts a short value into a XalanDOMString
- * 
- * @param theValue number to be converted
- * @param theResult the string to append with the result
- * @return a reference to the passed string result.
- */
-inline XalanDOMString&
-NumberToHexDOMString(
-            short               theValue,
-            XalanDOMString&     theResult)
-{
-    return NumberToHexDOMString(
-                static_cast<XALAN_INT64>(theValue),
+                static_cast<XMLInt64>(theValue),
                 theResult);
 }
 
@@ -1136,11 +1056,7 @@
  */
 XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(void)
 OutputString(
-#if defined(XALAN_NO_STD_NAMESPACE)
-            ostream&                theStream,
-#else
             std::ostream&           theStream,
-#endif
             const CharVectorType&   theString);
 
 
@@ -1168,11 +1084,7 @@
  */
 XALAN_PLATFORMSUPPORT_EXPORT_FUNCTION(void)
 OutputString(
-#if defined(XALAN_NO_STD_NAMESPACE)
-            ostream&                theStream,
-#else
             std::ostream&           theStream,
-#endif
             const XalanDOMChar*     theString,
             MemoryManager&          theMemoryManager);
 
@@ -1210,11 +1122,7 @@
  */
 inline void
 OutputString(
-#if defined(XALAN_NO_STD_NAMESPACE)
-            ostream&                theStream,
-#else
             std::ostream&           theStream,
-#endif
             const XalanDOMString&   theString,
             MemoryManager&          theMemoryManager)
 {
@@ -1254,15 +1162,9 @@
  * @param theString the string to output
  * @see OutputString
  */
-#if defined(XALAN_NO_STD_NAMESPACE)
-inline ostream&
-operator<<(
-            ostream&                theStream,
-#else
 inline std::ostream&
 operator<<(
             std::ostream&           theStream,
-#endif
             const CharVectorType&   theString)
 {
     OutputString(
@@ -1302,15 +1204,9 @@
  * @param theString target string
  * @see OutputString
  */
-#if defined(XALAN_NO_STD_NAMESPACE)
-inline ostream&
-operator<<(
-            ostream&                theStream,
-#else
 inline std::ostream&
 operator<<(
             std::ostream&           theStream,
-#endif
             const XalanDOMChar*     theString)
 {
     OutputString(
@@ -1350,15 +1246,9 @@
  * @param theString target string
  * @see OutputString
  */
-#if defined(XALAN_NO_STD_NAMESPACE)
-inline ostream&
-operator<<(
-            ostream&                theStream,
-#else
 inline std::ostream&
 operator<<(
             std::ostream&           theStream,
-#endif
             const XalanDOMString&   theString)
 {
     OutputString(
@@ -1378,15 +1268,9 @@
  * @param theString target string
  * @see OutputString
  */
-#if defined(XALAN_NO_STD_NAMESPACE)
-inline ostream&
-operator<<(
-            ostream&            theStream,
-#else
 inline std::ostream&
 operator<<(
             std::ostream&       theStream,
-#endif
             XalanDOMString&     theString)
 {
     OutputString(
@@ -2683,14 +2567,10 @@
 
 
 
-#if defined(XALAN_NO_STD_NAMESPACE)
-struct c_wstr_functor : public unary_function<XalanDOMString, const XalanDOMChar*>
-#else
-struct c_wstr_functor : public std::unary_function<XalanDOMString, const XalanDOMChar*>
-#endif
+struct c_wstr_functor
 {
-    result_type
-    operator() (const argument_type&    theString) const
+    const XalanDOMChar*
+    operator() (const XalanDOMString&    theString) const
     {
         return theString.c_str();
     }
@@ -2705,15 +2585,11 @@
  * @param theRHS second string to compare
  * @return true if the theLHS is less than theRHS, without respect to case.
  */
-#if defined(XALAN_NO_STD_NAMESPACE)
-struct DOMStringLessThanIgnoreCaseASCIIFunction : public binary_function<const XalanDOMString&, const XalanDOMString&, bool>
-#else
-struct DOMStringLessThanIgnoreCaseASCIIFunction : public std::binary_function<const XalanDOMString&, const XalanDOMString&, bool>
-#endif
+struct DOMStringLessThanIgnoreCaseASCIIFunction
 {
-    result_type
-    operator() (first_argument_type     theLHS,
-                second_argument_type    theRHS) const
+    bool
+    operator() (const XalanDOMString&    theLHS,
+                const XalanDOMString&    theRHS) const
     {
         return compareIgnoreCaseASCII(theLHS, theRHS) < 0 ? true : false;
     }
@@ -2728,15 +2604,11 @@
  * @param theRHS second string to compare
  * @return true if the theLHS is less than or equal to theRHS
  */
-#if defined(XALAN_NO_STD_NAMESPACE)
-struct DOMStringLessThanOrEqualFunction : public binary_function<const XalanDOMString&, const XalanDOMString&, bool>
-#else
-struct DOMStringLessThanOrEqualFunction : public std::binary_function<const XalanDOMString&, const XalanDOMString&, bool>
-#endif
+struct DOMStringLessThanOrEqualFunction
 {
-    result_type
-    operator() (first_argument_type     theLHS,
-                second_argument_type    theRHS) const
+    bool
+    operator() (const XalanDOMString&    theLHS,
+                const XalanDOMString&    theRHS) const
     {
         return compare(theLHS, theRHS) <= 0 ? true : false;
     }
@@ -2751,15 +2623,11 @@
  * @param theRHS second string to compare
  * @return true if the theLHS is greater than theRHS
  */
-#if defined(XALAN_NO_STD_NAMESPACE)
-struct DOMStringGreaterThanFunction : public binary_function<const XalanDOMString&, const XalanDOMString&, bool>
-#else
-struct DOMStringGreaterThanFunction : public std::binary_function<const XalanDOMString&, const XalanDOMString&, bool>
-#endif
+struct DOMStringGreaterThanFunction
 {
-    result_type
-    operator() (first_argument_type     theLHS,
-                second_argument_type    theRHS) const
+    bool
+    operator() (const XalanDOMString&    theLHS,
+                const XalanDOMString&    theRHS) const
     {
         return compare(theLHS, theRHS) > 0 ? true : false;
     }
@@ -2774,15 +2642,11 @@
  * @param theRHS second string to compare
  * @return true if the theLHS is greater than or equal to theRHS
  */
-#if defined(XALAN_NO_STD_NAMESPACE)
-struct DOMStringGreaterThanOrEqualFunction : public binary_function<const XalanDOMString&, const XalanDOMString&, bool>
-#else
-struct DOMStringGreaterThanOrEqualFunction : public std::binary_function<const XalanDOMString&, const XalanDOMString&, bool>
-#endif
+struct DOMStringGreaterThanOrEqualFunction
 {
-    result_type
-    operator() (first_argument_type     theLHS,
-                second_argument_type    theRHS) const
+    bool
+    operator() (const XalanDOMString&    theLHS,
+                const XalanDOMString&    theRHS) const
     {
         return compare(theLHS, theRHS) >= 0 ? true : false;
     }
@@ -2795,11 +2659,7 @@
  * manner.  It substitutes for the default less<type*> so that the contents of wide strings
  * can be compared, rather than just the pointers.
  */
-#if defined(XALAN_NO_STD_NAMESPACE)
-struct less_no_case_ascii_wide_string : public binary_function<const XalanDOMChar*, const XalanDOMChar*, bool>
-#else
-struct less_no_case_ascii_wide_string : public std::binary_function<const XalanDOMChar*, const XalanDOMChar*, bool>
-#endif
+struct less_no_case_ascii_wide_string
 {
     /**
      * Compare the values of two objects.
@@ -2809,10 +2669,10 @@
      * @param theRHS second object to compare
      * @return true if objects are the same
      */
-    result_type
+    bool
     operator()(
-            first_argument_type     theLHS,
-            second_argument_type    theRHS) const
+            const XalanDOMChar*    theLHS,
+            const XalanDOMChar*    theRHS) const
     {
         return compareIgnoreCaseASCII(theLHS, theRHS) < 0 ? true : false;
     }
@@ -2863,7 +2723,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/DOMStringPrintWriter.cpp b/src/xalanc/PlatformSupport/DOMStringPrintWriter.cpp
index 99970e9..9d68498 100644
--- a/src/xalanc/PlatformSupport/DOMStringPrintWriter.cpp
+++ b/src/xalanc/PlatformSupport/DOMStringPrintWriter.cpp
@@ -24,7 +24,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -319,4 +319,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/PlatformSupport/DOMStringPrintWriter.hpp b/src/xalanc/PlatformSupport/DOMStringPrintWriter.hpp
index 511d750..979ec59 100644
--- a/src/xalanc/PlatformSupport/DOMStringPrintWriter.hpp
+++ b/src/xalanc/PlatformSupport/DOMStringPrintWriter.hpp
@@ -33,7 +33,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -171,7 +171,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/DirectoryEnumerator.hpp b/src/xalanc/PlatformSupport/DirectoryEnumerator.hpp
index 627d78c..2384c70 100644
--- a/src/xalanc/PlatformSupport/DirectoryEnumerator.hpp
+++ b/src/xalanc/PlatformSupport/DirectoryEnumerator.hpp
@@ -51,11 +51,11 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
-XALAN_USING_XERCES(MemoryManager)
+using xercesc::MemoryManager;
 
 
 
@@ -198,14 +198,10 @@
 
 
 
-#if defined(XALAN_NO_STD_NAMESPACE)
-struct DirectoryFilterPredicate : public unary_function<FindFileStruct, bool>
-#else
-struct DirectoryFilterPredicate : public std::unary_function<FindFileStruct, bool>
-#endif
+struct DirectoryFilterPredicate
 {
-    result_type
-    operator()(const argument_type& theFindData) const
+    bool
+    operator()(const FindFileStruct& theFindData) const
     {
         return theFindData.isDirectory();
     }
@@ -213,14 +209,10 @@
 
 
 
-#if defined(XALAN_NO_STD_NAMESPACE)
-struct FilesOnlyFilterPredicate : public unary_function<FindFileStruct, bool>
-#else
-struct FilesOnlyFilterPredicate : public std::unary_function<FindFileStruct, bool>
-#endif
+struct FilesOnlyFilterPredicate
 {
-    result_type
-    operator()(const argument_type& theFindData) const
+    bool
+    operator()(const FindFileStruct& theFindData) const
     {
         DirectoryFilterPredicate        theDirectoryPredicate;
 
@@ -342,9 +334,7 @@
         XalanDOMString      theSuffix(theMemoryManager);
         if ( !target_Dir )
         {
-#if defined(XALAN_STRICT_ANSI_HEADERS)
             using std::strlen;
-#endif
 
             int lenSpec = strlen(theSpec); 
             theFullSearchSpec.substr(theName, lenSpec, indexName); 
@@ -468,21 +458,8 @@
      class StringType = XalanDOMString,
      class FilterPredicateType = FilesOnlyFilterPredicate,
      class StringConversionFunction = c_wstr_functor>
-#if defined(XALAN_NO_STD_NAMESPACE)
-struct DirectoryEnumeratorFunctor : public unary_function<StringType, CollectionType>
-#else
-struct DirectoryEnumeratorFunctor : public std::unary_function<StringType, CollectionType>
-#endif
+struct DirectoryEnumeratorFunctor
 {
-#if defined(XALAN_NO_STD_NAMESPACE)
-    typedef unary_function<StringType, CollectionType>  BaseClassType;
-#else
-    typedef std::unary_function<StringType, CollectionType> BaseClassType;
-#endif
-
-    typedef typename BaseClassType::result_type     result_type;
-    typedef typename BaseClassType::argument_type   argument_type;
-
     explicit
     DirectoryEnumeratorFunctor(
                 MemoryManager&  theMemoryManager,
@@ -494,24 +471,24 @@
             
     void
     operator()(
-            const argument_type&    theFullSearchSpec,
-            CollectionType&         theCollection) const
+            const StringType&    theFullSearchSpec,
+            CollectionType&      theCollection) const
     {
-        XALAN_USING_STD(back_inserter)
+        using std::back_inserter;
 
         EnumerateDirectory(
             m_memoryManager,
             theFullSearchSpec,
-            XALAN_STD_QUALIFIER back_inserter(theCollection),
+            std::back_inserter(theCollection),
             m_filterPredicate,
             m_conversionFunction,
             m_includeSelfAndParent);
     }
 
-    result_type
-    operator()(const argument_type&     theFullSearchSpec) const
+    CollectionType
+    operator()(const StringType&     theFullSearchSpec) const
     {
-        result_type     theCollection;
+        CollectionType     theCollection;
 
         operator()(
                 theFullSearchSpec,
@@ -522,26 +499,26 @@
 
     void
     operator()(
-            const argument_type&    theDirectory,
-            const argument_type&    theSearchSpec,
-            CollectionType&         theCollection) const
+            const StringType&    theDirectory,
+            const StringType&    theSearchSpec,
+            CollectionType&      theCollection) const
     {
         EnumerateDirectory(
             m_memoryManager,
             theDirectory,
             theSearchSpec,
-            XALAN_STD_QUALIFIER back_inserter(theCollection),
+            std::back_inserter(theCollection),
             m_filterPredicate,
             m_conversionFunction,
             m_includeSelfAndParent);
     }
 
-    result_type
+    CollectionType
     operator()(
-            const argument_type&    theDirectory,
-            const argument_type&    theSearchSpec) const
+            const StringType&    theDirectory,
+            const StringType&    theSearchSpec) const
     {
-        result_type     theCollection;
+        CollectionType     theCollection;
 
         operator()(
                 theDirectory,
@@ -565,7 +542,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/DoubleSupport.cpp b/src/xalanc/PlatformSupport/DoubleSupport.cpp
index 2dde781..514b2d1 100644
--- a/src/xalanc/PlatformSupport/DoubleSupport.cpp
+++ b/src/xalanc/PlatformSupport/DoubleSupport.cpp
@@ -22,9 +22,7 @@
 #include <clocale>
 #include <cmath>
 #include <climits>
-#if !defined(XALAN_NO_STD_NUMERIC_LIMITS)
 #include <limits>
-#endif
 
 
 #include "DOMStringHelper.hpp"
@@ -32,22 +30,14 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
-#if defined(XALAN_NO_STD_NUMERIC_LIMITS)
-DoubleSupport::NumberUnion          DoubleSupport::s_NaN;
-#else
 const DoubleSupport::NumberUnion    DoubleSupport::s_NaN =
 {
-#if defined(XALAN_NO_STD_NAMESPACE)
-    numeric_limits<double>::quiet_NaN()
-#else
     std::numeric_limits<double>::quiet_NaN()
-#endif
 };
-#endif
 
 const DoubleSupport::NumberUnion    DoubleSupport::s_positiveInfinity = { HUGE_VAL };
 
@@ -62,23 +52,11 @@
 void
 DoubleSupport::initialize()
 {
-#if defined(XALAN_NO_STD_NUMERIC_LIMITS)
-    // We initialize this at here because some
-    // platforms have had issues with signals
-    // if we call sqrt(-2.01) during static
-    // initialization.
-#if defined(XALAN_STRICT_ANSI_HEADERS)
-    s_NaN.d = std::sqrt(-2.01);
-#else
-    s_NaN.d = sqrt(-2.01);
-#endif
-#elif !defined(XALAN_NO_STD_NAMESPACE)
     // There seems to be problems with various standard libraries, so
     // this is disabled for now.  We need to revisit this when we
     // update our autoconf/automake system to detect the right value
     // for NaN at configuration time.
     // XALAN_STATIC_ASSERT(std::numeric_limits<double>::has_quiet_NaN);
-#endif
 }
 
 
@@ -86,9 +64,6 @@
 void
 DoubleSupport::terminate()
 {
-#if defined(XALAN_NO_STD_NUMERIC_LIMITS)
-    s_NaN.d = 0.0L;
-#endif
 }
 
 
@@ -304,11 +279,7 @@
 
         double  theResult = divide(theLHS, theRHS);
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
         return std::modf(theResult, &theDummy) * theRHS;
-#else
-        return modf(theResult, &theDummy) * theRHS;
-#endif
     }
 }
 
@@ -338,9 +309,7 @@
     }
     else
     {
-#if defined(XALAN_STRICT_ANSI_HEADERS)
-    using std::fabs;
-#endif
+        using std::fabs;
         return fabs(theDouble);
     }
 }
@@ -603,10 +572,8 @@
     }
     else
     {
-#if defined(XALAN_STRICT_ANSI_HEADERS)
-        XALAN_USING_STD(localeconv)
-        XALAN_USING_STD(atof)
-#endif
+        using std::localeconv;
+        using std::atof;
 
         const char  theDecimalPointChar =
             localeconv()->decimal_point[0];
@@ -736,11 +703,7 @@
 {
     double          intPart = 0;
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
         std::modf(theValue + 0.5, &intPart);
-#else
-        modf(theValue + 0.5, &intPart);
-#endif
 
     return intPart;
 }
@@ -787,11 +750,7 @@
         double          intPart = 0;
 
         const double    fracPart = 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
             std::modf(theValue, &intPart);
-#else
-            modf(theValue, &intPart);
-#endif
 
         const double    theAdjustedValue =
             fracPart == -0.5 ? theValue + 0.5 : theValue - 0.5;
@@ -811,4 +770,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/PlatformSupport/DoubleSupport.hpp b/src/xalanc/PlatformSupport/DoubleSupport.hpp
index d360e44..1d99842 100644
--- a/src/xalanc/PlatformSupport/DoubleSupport.hpp
+++ b/src/xalanc/PlatformSupport/DoubleSupport.hpp
@@ -40,11 +40,11 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
-XALAN_USING_XERCES(MemoryManager)
+using xercesc::MemoryManager;
 
 
 
@@ -83,15 +83,11 @@
 #if defined(_MSC_VER)
         return _isnan(theNumber) != 0;
 #elif defined(XALAN_POSIX2_AVAILABLE) && !defined(CYGWIN) && !defined(MINGW)
-#if defined(XALAN_NO_STD_NAMESPACE)
-        return isnan(theNumber) != 0;
-#else
 #if defined(SOLARIS)
         return isnan(theNumber) != 0;
 #else
         return std::isnan(theNumber) != 0;
 #endif
-#endif
 #else
         return s_NaN == theNumber;
 #endif
@@ -353,179 +349,131 @@
 
     // Some functors to do the same thing.  This is for
     // STL integration...
-    #if defined(XALAN_NO_STD_NAMESPACE)
-    struct equalFunction : public binary_function<const double&, const double&, bool>
-    #else
-    struct equalFunction : public std::binary_function<const double&, const double&, bool>
-    #endif
+    struct equalFunction
     {
-        result_type
+        bool
         operator()(
-            first_argument_type     theLHS,
-            second_argument_type    theRHS) const
+            const double&    theLHS,
+            const double&    theRHS) const
         {
             return equal(theLHS, theRHS);
         }
     };
 
-    #if defined(XALAN_NO_STD_NAMESPACE)
-    struct notEqualFunction : public binary_function<const double&, const double&, bool>
-    #else
-    struct notEqualFunction : public std::binary_function<const double&, const double&, bool>
-    #endif
+    struct notEqualFunction
     {
-        result_type
+        bool
         operator()(
-            first_argument_type     theLHS,
-            second_argument_type    theRHS) const
+            const double&    theLHS,
+            const double&    theRHS) const
         {
             return notEqual(theLHS, theRHS);
         }
     };
 
-    #if defined(XALAN_NO_STD_NAMESPACE)
-    struct lessThanFunction : public binary_function<const double&, const double&, bool>
-    #else
-    struct lessThanFunction : public std::binary_function<const double&, const double&, bool>
-    #endif
+    struct lessThanFunction
     {
-        result_type
+        bool
         operator()(
-            first_argument_type     theLHS,
-            second_argument_type    theRHS) const
+            const double&    theLHS,
+            const double&    theRHS) const
         {
             return lessThan(theLHS, theRHS);
         }
     };
 
-    #if defined(XALAN_NO_STD_NAMESPACE)
-    struct lessThanOrEqualFunction : public binary_function<const double&, const double&, bool>
-    #else
-    struct lessThanOrEqualFunction : public std::binary_function<const double&, const double&, bool>
-    #endif
+    struct lessThanOrEqualFunction
     {
-        result_type
+        bool
         operator()(
-            first_argument_type     theLHS,
-            second_argument_type    theRHS) const
+            const double&    theLHS,
+            const double&    theRHS) const
         {
             return lessThanOrEqual(theLHS, theRHS);
         }
     };
 
-    #if defined(XALAN_NO_STD_NAMESPACE)
-    struct greaterThanFunction : public binary_function<const double&, const double&, bool>
-    #else
-    struct greaterThanFunction : public std::binary_function<const double&, const double&, bool>
-    #endif
+    struct greaterThanFunction
     {
-        result_type
+        bool
         operator()(
-            first_argument_type     theLHS,
-            second_argument_type    theRHS) const
+            const double&    theLHS,
+            const double&    theRHS) const
         {
             return greaterThan(theLHS, theRHS);
         }
     };
 
-    #if defined(XALAN_NO_STD_NAMESPACE)
-    struct greaterThanOrEqualFunction : public binary_function<const double&, const double&, bool>
-    #else
-    struct greaterThanOrEqualFunction : public std::binary_function<const double&, const double&, bool>
-    #endif
+    struct greaterThanOrEqualFunction
     {
-        result_type
+        bool
         operator()(
-            first_argument_type     theLHS,
-            second_argument_type    theRHS) const
+            const double&    theLHS,
+            const double&    theRHS) const
         {
             return greaterThanOrEqual(theLHS, theRHS);
         }
     };
 
-    #if defined(XALAN_NO_STD_NAMESPACE)
-    struct addFunction : public binary_function<const double&, const double&, double>
-    #else
-    struct addFunction : public std::binary_function<const double&, const double&, double>
-    #endif
+    struct addFunction
     {
-        result_type
+        double
         operator()(
-            first_argument_type     theLHS,
-            second_argument_type    theRHS) const
+            const double&    theLHS,
+            const double&    theRHS) const
         {
             return add(theLHS, theRHS);
         }
     };
 
-    #if defined(XALAN_NO_STD_NAMESPACE)
-    struct subtractFunction : public binary_function<const double&, const double&, double>
-    #else
-    struct subtractFunction : public std::binary_function<const double&, const double&, double>
-    #endif
+    struct subtractFunction
     {
-        result_type
+        double
         operator()(
-            first_argument_type     theLHS,
-            second_argument_type    theRHS) const
+            const double&    theLHS,
+            const double&    theRHS) const
         {
             return subtract(theLHS, theRHS);
         }
     };
 
-    #if defined(XALAN_NO_STD_NAMESPACE)
-    struct multiplyFunction : public binary_function<const double&, const double&, double>
-    #else
-    struct multiplyFunction : public std::binary_function<const double&, const double&, double>
-    #endif
+    struct multiplyFunction
     {
-        result_type
+        double
         operator()(
-            first_argument_type     theLHS,
-            second_argument_type    theRHS) const
+            const double&    theLHS,
+            const double&    theRHS) const
         {
             return multiply(theLHS, theRHS);
         }
     };
 
-    #if defined(XALAN_NO_STD_NAMESPACE)
-    struct divideFunction : public binary_function<const double&, const double&, double>
-    #else
-    struct divideFunction : public std::binary_function<const double&, const double&, double>
-    #endif
+    struct divideFunction
     {
-        result_type
+        double
         operator()(
-            first_argument_type     theLHS,
-            second_argument_type    theRHS) const
+            const double&    theLHS,
+            const double&    theRHS) const
         {
             return divide(theLHS, theRHS);
         }
     };
 
-    #if defined(XALAN_NO_STD_NAMESPACE)
-    struct modulusFunction : public binary_function<const double&, const double&, double>
-    #else
-    struct modulusFunction : public std::binary_function<const double&, const double&, double>
-    #endif
+    struct modulusFunction
     {
-        result_type
+        double
         operator()(
-            first_argument_type     theLHS,
-            second_argument_type    theRHS) const
+            const double&    theLHS,
+            const double&    theRHS) const
         {
             return modulus(theLHS, theRHS);
         }
     };
 
-    #if defined(XALAN_NO_STD_NAMESPACE)
-    struct negativeFunction : public unary_function<const double&, double>
-    #else
-    struct negativeFunction : public std::unary_function<const double&, double>
-    #endif
+    struct negativeFunction
     {
-        result_type
-        operator()(argument_type    theDouble) const
+        double
+        operator()(const double&        theDouble) const
         {
             return negative(theDouble);
         }
@@ -599,11 +547,7 @@
     static double
     ceiling(double  theValue)
     {
-#if defined(XALAN_STRICT_ANSI_HEADERS)
         return std::ceil(theValue);
-#else
-        return ceil(theValue);
-#endif
     }
 
     /**
@@ -616,11 +560,7 @@
     static double
     floor(double    theValue)
     {
-#if defined(XALAN_STRICT_ANSI_HEADERS)
         return std::floor(theValue);
-#else
-        return ::floor(theValue);
-#endif
     }
 
     union NumberUnion
@@ -658,7 +598,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/ExecutionContext.cpp b/src/xalanc/PlatformSupport/ExecutionContext.cpp
index 754ee3b..405d094 100644
--- a/src/xalanc/PlatformSupport/ExecutionContext.cpp
+++ b/src/xalanc/PlatformSupport/ExecutionContext.cpp
@@ -20,7 +20,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -38,4 +38,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/PlatformSupport/ExecutionContext.hpp b/src/xalanc/PlatformSupport/ExecutionContext.hpp
index 7a40974..54208b4 100644
--- a/src/xalanc/PlatformSupport/ExecutionContext.hpp
+++ b/src/xalanc/PlatformSupport/ExecutionContext.hpp
@@ -33,15 +33,18 @@
 
 
 
-XALAN_DECLARE_XERCES_CLASS(Locator)
+namespace XERCES_CPP_NAMESPACE
+{
+    class Locator;
+}
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
-typedef XERCES_CPP_NAMESPACE_QUALIFIER Locator  LocatorType;
+typedef xercesc::Locator  LocatorType;
 
 
 
@@ -117,7 +120,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/FormatterListener.cpp b/src/xalanc/PlatformSupport/FormatterListener.cpp
index bf865c0..9c3ff7d 100644
--- a/src/xalanc/PlatformSupport/FormatterListener.cpp
+++ b/src/xalanc/PlatformSupport/FormatterListener.cpp
@@ -27,7 +27,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -121,14 +121,9 @@
     0
 };
 
-#if !defined(XALAN_INLINE_INITIALIZATION)
 const XalanDOMString::size_type     FormatterListener::s_piTargetLength = 5;
 const XalanDOMString::size_type     FormatterListener::s_piDataLength = 3;
-#elif !defined(XALAN_INLINE_INITIALIZATION_IS_DEFINITION_BUG)
-const XalanDOMString::size_type     FormatterListener::s_piTargetLength;
-const XalanDOMString::size_type     FormatterListener::s_piDataLength;
-#endif
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/PlatformSupport/FormatterListener.hpp b/src/xalanc/PlatformSupport/FormatterListener.hpp
index 9c78ccb..a50687b 100644
--- a/src/xalanc/PlatformSupport/FormatterListener.hpp
+++ b/src/xalanc/PlatformSupport/FormatterListener.hpp
@@ -33,7 +33,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -42,22 +42,22 @@
 
 
 
-typedef XERCES_CPP_NAMESPACE_QUALIFIER Locator          LocatorType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER AttributeList    AttributeListType;
+typedef xercesc::Locator          LocatorType;
+typedef xercesc::AttributeList    AttributeListType;
 
-XALAN_USING_XERCES(Locator)
-XALAN_USING_XERCES(AttributeList)
+using xercesc::Locator;
+using xercesc::AttributeList;
 
 
 /**
  * A SAX-based formatter interface for the XSL processor.  This interface 
  * will be called as result tree elements are constructed.
  */
-class XALAN_PLATFORMSUPPORT_EXPORT FormatterListener : public XERCES_CPP_NAMESPACE_QUALIFIER DocumentHandler
+class XALAN_PLATFORMSUPPORT_EXPORT FormatterListener : public xercesc::DocumentHandler
 {
 public:
 
-    typedef XERCES_CPP_NAMESPACE_QUALIFIER DocumentHandler  ParentType;
+    typedef xercesc::DocumentHandler  ParentType;
 
     // A handy typedef...  Must match DocumentHandler's type for characters(), etc...
     typedef XalanSize_t     size_type;
@@ -260,13 +260,8 @@
 
     static const XalanDOMChar   s_piData[];
 
-#if defined(XALAN_INLINE_INITIALIZATION)
-    static const XalanDOMString::size_type  s_piTargetLength = 5;
-    static const XalanDOMString::size_type  s_piDataLength = 3;
-#else
     static const XalanDOMString::size_type  s_piTargetLength;
     static const XalanDOMString::size_type  s_piDataLength;
-#endif
 
 
 protected:
@@ -306,7 +301,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/NamedNodeMapAttributeList.cpp b/src/xalanc/PlatformSupport/NamedNodeMapAttributeList.cpp
index 408d634..df59ce0 100644
--- a/src/xalanc/PlatformSupport/NamedNodeMapAttributeList.cpp
+++ b/src/xalanc/PlatformSupport/NamedNodeMapAttributeList.cpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -167,4 +167,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/PlatformSupport/NamedNodeMapAttributeList.hpp b/src/xalanc/PlatformSupport/NamedNodeMapAttributeList.hpp
index ff68561..9a2a857 100644
--- a/src/xalanc/PlatformSupport/NamedNodeMapAttributeList.hpp
+++ b/src/xalanc/PlatformSupport/NamedNodeMapAttributeList.hpp
@@ -30,7 +30,7 @@
 #include <xalanc/Include/XalanMemoryManagement.hpp>
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -38,11 +38,11 @@
 
 
 
-class XALAN_PLATFORMSUPPORT_EXPORT NamedNodeMapAttributeList : public XERCES_CPP_NAMESPACE_QUALIFIER AttributeList
+class XALAN_PLATFORMSUPPORT_EXPORT NamedNodeMapAttributeList : public xercesc::AttributeList
 {
 public:
 
-    typedef XERCES_CPP_NAMESPACE_QUALIFIER AttributeList    ParentType;
+    typedef xercesc::AttributeList    ParentType;
 
     explicit
     NamedNodeMapAttributeList(
@@ -95,7 +95,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/NullPrintWriter.cpp b/src/xalanc/PlatformSupport/NullPrintWriter.cpp
index 5a7a8cc..3c74860 100644
--- a/src/xalanc/PlatformSupport/NullPrintWriter.cpp
+++ b/src/xalanc/PlatformSupport/NullPrintWriter.cpp
@@ -20,7 +20,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -227,4 +227,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/PlatformSupport/NullPrintWriter.hpp b/src/xalanc/PlatformSupport/NullPrintWriter.hpp
index a3159dd..59b3073 100644
--- a/src/xalanc/PlatformSupport/NullPrintWriter.hpp
+++ b/src/xalanc/PlatformSupport/NullPrintWriter.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -153,7 +153,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/PlatformSupportInit.cpp b/src/xalanc/PlatformSupport/PlatformSupportInit.cpp
index a5c2186..7247737 100644
--- a/src/xalanc/PlatformSupport/PlatformSupportInit.cpp
+++ b/src/xalanc/PlatformSupport/PlatformSupportInit.cpp
@@ -27,7 +27,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -88,4 +88,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/PlatformSupport/PlatformSupportInit.hpp b/src/xalanc/PlatformSupport/PlatformSupportInit.hpp
index dae006a..17e3e64 100644
--- a/src/xalanc/PlatformSupport/PlatformSupportInit.hpp
+++ b/src/xalanc/PlatformSupport/PlatformSupportInit.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -64,7 +64,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/PrefixResolver.cpp b/src/xalanc/PlatformSupport/PrefixResolver.cpp
index b8b213c..ab9bd5d 100644
--- a/src/xalanc/PlatformSupport/PrefixResolver.cpp
+++ b/src/xalanc/PlatformSupport/PrefixResolver.cpp
@@ -20,7 +20,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -42,4 +42,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/PlatformSupport/PrefixResolver.hpp b/src/xalanc/PlatformSupport/PrefixResolver.hpp
index 875148d..7f64fef 100644
--- a/src/xalanc/PlatformSupport/PrefixResolver.hpp
+++ b/src/xalanc/PlatformSupport/PrefixResolver.hpp
@@ -24,7 +24,7 @@
 #include <xalanc/PlatformSupport/PlatformSupportDefinitions.hpp>
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -70,7 +70,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/PrintWriter.cpp b/src/xalanc/PlatformSupport/PrintWriter.cpp
index a3fa388..b8b41ef 100644
--- a/src/xalanc/PlatformSupport/PrintWriter.cpp
+++ b/src/xalanc/PlatformSupport/PrintWriter.cpp
@@ -25,7 +25,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -73,4 +73,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/PlatformSupport/PrintWriter.hpp b/src/xalanc/PlatformSupport/PrintWriter.hpp
index ef6d6c8..d873aca 100644
--- a/src/xalanc/PlatformSupport/PrintWriter.hpp
+++ b/src/xalanc/PlatformSupport/PrintWriter.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -186,7 +186,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/ProblemListenerBase.cpp b/src/xalanc/PlatformSupport/ProblemListenerBase.cpp
index 965b23c..3405424 100644
--- a/src/xalanc/PlatformSupport/ProblemListenerBase.cpp
+++ b/src/xalanc/PlatformSupport/ProblemListenerBase.cpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -153,4 +153,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/PlatformSupport/ProblemListenerBase.hpp b/src/xalanc/PlatformSupport/ProblemListenerBase.hpp
index 05413e7..75e1ee4 100644
--- a/src/xalanc/PlatformSupport/ProblemListenerBase.hpp
+++ b/src/xalanc/PlatformSupport/ProblemListenerBase.hpp
@@ -29,15 +29,18 @@
 
 
 
-XALAN_DECLARE_XERCES_CLASS(Locator)
+namespace XERCES_CPP_NAMESPACE
+{
+    class Locator;
+}
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
-XALAN_USING_XERCES(Locator)
+using xercesc::Locator;
 
 
 class XalanDOMString;
@@ -158,7 +161,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/ReusableArenaAllocator.hpp b/src/xalanc/PlatformSupport/ReusableArenaAllocator.hpp
index d14ab91..55038e7 100644
--- a/src/xalanc/PlatformSupport/ReusableArenaAllocator.hpp
+++ b/src/xalanc/PlatformSupport/ReusableArenaAllocator.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -327,7 +327,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/ReusableArenaBlock.hpp b/src/xalanc/PlatformSupport/ReusableArenaBlock.hpp
index 6560e73..e72ab48 100644
--- a/src/xalanc/PlatformSupport/ReusableArenaBlock.hpp
+++ b/src/xalanc/PlatformSupport/ReusableArenaBlock.hpp
@@ -28,7 +28,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -336,7 +336,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/StdBinInputStream.cpp b/src/xalanc/PlatformSupport/StdBinInputStream.cpp
index c13b5c7..15193fb 100644
--- a/src/xalanc/PlatformSupport/StdBinInputStream.cpp
+++ b/src/xalanc/PlatformSupport/StdBinInputStream.cpp
@@ -21,13 +21,11 @@
 
 #include <cassert>
 
-#if !defined(XALAN_CLASSIC_IOSTREAMS)
 #include <iostream>
-#endif
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -66,17 +64,13 @@
     }
     else
     {
-        XALAN_USING_STD(streamsize)
+        using std::streamsize;
 
-        assert(static_cast<XALAN_UINT64>(static_cast<streamsize>(maxToRead)) == maxToRead);
+        assert(static_cast<XMLUInt64>(static_cast<streamsize>(maxToRead)) == maxToRead);
 
-#if !defined(XALAN_CLASSIC_IOSTREAMS)
         m_stream.read(
             reinterpret_cast<char*>(toFill),
             static_cast<streamsize>(maxToRead));
-#else
-        m_stream.read(toFill, maxToRead);
-#endif
 
         return m_stream.gcount();
     }
@@ -92,4 +86,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/PlatformSupport/StdBinInputStream.hpp b/src/xalanc/PlatformSupport/StdBinInputStream.hpp
index 7414a9f..b964910 100644
--- a/src/xalanc/PlatformSupport/StdBinInputStream.hpp
+++ b/src/xalanc/PlatformSupport/StdBinInputStream.hpp
@@ -26,11 +26,7 @@
 
 
 
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <iostream.h>
-#else
 #include <iosfwd>
-#endif
 
 
 
@@ -38,21 +34,17 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
-class XALAN_PLATFORMSUPPORT_EXPORT StdBinInputStream : public XERCES_CPP_NAMESPACE_QUALIFIER BinInputStream
+class XALAN_PLATFORMSUPPORT_EXPORT StdBinInputStream : public xercesc::BinInputStream
 {
 public:
 
-    typedef XERCES_CPP_NAMESPACE_QUALIFIER BinInputStream   ParentType;
+    typedef xercesc::BinInputStream   ParentType;
 
-#if defined(XALAN_NO_STD_NAMESPACE)
-    typedef istream         StreamType;
-#else
     typedef std::istream    StreamType;
-#endif
 
 
     StdBinInputStream(StreamType&   theStream);
@@ -89,7 +81,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/StringTokenizer.cpp b/src/xalanc/PlatformSupport/StringTokenizer.cpp
index 153a2f3..0b67a67 100644
--- a/src/xalanc/PlatformSupport/StringTokenizer.cpp
+++ b/src/xalanc/PlatformSupport/StringTokenizer.cpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -236,4 +236,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/PlatformSupport/StringTokenizer.hpp b/src/xalanc/PlatformSupport/StringTokenizer.hpp
index aa4367a..9a177d7 100644
--- a/src/xalanc/PlatformSupport/StringTokenizer.hpp
+++ b/src/xalanc/PlatformSupport/StringTokenizer.hpp
@@ -33,7 +33,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -166,7 +166,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/URISupport.cpp b/src/xalanc/PlatformSupport/URISupport.cpp
index 17baab7..85ab228 100644
--- a/src/xalanc/PlatformSupport/URISupport.cpp
+++ b/src/xalanc/PlatformSupport/URISupport.cpp
@@ -36,7 +36,7 @@
 #include "XalanParsedURI.hpp"
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -124,11 +124,11 @@
         }
         else
         {
-            XALAN_USING_XERCES(ArrayJanitor)
-            XALAN_USING_XERCES(XMLPlatformUtils)
+            using xercesc::ArrayJanitor;
+            using xercesc::XMLPlatformUtils;
 
             // Assume it's a file specification...
-            XALAN_USING_XERCES(MemoryManager)
+            using xercesc::MemoryManager;
 
             MemoryManager&  theMemoryManager = theNormalizedURI.getMemoryManager();
 
@@ -209,7 +209,7 @@
     {
         // Start replacing at the index point, since that's the
         // first one...
-        XALAN_STD_QUALIFIER replace(
+        std::replace(
                 uriString.begin() + index,
                 uriString.end(),
                 XalanUnicode::charReverseSolidus,
@@ -285,4 +285,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/PlatformSupport/URISupport.hpp b/src/xalanc/PlatformSupport/URISupport.hpp
index b8e0727..fd3538f 100644
--- a/src/xalanc/PlatformSupport/URISupport.hpp
+++ b/src/xalanc/PlatformSupport/URISupport.hpp
@@ -41,11 +41,11 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
-typedef XERCES_CPP_NAMESPACE_QUALIFIER XMLURL   XMLURLType;
+typedef xercesc::XMLURL   XMLURLType;
 
 
 
@@ -306,7 +306,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/Writer.cpp b/src/xalanc/PlatformSupport/Writer.cpp
index 165c812..5512658 100644
--- a/src/xalanc/PlatformSupport/Writer.cpp
+++ b/src/xalanc/PlatformSupport/Writer.cpp
@@ -20,15 +20,11 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
-#if !defined(XALAN_INLINE_INITIALIZATION)
 const size_t    Writer::npos = ~0u;
-#elif !defined(XALAN_INLINE_INITIALIZATION_IS_DEFINITION_BUG)
-const size_t    Writer::npos;
-#endif
 
 
 
@@ -60,4 +56,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/PlatformSupport/Writer.hpp b/src/xalanc/PlatformSupport/Writer.hpp
index 58a8209..433d04b 100644
--- a/src/xalanc/PlatformSupport/Writer.hpp
+++ b/src/xalanc/PlatformSupport/Writer.hpp
@@ -33,7 +33,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -77,11 +77,7 @@
 
     // Output functions
 
-#if defined(XALAN_INLINE_INITIALIZATION)
-    static const size_t     npos = ~0u;
-#else
     static const size_t     npos;
-#endif
 
     /**
      * Writes a string
@@ -144,7 +140,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/XSLException.cpp b/src/xalanc/PlatformSupport/XSLException.cpp
index d9a4352..53bc236 100644
--- a/src/xalanc/PlatformSupport/XSLException.cpp
+++ b/src/xalanc/PlatformSupport/XSLException.cpp
@@ -27,7 +27,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -191,4 +191,4 @@
 }
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/PlatformSupport/XSLException.hpp b/src/xalanc/PlatformSupport/XSLException.hpp
index da8258d..eb1c9b8 100644
--- a/src/xalanc/PlatformSupport/XSLException.hpp
+++ b/src/xalanc/PlatformSupport/XSLException.hpp
@@ -30,12 +30,12 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
-typedef XERCES_CPP_NAMESPACE_QUALIFIER Locator  LocatorType;
-XALAN_USING_XERCES(Locator)
+typedef xercesc::Locator  LocatorType;
+using xercesc::Locator;
 
 
 
@@ -212,7 +212,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/XalanAllocator.hpp b/src/xalanc/PlatformSupport/XalanAllocator.hpp
index b95d77d..b53c038 100644
--- a/src/xalanc/PlatformSupport/XalanAllocator.hpp
+++ b/src/xalanc/PlatformSupport/XalanAllocator.hpp
@@ -25,7 +25,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -122,7 +122,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/XalanArrayAllocator.hpp b/src/xalanc/PlatformSupport/XalanArrayAllocator.hpp
index 3a0dc89..7d708e5 100644
--- a/src/xalanc/PlatformSupport/XalanArrayAllocator.hpp
+++ b/src/xalanc/PlatformSupport/XalanArrayAllocator.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -46,7 +46,7 @@
     typedef XalanVector<Type>               VectorType;
     typedef typename VectorType::size_type  size_type;
 
-    typedef XALAN_STD_QUALIFIER pair<size_type, VectorType * >      ListEntryType;
+    typedef std::pair<size_type, VectorType * >      ListEntryType;
     typedef XalanList<ListEntryType>                                ListType;
 
     typedef Type                            value_type;
@@ -79,11 +79,7 @@
         {
             if( (*iter).second != 0)
             {
-#if defined(XALAN_REQUIRES_QUALIFIED_DESTRUCTOR)
                 (*iter).second->VectorType::~VectorType();
-#else
-                (*iter).second->~VectorType();
-#endif               
                 theManager.deallocate((void*)(*iter).second);
             }
         }
@@ -282,7 +278,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/XalanBitmap.cpp b/src/xalanc/PlatformSupport/XalanBitmap.cpp
index 0beb7e9..6e8a2a4 100644
--- a/src/xalanc/PlatformSupport/XalanBitmap.cpp
+++ b/src/xalanc/PlatformSupport/XalanBitmap.cpp
@@ -24,7 +24,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -51,9 +51,9 @@
 void
 XalanBitmap::clearAll()
 {
-    XALAN_STD_QUALIFIER fill(m_bitmap.begin(), m_bitmap.end(), '\0');
+    std::fill(m_bitmap.begin(), m_bitmap.end(), '\0');
 }
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/PlatformSupport/XalanBitmap.hpp b/src/xalanc/PlatformSupport/XalanBitmap.hpp
index a6f4b92..4bb664e 100644
--- a/src/xalanc/PlatformSupport/XalanBitmap.hpp
+++ b/src/xalanc/PlatformSupport/XalanBitmap.hpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -148,7 +148,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/XalanCollationServices.hpp b/src/xalanc/PlatformSupport/XalanCollationServices.hpp
index 493b7c4..3d4cde9 100644
--- a/src/xalanc/PlatformSupport/XalanCollationServices.hpp
+++ b/src/xalanc/PlatformSupport/XalanCollationServices.hpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -70,7 +70,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/XalanDOMStringAllocator.cpp b/src/xalanc/PlatformSupport/XalanDOMStringAllocator.cpp
index b10fb20..5a6b9ce 100644
--- a/src/xalanc/PlatformSupport/XalanDOMStringAllocator.cpp
+++ b/src/xalanc/PlatformSupport/XalanDOMStringAllocator.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -123,4 +123,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/PlatformSupport/XalanDOMStringAllocator.hpp b/src/xalanc/PlatformSupport/XalanDOMStringAllocator.hpp
index 79abf4a..1509a53 100644
--- a/src/xalanc/PlatformSupport/XalanDOMStringAllocator.hpp
+++ b/src/xalanc/PlatformSupport/XalanDOMStringAllocator.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -214,7 +214,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/XalanDOMStringCache.cpp b/src/xalanc/PlatformSupport/XalanDOMStringCache.cpp
index f7f1f74..7eca55f 100644
--- a/src/xalanc/PlatformSupport/XalanDOMStringCache.cpp
+++ b/src/xalanc/PlatformSupport/XalanDOMStringCache.cpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -81,7 +81,7 @@
 bool
 XalanDOMStringCache::release(XalanDOMString&    theString)
 {
-    XALAN_USING_STD(find)
+    using std::find;
 
     StringListType::iterator    i =
         find(m_busyList.begin(),
@@ -152,4 +152,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/PlatformSupport/XalanDOMStringCache.hpp b/src/xalanc/PlatformSupport/XalanDOMStringCache.hpp
index 1531f76..bf56898 100644
--- a/src/xalanc/PlatformSupport/XalanDOMStringCache.hpp
+++ b/src/xalanc/PlatformSupport/XalanDOMStringCache.hpp
@@ -37,7 +37,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -145,7 +145,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/XalanDOMStringHashTable.cpp b/src/xalanc/PlatformSupport/XalanDOMStringHashTable.cpp
index a49b0b5..ee33813 100644
--- a/src/xalanc/PlatformSupport/XalanDOMStringHashTable.cpp
+++ b/src/xalanc/PlatformSupport/XalanDOMStringHashTable.cpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -150,7 +150,7 @@
         *theBucketIndex = theLocalBucketIndex;
     }
 
-    XALAN_USING_STD(find_if)
+    using std::find_if;
 
     const BucketType::const_iterator    i =
         find_if(
@@ -223,4 +223,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/PlatformSupport/XalanDOMStringHashTable.hpp b/src/xalanc/PlatformSupport/XalanDOMStringHashTable.hpp
index f1f3773..6aae364 100644
--- a/src/xalanc/PlatformSupport/XalanDOMStringHashTable.hpp
+++ b/src/xalanc/PlatformSupport/XalanDOMStringHashTable.hpp
@@ -33,7 +33,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -215,7 +215,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/XalanDOMStringPool.cpp b/src/xalanc/PlatformSupport/XalanDOMStringPool.cpp
index 9d028cd..7ee8791 100644
--- a/src/xalanc/PlatformSupport/XalanDOMStringPool.cpp
+++ b/src/xalanc/PlatformSupport/XalanDOMStringPool.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -145,4 +145,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/PlatformSupport/XalanDOMStringPool.hpp b/src/xalanc/PlatformSupport/XalanDOMStringPool.hpp
index 121bc0c..f2e69a2 100644
--- a/src/xalanc/PlatformSupport/XalanDOMStringPool.hpp
+++ b/src/xalanc/PlatformSupport/XalanDOMStringPool.hpp
@@ -32,7 +32,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -158,7 +158,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/XalanDOMStringReusableAllocator.cpp b/src/xalanc/PlatformSupport/XalanDOMStringReusableAllocator.cpp
index 7883e07..d72b7e9 100644
--- a/src/xalanc/PlatformSupport/XalanDOMStringReusableAllocator.cpp
+++ b/src/xalanc/PlatformSupport/XalanDOMStringReusableAllocator.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -124,4 +124,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/PlatformSupport/XalanDOMStringReusableAllocator.hpp b/src/xalanc/PlatformSupport/XalanDOMStringReusableAllocator.hpp
index e64eb4b..3d15f4a 100644
--- a/src/xalanc/PlatformSupport/XalanDOMStringReusableAllocator.hpp
+++ b/src/xalanc/PlatformSupport/XalanDOMStringReusableAllocator.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -224,7 +224,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/XalanDecimalFormatSymbols.cpp b/src/xalanc/PlatformSupport/XalanDecimalFormatSymbols.cpp
index d36ae15..c7e43f6 100644
--- a/src/xalanc/PlatformSupport/XalanDecimalFormatSymbols.cpp
+++ b/src/xalanc/PlatformSupport/XalanDecimalFormatSymbols.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -149,4 +149,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/PlatformSupport/XalanDecimalFormatSymbols.hpp b/src/xalanc/PlatformSupport/XalanDecimalFormatSymbols.hpp
index 6a47a4f..08b8b79 100644
--- a/src/xalanc/PlatformSupport/XalanDecimalFormatSymbols.hpp
+++ b/src/xalanc/PlatformSupport/XalanDecimalFormatSymbols.hpp
@@ -33,7 +33,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -438,7 +438,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/XalanEncodingPropertyCache.cpp b/src/xalanc/PlatformSupport/XalanEncodingPropertyCache.cpp
index 3012854..7d85f8d 100644
--- a/src/xalanc/PlatformSupport/XalanEncodingPropertyCache.cpp
+++ b/src/xalanc/PlatformSupport/XalanEncodingPropertyCache.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -78,4 +78,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/PlatformSupport/XalanEncodingPropertyCache.hpp b/src/xalanc/PlatformSupport/XalanEncodingPropertyCache.hpp
index a5a7c9c..1fe50eb 100644
--- a/src/xalanc/PlatformSupport/XalanEncodingPropertyCache.hpp
+++ b/src/xalanc/PlatformSupport/XalanEncodingPropertyCache.hpp
@@ -32,7 +32,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -77,7 +77,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/XalanFStreamOutputStream.cpp b/src/xalanc/PlatformSupport/XalanFStreamOutputStream.cpp
index 5c6721a..aaf5f83 100644
--- a/src/xalanc/PlatformSupport/XalanFStreamOutputStream.cpp
+++ b/src/xalanc/PlatformSupport/XalanFStreamOutputStream.cpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -86,9 +86,7 @@
             const char*     theBuffer,
             size_type       theBufferLength)
 {
-#if defined(XALAN_STRICT_ANSI_HEADERS)
     using std::fwrite;
-#endif
 
     const size_t    theBytesWritten =
         fwrite(theBuffer,
@@ -172,4 +170,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/PlatformSupport/XalanFStreamOutputStream.hpp b/src/xalanc/PlatformSupport/XalanFStreamOutputStream.hpp
index 4869e02..e4d12d7 100644
--- a/src/xalanc/PlatformSupport/XalanFStreamOutputStream.hpp
+++ b/src/xalanc/PlatformSupport/XalanFStreamOutputStream.hpp
@@ -34,11 +34,9 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
 using std::FILE;
-#endif
 
 class XALAN_PLATFORMSUPPORT_EXPORT XalanFStreamOutputStream : public XalanOutputStream
 {
@@ -122,7 +120,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/XalanFileOutputStream.cpp b/src/xalanc/PlatformSupport/XalanFileOutputStream.cpp
index ab34161..97504be 100644
--- a/src/xalanc/PlatformSupport/XalanFileOutputStream.cpp
+++ b/src/xalanc/PlatformSupport/XalanFileOutputStream.cpp
@@ -31,7 +31,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 const XalanDOMChar  XalanFileOutputStream::XalanFileOutputStreamOpenException::m_type[] = 
 {   
@@ -168,9 +168,7 @@
         }
     }
 #else
-#if defined(XALAN_STRICT_ANSI_HEADERS)
     using std::fopen;
-#endif
 
     CharVectorType  theResult(theManager);
     TranscodeToLocalCodePage(theFileName, theResult, true);
@@ -261,9 +259,7 @@
         CloseHandle(m_handle);
     }
 #else
-#if defined(XALAN_STRICT_ANSI_HEADERS)
     using std::fclose;
-#endif
 
     if (m_handle != 0)
     {
@@ -278,9 +274,7 @@
 XalanFileOutputStream::doFlush()
 {
 #if !defined(XALAN_WINDOWS)
-#if defined(XALAN_STRICT_ANSI_HEADERS)
     using std::fflush;
-#endif
 
     if (fflush(m_handle) != 0)
     {
@@ -317,9 +311,7 @@
                 theExceptionBuffer);
     }
 #else
-#if defined(XALAN_STRICT_ANSI_HEADERS)
     using std::fwrite;
-#endif
 
     const size_t    theBytesWritten =
         fwrite(theBuffer,
@@ -392,4 +384,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/PlatformSupport/XalanFileOutputStream.hpp b/src/xalanc/PlatformSupport/XalanFileOutputStream.hpp
index 53000fa..27ab4d7 100644
--- a/src/xalanc/PlatformSupport/XalanFileOutputStream.hpp
+++ b/src/xalanc/PlatformSupport/XalanFileOutputStream.hpp
@@ -38,12 +38,10 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
 using std::FILE;
-#endif
 
 class XALAN_PLATFORMSUPPORT_EXPORT XalanFileOutputStream : public XalanOutputStream
 {
@@ -170,7 +168,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/XalanICUMessageLoader.cpp b/src/xalanc/PlatformSupport/XalanICUMessageLoader.cpp
index 603de90..6dd2e67 100644
--- a/src/xalanc/PlatformSupport/XalanICUMessageLoader.cpp
+++ b/src/xalanc/PlatformSupport/XalanICUMessageLoader.cpp
@@ -94,11 +94,11 @@
 extern "C" const char U_IMPORT  ICUDLL_ENTRYPOINT_NAME [];
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
-XALAN_USING_XERCES(XMLMsgLoader)
+using xercesc::XMLMsgLoader;
 
-XALAN_USING_XERCES(XMLString)
+using xercesc::XMLString;
 
 
 
@@ -190,7 +190,7 @@
    return bResult;
 }
 
-XALAN_CPP_NAMESPACE_END
+}
 
 #endif // defined (XALAN_ICU_MSG_LOADER)
 
diff --git a/src/xalanc/PlatformSupport/XalanICUMessageLoader.hpp b/src/xalanc/PlatformSupport/XalanICUMessageLoader.hpp
index 72eacaf..dc958df 100644
--- a/src/xalanc/PlatformSupport/XalanICUMessageLoader.hpp
+++ b/src/xalanc/PlatformSupport/XalanICUMessageLoader.hpp
@@ -33,7 +33,7 @@
 #include <unicode/ures.h>
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 class XALAN_PLATFORMSUPPORT_EXPORT XalanICUMessageLoader : public XalanMessageLoader 
@@ -83,7 +83,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 #endif //  defined (XALAN_ICU_MSG_LOADER)
 
diff --git a/src/xalanc/PlatformSupport/XalanInMemoryMessageLoader.cpp b/src/xalanc/PlatformSupport/XalanInMemoryMessageLoader.cpp
index ddc00c4..7b52896 100644
--- a/src/xalanc/PlatformSupport/XalanInMemoryMessageLoader.cpp
+++ b/src/xalanc/PlatformSupport/XalanInMemoryMessageLoader.cpp
@@ -31,7 +31,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -87,7 +87,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/XalanInMemoryMessageLoader.hpp b/src/xalanc/PlatformSupport/XalanInMemoryMessageLoader.hpp
index 58166e6..57735cb 100644
--- a/src/xalanc/PlatformSupport/XalanInMemoryMessageLoader.hpp
+++ b/src/xalanc/PlatformSupport/XalanInMemoryMessageLoader.hpp
@@ -32,7 +32,7 @@
 #include <xalanc/PlatformSupport/XalanMessageLoader.hpp>
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 class XALAN_PLATFORMSUPPORT_EXPORT XalanInMemoryMessageLoader : public XalanMessageLoader
 {
@@ -69,7 +69,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/XalanLocator.hpp b/src/xalanc/PlatformSupport/XalanLocator.hpp
index b026a40..3fad49e 100644
--- a/src/xalanc/PlatformSupport/XalanLocator.hpp
+++ b/src/xalanc/PlatformSupport/XalanLocator.hpp
@@ -29,11 +29,11 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
-XALAN_USING_XERCES(Locator)
+using xercesc::Locator;
 
 
 
@@ -159,7 +159,7 @@
     }
 };
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/XalanMemoryManagement.cpp b/src/xalanc/PlatformSupport/XalanMemoryManagement.cpp
index 32e7d4e..e107a43 100644
--- a/src/xalanc/PlatformSupport/XalanMemoryManagement.cpp
+++ b/src/xalanc/PlatformSupport/XalanMemoryManagement.cpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -71,7 +71,7 @@
     virtual void*
     allocate(size_type /*   size */ )
     {
-        XALAN_USING_XERCES(OutOfMemoryException)
+        using xercesc::OutOfMemoryException;
 
         throw OutOfMemoryException();
     }   
@@ -79,7 +79,7 @@
     virtual void
     deallocate(void*    /* pDataPointer */ )
     {
-        XALAN_USING_XERCES(OutOfMemoryException)
+        using xercesc::OutOfMemoryException;
 
         throw OutOfMemoryException();
     }
@@ -108,7 +108,7 @@
 MemoryManager&
 XalanMemMgrs::getDefaultXercesMemMgr()
 {
-    XALAN_USING_XERCES(XMLPlatformUtils)
+    using xercesc::XMLPlatformUtils;
 
     assert(XMLPlatformUtils::fgMemoryManager != 0);
 
@@ -117,4 +117,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/PlatformSupport/XalanMemoryManagerDefault.cpp b/src/xalanc/PlatformSupport/XalanMemoryManagerDefault.cpp
index 3068add..623fee3 100644
--- a/src/xalanc/PlatformSupport/XalanMemoryManagerDefault.cpp
+++ b/src/xalanc/PlatformSupport/XalanMemoryManagerDefault.cpp
@@ -26,7 +26,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -45,7 +45,7 @@
 void*
 XalanMemoryManagerDefault::allocate(size_type   size)
 {
-    XALAN_USING_XERCES(OutOfMemoryException)
+    using xercesc::OutOfMemoryException;
 
     void*   thePointer;
 
@@ -84,4 +84,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/PlatformSupport/XalanMemoryManagerDefault.hpp b/src/xalanc/PlatformSupport/XalanMemoryManagerDefault.hpp
index c70cda0..9389877 100644
--- a/src/xalanc/PlatformSupport/XalanMemoryManagerDefault.hpp
+++ b/src/xalanc/PlatformSupport/XalanMemoryManagerDefault.hpp
@@ -31,7 +31,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -64,7 +64,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/XalanMessageLoader.cpp b/src/xalanc/PlatformSupport/XalanMessageLoader.cpp
index e47f262..160a67b 100644
--- a/src/xalanc/PlatformSupport/XalanMessageLoader.cpp
+++ b/src/xalanc/PlatformSupport/XalanMessageLoader.cpp
@@ -39,7 +39,7 @@
 #error You must provide a message loader
 #endif
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 static const size_t kMaxMessageLength = 1024;
 
@@ -207,7 +207,7 @@
     if (!loadMsg(msgToLoad, toFill, maxChars))
         return false;
 
-    XALAN_USING_XERCES(XMLString)
+    using xercesc::XMLString;
 
     // And do the token replacement
     XMLString::replaceTokens(
@@ -328,4 +328,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/PlatformSupport/XalanMessageLoader.hpp b/src/xalanc/PlatformSupport/XalanMessageLoader.hpp
index cf97394..5744d37 100644
--- a/src/xalanc/PlatformSupport/XalanMessageLoader.hpp
+++ b/src/xalanc/PlatformSupport/XalanMessageLoader.hpp
@@ -36,11 +36,11 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
-XALAN_USING_XERCES(MemoryManager)
+using xercesc::MemoryManager;
 
 
 
@@ -181,6 +181,6 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 #endif  // XALANMESSAGELOADER_HEADER_GUARD_1357924680
diff --git a/src/xalanc/PlatformSupport/XalanNLSMessageLoader.cpp b/src/xalanc/PlatformSupport/XalanNLSMessageLoader.cpp
index e3897ad..7dc9170 100644
--- a/src/xalanc/PlatformSupport/XalanNLSMessageLoader.cpp
+++ b/src/xalanc/PlatformSupport/XalanNLSMessageLoader.cpp
@@ -27,16 +27,19 @@
 
 #include <xalanc/PlatformSupport/DOMStringHelper.hpp>
 
+#include <locale.h>
+
 #include <cstring>
+#include <cstdlib>
 
 #include <cerrno>
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
-XALAN_USING_XERCES(XMLMsgLoader)
+using xercesc::XMLMsgLoader;
 
-static const char* const    MSG_FILE_NAME = "XalanMsg_";
+static const char* const    MSG_FILE_NAME = "Xalan.cat";
 
 #define MAX_LOCALTION_NAME 1024
 
@@ -44,22 +47,17 @@
 
 XalanNLSMessageLoader::~XalanNLSMessageLoader()
 {
-    if ((int)m_catalogHandle != -1)
+    if (m_catalogHandle != reinterpret_cast<nl_catd>(-1))
     {
         catclose(m_catalogHandle);
     }
 }
 
 XalanNLSMessageLoader::XalanNLSMessageLoader(MemoryManager& theManager) :
-    m_catalogHandle(nl_catd(-1)),
+    m_catalogHandle(reinterpret_cast<nl_catd>(-1)),
     m_memoryManager(theManager)
 {
 
-    char fileName[50];
-    fileName[0] = 0;
-    
-    sprintf(fileName,"%s", MSG_FILE_NAME);
-
     const char* Locale = XMLMsgLoader::getLocale();
 
     if(Locale == 0)
@@ -67,17 +65,28 @@
         Locale = "en_US";
     }
 
-    strcat(fileName, Locale);
-
-    strcat(fileName, ".cat");
+    const char* msg = setlocale(LC_MESSAGES, 0);
+    char *saved_msg = 0;
+    if (msg)
+    {
+        saved_msg = new char[strlen(msg) + 1];
+        strcpy(saved_msg, msg);
+    }
+    setlocale(LC_MESSAGES, Locale);
 
    /**
     * To open user-specified locale specific cat file
     * and default cat file if necessary
     */
-    m_catalogHandle = catopen(fileName, 0);
+    m_catalogHandle = catopen(MSG_FILE_NAME, 0);
 
-    if (reinterpret_cast<int>(m_catalogHandle) == -1)
+    if(saved_msg)
+      {
+        setlocale(LC_MESSAGES, saved_msg);
+        delete[] saved_msg;
+      }
+
+    if (m_catalogHandle == reinterpret_cast<nl_catd>(-1))
     {
         // Probably have to call panic here
         // the user will get an error with retrieving messages
@@ -87,8 +96,8 @@
 
 bool
 XalanNLSMessageLoader::loadMsg(
-            XalanMessages::Codes    msgToLoad
-            XalanDOMChar*           toFill
+            XalanMessages::Codes    msgToLoad,
+            XalanDOMChar*           toFill,
             XalanSize_t             maxChars)
 {
     
@@ -99,7 +108,7 @@
         return bRetValue;
     }
 
-    if (static_cast<int>(m_catalogHandle) == -1)
+    if (m_catalogHandle == reinterpret_cast<nl_catd>(-1))
     {
         // for transcoding to Unicode
         const XalanDOMString    errorMsg("Message can't be retrieved: the message catalog is not open.", m_memoryManager );
@@ -138,7 +147,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/XalanNLSMessageLoader.hpp b/src/xalanc/PlatformSupport/XalanNLSMessageLoader.hpp
index 354383c..10b6612 100644
--- a/src/xalanc/PlatformSupport/XalanNLSMessageLoader.hpp
+++ b/src/xalanc/PlatformSupport/XalanNLSMessageLoader.hpp
@@ -25,7 +25,7 @@
 
 #include <nl_types.h>
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 class XALAN_PLATFORMSUPPORT_EXPORT XalanNLSMessageLoader : public XalanMessageLoader 
 
@@ -62,7 +62,7 @@
     MemoryManager& m_memoryManager;
 };
 
-XALAN_CPP_NAMESPACE_END
+}
 
 #endif // XALAN_NLS_MSG_LOADER
 
diff --git a/src/xalanc/PlatformSupport/XalanNamespace.hpp b/src/xalanc/PlatformSupport/XalanNamespace.hpp
index f4d8adc..fc1ec81 100644
--- a/src/xalanc/PlatformSupport/XalanNamespace.hpp
+++ b/src/xalanc/PlatformSupport/XalanNamespace.hpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -183,7 +183,7 @@
 
 XALAN_USES_MEMORY_MANAGER(XalanNamespace)
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/XalanNullOutputStream.cpp b/src/xalanc/PlatformSupport/XalanNullOutputStream.cpp
index deddbba..4f1e32b 100644
--- a/src/xalanc/PlatformSupport/XalanNullOutputStream.cpp
+++ b/src/xalanc/PlatformSupport/XalanNullOutputStream.cpp
@@ -20,7 +20,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -53,4 +53,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/PlatformSupport/XalanNullOutputStream.hpp b/src/xalanc/PlatformSupport/XalanNullOutputStream.hpp
index 30dd612..b0f82e1 100644
--- a/src/xalanc/PlatformSupport/XalanNullOutputStream.hpp
+++ b/src/xalanc/PlatformSupport/XalanNullOutputStream.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -69,7 +69,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/XalanNumberFormat.cpp b/src/xalanc/PlatformSupport/XalanNumberFormat.cpp
index 58cb9a8..f39fd1b 100644
--- a/src/xalanc/PlatformSupport/XalanNumberFormat.cpp
+++ b/src/xalanc/PlatformSupport/XalanNumberFormat.cpp
@@ -28,7 +28,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -72,7 +72,7 @@
 
 XalanDOMString&
 XalanNumberFormat::format(
-            int                 theValue,
+            XMLInt16            theValue,
             XalanDOMString&     theResult)
 {
     NumberToDOMString(theValue, theResult);
@@ -87,7 +87,7 @@
 
 XalanDOMString&
 XalanNumberFormat::format(
-            unsigned int        theValue,
+            XMLUInt16           theValue,
             XalanDOMString&     theResult)
 {
     NumberToDOMString(theValue, theResult);
@@ -103,7 +103,7 @@
 
 XalanDOMString&
 XalanNumberFormat::format(
-            long                theValue,
+            XMLInt32            theValue,
             XalanDOMString&     theResult)
 {
     NumberToDOMString(theValue, theResult);
@@ -119,7 +119,7 @@
 
 XalanDOMString&
 XalanNumberFormat::format(
-            unsigned long       theValue,
+            XMLUInt32           theValue,
             XalanDOMString&     theResult)
 {
     NumberToDOMString(theValue, theResult);
@@ -133,7 +133,7 @@
 
 XalanDOMString&
 XalanNumberFormat::format(
-            XALAN_INT64         theValue,
+            XMLInt64            theValue,
             XalanDOMString&     theResult)
 {
     NumberToDOMString(theValue, theResult);
@@ -147,7 +147,7 @@
 
 XalanDOMString&
 XalanNumberFormat::format(
-            XALAN_UINT64        theValue,
+            XMLUInt64           theValue,
             XalanDOMString&     theResult)
 {
     NumberToDOMString(theValue, theResult);
@@ -251,4 +251,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/PlatformSupport/XalanNumberFormat.hpp b/src/xalanc/PlatformSupport/XalanNumberFormat.hpp
index 2519d1c..1e93ecd 100644
--- a/src/xalanc/PlatformSupport/XalanNumberFormat.hpp
+++ b/src/xalanc/PlatformSupport/XalanNumberFormat.hpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -79,7 +79,7 @@
      * @return string representation of number
      */
     virtual XalanDOMString&
-    format(int  theValue,
+    format( XMLInt16            theValue,
             XalanDOMString&     theResult);
 
 
@@ -92,7 +92,7 @@
      */
     virtual XalanDOMString&
     format(
-            unsigned int        theValue,
+            XMLUInt16           theValue,
             XalanDOMString&     theResult);
 
     /**
@@ -102,7 +102,7 @@
      * @return string representation of number
      */
     virtual XalanDOMString&
-    format(long     theValue,
+    format( XMLInt32            theValue,
             XalanDOMString&     theResult);
 
 
@@ -114,7 +114,7 @@
      */
     virtual XalanDOMString&
     format(
-            unsigned long       theValue,
+            XMLUInt32           theValue,
             XalanDOMString&     theResult);
 
     /**
@@ -125,7 +125,7 @@
      */
     virtual XalanDOMString&
     format(
-            XALAN_INT64         theValue,
+            XMLInt64            theValue,
             XalanDOMString&     theResult);
 
     /**
@@ -136,7 +136,7 @@
      */
     virtual XalanDOMString&
     format(
-            XALAN_UINT64        theValue,
+            XMLUInt64           theValue,
             XalanDOMString&     theResult);
 
     /**
@@ -202,7 +202,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/XalanOutputStream.cpp b/src/xalanc/PlatformSupport/XalanOutputStream.cpp
index 150b5ba..e4bcd87 100644
--- a/src/xalanc/PlatformSupport/XalanOutputStream.cpp
+++ b/src/xalanc/PlatformSupport/XalanOutputStream.cpp
@@ -33,7 +33,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -756,4 +756,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/PlatformSupport/XalanOutputStream.hpp b/src/xalanc/PlatformSupport/XalanOutputStream.hpp
index ee502f0..2a0a3ac 100644
--- a/src/xalanc/PlatformSupport/XalanOutputStream.hpp
+++ b/src/xalanc/PlatformSupport/XalanOutputStream.hpp
@@ -38,7 +38,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -479,7 +479,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/XalanOutputStreamPrintWriter.cpp b/src/xalanc/PlatformSupport/XalanOutputStreamPrintWriter.cpp
index ff9ecc4..41e1b62 100644
--- a/src/xalanc/PlatformSupport/XalanOutputStreamPrintWriter.cpp
+++ b/src/xalanc/PlatformSupport/XalanOutputStreamPrintWriter.cpp
@@ -33,7 +33,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -404,4 +404,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/PlatformSupport/XalanOutputStreamPrintWriter.hpp b/src/xalanc/PlatformSupport/XalanOutputStreamPrintWriter.hpp
index 4529be1..f2b7293 100644
--- a/src/xalanc/PlatformSupport/XalanOutputStreamPrintWriter.hpp
+++ b/src/xalanc/PlatformSupport/XalanOutputStreamPrintWriter.hpp
@@ -33,7 +33,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -189,7 +189,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/XalanParsedURI.cpp b/src/xalanc/PlatformSupport/XalanParsedURI.cpp
index 026adf9..6f5acec 100644
--- a/src/xalanc/PlatformSupport/XalanParsedURI.cpp
+++ b/src/xalanc/PlatformSupport/XalanParsedURI.cpp
@@ -27,16 +27,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
-
-
-#if defined(XALAN_INLINE_INITIALIZATION) && !defined(XALAN_INLINE_INITIALIZATION_IS_DEFINITION_BUG)
-const int   XalanParsedURI::d_scheme;
-const int   XalanParsedURI::d_authority;
-const int   XalanParsedURI::d_query;
-const int   XalanParsedURI::d_fragment;
-#endif
-
+namespace XALAN_CPP_NAMESPACE {
 
 
 /* Merge the components back into a complete URI string */
@@ -325,4 +316,4 @@
     return relativeURI.make(theResult);
 }
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/PlatformSupport/XalanParsedURI.hpp b/src/xalanc/PlatformSupport/XalanParsedURI.hpp
index 683c249..c3d8a91 100644
--- a/src/xalanc/PlatformSupport/XalanParsedURI.hpp
+++ b/src/xalanc/PlatformSupport/XalanParsedURI.hpp
@@ -31,7 +31,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -44,12 +44,6 @@
 
     // Flags to say if a component is defined.  Note that each component may
     // be defined but empty, except for the path.
-#if defined(XALAN_INLINE_INITIALIZATION)
-    static const int d_scheme       = 1;
-    static const int d_authority    = 2;
-    static const int d_query        = 4;
-    static const int d_fragment     = 8;
-#else
     enum eComponent
     {
         d_scheme    = 1,
@@ -57,7 +51,6 @@
         d_query     = 4,
         d_fragment  = 8
     };
-#endif
 
     /** 
      * Default constructor 
@@ -402,6 +395,6 @@
     unsigned int    m_defined;
 };
 
-XALAN_CPP_NAMESPACE_END
+}
 
 #endif // XALANPARSEDURI_HEADER_GUARD_1357924680
diff --git a/src/xalanc/PlatformSupport/XalanReferenceCountedObject.cpp b/src/xalanc/PlatformSupport/XalanReferenceCountedObject.cpp
index 7865a3f..c020f1a 100644
--- a/src/xalanc/PlatformSupport/XalanReferenceCountedObject.cpp
+++ b/src/xalanc/PlatformSupport/XalanReferenceCountedObject.cpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -79,4 +79,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/PlatformSupport/XalanReferenceCountedObject.hpp b/src/xalanc/PlatformSupport/XalanReferenceCountedObject.hpp
index 63bd542..dea4e0e 100644
--- a/src/xalanc/PlatformSupport/XalanReferenceCountedObject.hpp
+++ b/src/xalanc/PlatformSupport/XalanReferenceCountedObject.hpp
@@ -25,7 +25,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -84,7 +84,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/XalanSimplePrefixResolver.cpp b/src/xalanc/PlatformSupport/XalanSimplePrefixResolver.cpp
index 644e33e..5ef9087 100644
--- a/src/xalanc/PlatformSupport/XalanSimplePrefixResolver.cpp
+++ b/src/xalanc/PlatformSupport/XalanSimplePrefixResolver.cpp
@@ -24,7 +24,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -69,4 +69,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/PlatformSupport/XalanSimplePrefixResolver.hpp b/src/xalanc/PlatformSupport/XalanSimplePrefixResolver.hpp
index afb20c3..c2dd97f 100644
--- a/src/xalanc/PlatformSupport/XalanSimplePrefixResolver.hpp
+++ b/src/xalanc/PlatformSupport/XalanSimplePrefixResolver.hpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -63,7 +63,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/XalanStdOutputStream.cpp b/src/xalanc/PlatformSupport/XalanStdOutputStream.cpp
index 7f0f1cf..ab59949 100644
--- a/src/xalanc/PlatformSupport/XalanStdOutputStream.cpp
+++ b/src/xalanc/PlatformSupport/XalanStdOutputStream.cpp
@@ -24,9 +24,7 @@
 
 
 
-#if !defined(XALAN_CLASSIC_IOSTREAMS)
 #include <iostream>
-#endif
 
 
 
@@ -35,7 +33,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -51,7 +49,7 @@
 #endif
 {
     // This will make sure that cerr is not buffered...
-    if (&m_outputStream == &XALAN_STD_QUALIFIER cerr)
+    if (&m_outputStream == &std::cerr)
     {
         setBufferSize(0);
 
@@ -61,7 +59,7 @@
 #endif
     }
 #if defined(XALAN_NEWLINE_IS_CRLF)
-    else if (&m_outputStream == &XALAN_STD_QUALIFIER cout)
+    else if (&m_outputStream == &std::cout)
     {
         m_newlineString = s_nlString;
         m_newlineStringLength = s_nlStringLength;
@@ -135,9 +133,7 @@
 
         if (!m_outputStream)
         {
-#if defined(XALAN_STRICT_ANSI_HEADERS)
             using namespace std;
-#endif
             XalanDOMString  thebuffer(getMemoryManager());
 
             throw XalanStdOutputStreamWriteException(errno, thebuffer);
@@ -152,15 +148,13 @@
             const char*     theBuffer,
             size_type       theBufferLength)
 {
-    assert(static_cast<XALAN_UINT64>(static_cast<StreamSizeType>(theBufferLength)) == theBufferLength);
+    assert(static_cast<XMLUInt64>(static_cast<StreamSizeType>(theBufferLength)) == theBufferLength);
 
     m_outputStream.write(theBuffer, StreamSizeType(theBufferLength));
 
     if (!m_outputStream)
     {
-#if defined(XALAN_STRICT_ANSI_HEADERS)
         using namespace std;
-#endif
         XalanDOMString  thebuffer(getMemoryManager());
 
         throw XalanStdOutputStreamWriteException(errno, thebuffer);
@@ -258,4 +252,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/PlatformSupport/XalanStdOutputStream.hpp b/src/xalanc/PlatformSupport/XalanStdOutputStream.hpp
index 41c6a21..c24c497 100644
--- a/src/xalanc/PlatformSupport/XalanStdOutputStream.hpp
+++ b/src/xalanc/PlatformSupport/XalanStdOutputStream.hpp
@@ -25,12 +25,8 @@
 
 
 
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <iostream.h>
-#else
 #include <iosfwd>
 #include <ios>
-#endif
 
 
 
@@ -39,7 +35,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -48,21 +44,9 @@
 {
 public:
 
-#if defined(XALAN_NO_STD_NAMESPACE)
-    typedef ostream         StreamType;
-#else
     typedef std::ostream    StreamType;
-#endif
 
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-    typedef int                 StreamSizeType;
-#else
-#if defined(XALAN_NO_STD_NAMESPACE)
-    typedef streamsize          StreamSizeType;
-#else
     typedef std::streamsize     StreamSizeType;
-#endif
-#endif
 
     /**
      * Construct a XalanStdOutputStream instance for output to the
@@ -141,7 +125,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/XalanToXercesTranscoderWrapper.cpp b/src/xalanc/PlatformSupport/XalanToXercesTranscoderWrapper.cpp
index 379c9c6..502dc5a 100644
--- a/src/xalanc/PlatformSupport/XalanToXercesTranscoderWrapper.cpp
+++ b/src/xalanc/PlatformSupport/XalanToXercesTranscoderWrapper.cpp
@@ -29,11 +29,11 @@
 #include <xalanc/Include/XalanMemMgrAutoPtr.hpp>
 
 
-typedef XERCES_CPP_NAMESPACE_QUALIFIER XMLException     XMLExceptionType;
+typedef xercesc::XMLException     XMLExceptionType;
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -155,4 +155,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/PlatformSupport/XalanToXercesTranscoderWrapper.hpp b/src/xalanc/PlatformSupport/XalanToXercesTranscoderWrapper.hpp
index 6f84c9a..b731235 100644
--- a/src/xalanc/PlatformSupport/XalanToXercesTranscoderWrapper.hpp
+++ b/src/xalanc/PlatformSupport/XalanToXercesTranscoderWrapper.hpp
@@ -30,11 +30,14 @@
 
 
 
-XALAN_DECLARE_XERCES_CLASS(XMLTranscoder)
+namespace XERCES_CPP_NAMESPACE
+{
+    class XMLTranscoder;
+}
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -42,7 +45,7 @@
 {
 public:
 
-    typedef XERCES_CPP_NAMESPACE_QUALIFIER XMLTranscoder    XMLTranscoderType;
+    typedef xercesc::XMLTranscoder    XMLTranscoderType;
 
     explicit
     XalanToXercesTranscoderWrapper(MemoryManager& theManager, XMLTranscoderType&    theTranscoder);
@@ -90,7 +93,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/XalanTranscodingServices.cpp b/src/xalanc/PlatformSupport/XalanTranscodingServices.cpp
index 8445aac..d9f367c 100644
--- a/src/xalanc/PlatformSupport/XalanTranscodingServices.cpp
+++ b/src/xalanc/PlatformSupport/XalanTranscodingServices.cpp
@@ -35,7 +35,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -212,7 +212,7 @@
 
 
 
-XALAN_USING_XERCES(XMLTransService)
+using xercesc::XMLTransService;
 
 
 static XalanTranscodingServices::eCode
@@ -263,7 +263,7 @@
             eCode&                  theResult,
             size_type               theBlockSize)
 {
-    XALAN_USING_XERCES(XMLPlatformUtils)
+    using xercesc::XMLPlatformUtils;
 
     assert(XMLPlatformUtils::fgTransService != 0);
 
@@ -279,7 +279,7 @@
     }
     else
     {
-        XALAN_USING_XERCES(XMLTranscoder)
+        using xercesc::XMLTranscoder;
 
         XMLTranscoder*  theXercesTranscoder = 
             XMLPlatformUtils::fgTransService->makeNewTranscoderFor(
@@ -615,4 +615,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/PlatformSupport/XalanTranscodingServices.hpp b/src/xalanc/PlatformSupport/XalanTranscodingServices.hpp
index e076e13..fca1d38 100644
--- a/src/xalanc/PlatformSupport/XalanTranscodingServices.hpp
+++ b/src/xalanc/PlatformSupport/XalanTranscodingServices.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -414,7 +414,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/XalanUTF16Transcoder.cpp b/src/xalanc/PlatformSupport/XalanUTF16Transcoder.cpp
index e0a834a..f9dfa39 100644
--- a/src/xalanc/PlatformSupport/XalanUTF16Transcoder.cpp
+++ b/src/xalanc/PlatformSupport/XalanUTF16Transcoder.cpp
@@ -24,7 +24,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -139,4 +139,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/PlatformSupport/XalanUTF16Transcoder.hpp b/src/xalanc/PlatformSupport/XalanUTF16Transcoder.hpp
index 51a00a4..9cb2ffb 100644
--- a/src/xalanc/PlatformSupport/XalanUTF16Transcoder.hpp
+++ b/src/xalanc/PlatformSupport/XalanUTF16Transcoder.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -104,7 +104,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/XalanUnicode.hpp b/src/xalanc/PlatformSupport/XalanUnicode.hpp
index 8f24fe4..de3d8e2 100644
--- a/src/xalanc/PlatformSupport/XalanUnicode.hpp
+++ b/src/xalanc/PlatformSupport/XalanUnicode.hpp
@@ -25,159 +25,12 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
-#if defined(XALAN_HAS_CPP_NAMESPACE)
 namespace XalanUnicode
-#else
-struct XALAN_PLATFORMSUPPORT_EXPORT XalanUnicode
-#endif
 {
-#if !defined(XALAN_HAS_CPP_NAMESPACE)
-
-    enum
-    {
-        charHTab                = 0x09,
-        charLF                  = 0x0A,
-        charFF                  = 0x0C,
-        charCR                  = 0x0D,
-        charSpace               = 0x20,
-
-        charExclamationMark     = 0x21,
-
-        charQuoteMark           = 0x22,
-
-        charNumberSign          = 0x23,
-
-        charDollarSign          = 0x24,
-
-        charPercentSign         = 0x25,
-
-        charAmpersand           = 0x26,
-
-        charApostrophe          = 0x27,
-
-        charLeftParenthesis     = 0x28,
-        charRightParenthesis    = 0x29,
-
-        charAsterisk            = 0x2A,
-
-        charPlusSign            = 0x2B,
-
-        charComma               = 0x2C,
-
-        charHyphenMinus         = 0x2D,
-
-        charFullStop            = 0x2E,
-
-        charSolidus             = 0x2F,
-
-        charDigit_0             = 0x30,
-        charDigit_1             = 0x31,
-        charDigit_2             = 0x32,
-        charDigit_3             = 0x33,
-        charDigit_4             = 0x34,
-        charDigit_5             = 0x35,
-        charDigit_6             = 0x36,
-        charDigit_7             = 0x37,
-        charDigit_8             = 0x38,
-        charDigit_9             = 0x39,
-
-        charColon               = 0x3A,
-        charSemicolon           = 0x3B,
-
-        charLessThanSign        = 0x3C,
-
-        charEqualsSign          = 0x3D,
-
-        charGreaterThanSign     = 0x3E,
-
-        charQuestionMark        = 0x3F,
-
-        charCommercialAt        = 0x40,
-
-        charLetter_A            = 0x41,
-        charLetter_B            = 0x42,
-        charLetter_C            = 0x43,
-        charLetter_D            = 0x44,
-        charLetter_E            = 0x45,
-        charLetter_F            = 0x46,
-        charLetter_G            = 0x47,
-        charLetter_H            = 0x48,
-        charLetter_I            = 0x49,
-        charLetter_J            = 0x4A,
-        charLetter_K            = 0x4B,
-        charLetter_L            = 0x4C,
-        charLetter_M            = 0x4D,
-        charLetter_N            = 0x4E,
-        charLetter_O            = 0x4F,
-        charLetter_P            = 0x50,
-        charLetter_Q            = 0x51,
-        charLetter_R            = 0x52,
-        charLetter_S            = 0x53,
-        charLetter_T            = 0x54,
-        charLetter_U            = 0x55,
-        charLetter_V            = 0x56,
-        charLetter_W            = 0x57,
-        charLetter_X            = 0x58,
-        charLetter_Y            = 0x59,
-        charLetter_Z            = 0x5A,
-
-        charLeftSquareBracket   = 0x5B,
-
-        charReverseSolidus      = 0x5C,
-
-        charRightSquareBracket  = 0x5D,
-
-        charCircumflexAccent    = 0x5E,
-
-        charLowLine             = 0x5F,
-        charGraveAccent         = 0x60,
-
-        charLetter_a            = 0x61,
-        charLetter_b            = 0x62,
-        charLetter_c            = 0x63,
-        charLetter_d            = 0x64,
-        charLetter_e            = 0x65,
-        charLetter_f            = 0x66,
-        charLetter_g            = 0x67,
-        charLetter_h            = 0x68,
-        charLetter_i            = 0x69,
-        charLetter_j            = 0x6A,
-        charLetter_k            = 0x6B,
-        charLetter_l            = 0x6C,
-        charLetter_m            = 0x6D,
-        charLetter_n            = 0x6E,
-        charLetter_o            = 0x6F,
-        charLetter_p            = 0x70,
-        charLetter_q            = 0x71,
-        charLetter_r            = 0x72,
-        charLetter_s            = 0x73,
-        charLetter_t            = 0x74,
-        charLetter_u            = 0x75,
-        charLetter_v            = 0x76,
-        charLetter_w            = 0x77,
-        charLetter_x            = 0x78,
-        charLetter_y            = 0x79,
-        charLetter_z            = 0x7A,
-
-        charLeftCurlyBracket    = 0x7B,
-
-        charVerticalLine        = 0x7C,
-
-        charRightCurlyBracket   = 0x7D,
-
-        charNEL                 = 0x85,
-
-        charLSEP                = 0x2028,
-
-        charPerMilleSign        = 0x2030
-    };
-
-#else
-
     static const XalanDOMChar   charHTab                = 0x09;
     static const XalanDOMChar   charLF                  = 0x0A;
     static const XalanDOMChar   charCR                  = 0x0D;
@@ -313,32 +166,11 @@
     static const XalanDOMChar   charLSEP                = 0x2028;
 
     static const XalanDOMChar   charPerMilleSign        = 0x2030;
-#endif
-
-
-
-#if !defined(XALAN_HAS_CPP_NAMESPACE)
-
-private:
-
-    // Not implemented...
-    XalanUnicode();
-
-    XalanUnicode(const XalanUnicode&);
-
-    ~XalanUnicode();
-
-    XalanUnicode&
-    operator=(const XalanUnicode&);
-
-};
-#else
 }
-#endif
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/PlatformSupport/XalanXMLChar.cpp b/src/xalanc/PlatformSupport/XalanXMLChar.cpp
index 6b92494..0efc37b 100644
--- a/src/xalanc/PlatformSupport/XalanXMLChar.cpp
+++ b/src/xalanc/PlatformSupport/XalanXMLChar.cpp
@@ -19,7 +19,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -8231,4 +8231,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/PlatformSupport/XalanXMLChar.hpp b/src/xalanc/PlatformSupport/XalanXMLChar.hpp
index 96f2fa8..5caf305 100644
--- a/src/xalanc/PlatformSupport/XalanXMLChar.hpp
+++ b/src/xalanc/PlatformSupport/XalanXMLChar.hpp
@@ -25,7 +25,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -92,7 +92,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/TestXPath/NodeNameTreeWalker.cpp b/src/xalanc/TestXPath/NodeNameTreeWalker.cpp
index 4ac48ae..1729c45 100644
--- a/src/xalanc/TestXPath/NodeNameTreeWalker.cpp
+++ b/src/xalanc/TestXPath/NodeNameTreeWalker.cpp
@@ -28,7 +28,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -127,4 +127,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/TestXPath/NodeNameTreeWalker.hpp b/src/xalanc/TestXPath/NodeNameTreeWalker.hpp
index 4c96f39..6b06702 100644
--- a/src/xalanc/TestXPath/NodeNameTreeWalker.hpp
+++ b/src/xalanc/TestXPath/NodeNameTreeWalker.hpp
@@ -32,7 +32,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -98,7 +98,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/TestXPath/TestXPath.cpp b/src/xalanc/TestXPath/TestXPath.cpp
index ed1176a..721c3b3 100644
--- a/src/xalanc/TestXPath/TestXPath.cpp
+++ b/src/xalanc/TestXPath/TestXPath.cpp
@@ -27,11 +27,7 @@
 
 
 
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <iostream.h>
-#else
 #include <iostream>
-#endif
 
 
 
@@ -94,8 +90,8 @@
 
 
 
-XALAN_CPP_NAMESPACE_USE
-XERCES_CPP_NAMESPACE_USE
+using namespace xalanc;
+using namespace xercesc;
 
 
 
@@ -1341,7 +1337,7 @@
             int     /* argc */,
             char*   /* argv */ [])
 {
-    XALAN_USING_STD(cout)
+    using std::cout;
 
 #if !defined(NDEBUG) && defined(_MSC_VER)
     _CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF);
diff --git a/src/xalanc/TestXSLT/process.cpp b/src/xalanc/TestXSLT/process.cpp
index ed460e6..026afb6 100644
--- a/src/xalanc/TestXSLT/process.cpp
+++ b/src/xalanc/TestXSLT/process.cpp
@@ -24,11 +24,7 @@
 #include <cstring>
 #include <algorithm>
 
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <iostream.h>
-#else
 #include <iostream>
-#endif
 
 
 
@@ -141,13 +137,13 @@
 
 
 
-XALAN_USING_STD(cerr)
-XALAN_USING_STD(cin)
-XALAN_USING_STD(cout)
-XALAN_USING_STD(endl)
-XALAN_USING_STD(hex)
-XALAN_USING_STD(pair)
-XALAN_USING_STD(vector)
+using std::cerr;
+using std::cin;
+using std::cout;
+using std::endl;
+using std::hex;
+using std::pair;
+using std::vector;
 
 
 
@@ -232,15 +228,15 @@
 
 
 // We only need a few things from the Xerces namespace...
-XALAN_USING_XERCES(XMLPlatformUtils)
-XALAN_USING_XERCES(SAXParseException)
-XALAN_USING_XERCES(SAXException)
-XALAN_USING_XERCES(XMLException)
+using xercesc::XMLPlatformUtils;
+using xercesc::SAXParseException;
+using xercesc::SAXException;
+using xercesc::XMLException;
 
 
 
 // We need lots of things from the Xalan namespace, so hoist everything...
-XALAN_CPP_NAMESPACE_USE
+using namespace xalanc;
 
 
 
@@ -393,11 +389,7 @@
 
             if(i < argc && argv[i][0] != '-')
             {
-#if defined(XALAN_STRICT_ANSI_HEADERS)
                 p.indentAmount = std::atoi(argv[i]);
-#else
-                p.indentAmount = atoi(argv[i]);
-#endif
             }
             else
             {
diff --git a/src/xalanc/Utils/MsgCreator/ICUResHandler.cpp b/src/xalanc/Utils/MsgCreator/ICUResHandler.cpp
index 5fc23b0..a527da9 100644
--- a/src/xalanc/Utils/MsgCreator/ICUResHandler.cpp
+++ b/src/xalanc/Utils/MsgCreator/ICUResHandler.cpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -224,4 +224,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/Utils/MsgCreator/ICUResHandler.hpp b/src/xalanc/Utils/MsgCreator/ICUResHandler.hpp
index ba1cc1e..58b4bf3 100644
--- a/src/xalanc/Utils/MsgCreator/ICUResHandler.hpp
+++ b/src/xalanc/Utils/MsgCreator/ICUResHandler.hpp
@@ -27,7 +27,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -106,7 +106,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/Utils/MsgCreator/InMemData.hpp b/src/xalanc/Utils/MsgCreator/InMemData.hpp
index deff1a7..4122ebe 100644
--- a/src/xalanc/Utils/MsgCreator/InMemData.hpp
+++ b/src/xalanc/Utils/MsgCreator/InMemData.hpp
@@ -32,7 +32,7 @@
 "#define XALAN_MSG_LOADER_GUARD_1357924680 \n",
 "\n",
 "\n",
-"XALAN_CPP_NAMESPACE_BEGIN\n",
+"namespace XALAN_CPP_NAMESPACE {\n",
 "\n",
 "\n",
 0
@@ -43,7 +43,7 @@
 {
 "\n",
 "\n",
-"XALAN_CPP_NAMESPACE_END \n",
+"} \n",
 "\n",
 "\n",
 "#endif //XALAN_MSG_LOADER_GUARD_1357924680  \n",
diff --git a/src/xalanc/Utils/MsgCreator/InMemHandler.cpp b/src/xalanc/Utils/MsgCreator/InMemHandler.cpp
index 3c9a02b..4b4ee95 100644
--- a/src/xalanc/Utils/MsgCreator/InMemHandler.cpp
+++ b/src/xalanc/Utils/MsgCreator/InMemHandler.cpp
@@ -29,11 +29,9 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
-  using std::sprintf;
-#endif
+using std::sprintf;
 
 // -----------------------------------------------------------------------
 //  Constructors
@@ -250,4 +248,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/Utils/MsgCreator/InMemHandler.hpp b/src/xalanc/Utils/MsgCreator/InMemHandler.hpp
index 140a4af..4e13195 100644
--- a/src/xalanc/Utils/MsgCreator/InMemHandler.hpp
+++ b/src/xalanc/Utils/MsgCreator/InMemHandler.hpp
@@ -27,7 +27,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -109,7 +109,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/Utils/MsgCreator/IndexFileData.hpp b/src/xalanc/Utils/MsgCreator/IndexFileData.hpp
index 22783ba..77c5c78 100644
--- a/src/xalanc/Utils/MsgCreator/IndexFileData.hpp
+++ b/src/xalanc/Utils/MsgCreator/IndexFileData.hpp
@@ -59,7 +59,7 @@
 "\n",
 "\n",
 "\n",
-"XALAN_CPP_NAMESPACE_BEGIN\n",
+"namespace XALAN_CPP_NAMESPACE {\n",
 "\n",
 "\n",
 "class XalanMessages",
@@ -79,7 +79,7 @@
 "};\n",
 "\n",
 "\n",
-"XALAN_CPP_NAMESPACE_END \n",
+"} \n",
 "\n",
 "\n",
 "#endif //XALAN_MSG_LOADER_INDEX_GUARD_1357924680  \n",
diff --git a/src/xalanc/Utils/MsgCreator/MsgCreator.cpp b/src/xalanc/Utils/MsgCreator/MsgCreator.cpp
index 0ddc587..c742389 100644
--- a/src/xalanc/Utils/MsgCreator/MsgCreator.cpp
+++ b/src/xalanc/Utils/MsgCreator/MsgCreator.cpp
@@ -34,9 +34,9 @@
 #endif
 
 
-XALAN_USING_STD(cerr)
-XALAN_USING_STD(cout)
-XALAN_USING_STD(endl)
+using std::cerr;
+using std::cout;
+using std::endl;
 
 static const char* s_pathSeparator =
 #if defined(XALAN_WINDOWS)
@@ -147,9 +147,7 @@
             ++i;
             if( i < argc && argv[i][0] != '-' )
             {
-#if defined(XALAN_STRICT_ANSI_HEADERS)
                 using std::size_t;
-#endif
                 const size_t    localeLen = strlen(argv[i]);
 
                 if ( localeLen != 2 && localeLen !=5)
@@ -244,10 +242,8 @@
             const CmdLineParams&    p,
             char                    FileName[])
 {
-#if defined(XALAN_STRICT_ANSI_HEADERS)
     using std::strlen;
     using std::size_t;
-#endif
 
     const size_t    dirLength = strlen(p.outDir);
 
@@ -338,7 +334,7 @@
     _CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDERR);
 #endif
 
-    XALAN_CPP_NAMESPACE_USE
+    using namespace xalanc;
 
     CmdLineParams   theParams;
 
diff --git a/src/xalanc/Utils/MsgCreator/MsgCreator.hpp b/src/xalanc/Utils/MsgCreator/MsgCreator.hpp
index 5a4c714..834896a 100644
--- a/src/xalanc/Utils/MsgCreator/MsgCreator.hpp
+++ b/src/xalanc/Utils/MsgCreator/MsgCreator.hpp
@@ -27,13 +27,9 @@
 #include <cstring>
 #include <cstdlib>
 
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <iostream.h>
-#else
 #include <iostream>
-#endif
 
-XERCES_CPP_NAMESPACE_USE
+using namespace xercesc;
 
 // ---------------------------------------------------------------------------
 //  This is a simple class that lets us do easy (though not terribly efficient)
@@ -47,7 +43,7 @@
     // -----------------------------------------------------------------------
     StrX(const XMLCh* const toTranscode)
     {
-        XALAN_USING_XERCES(XMLString)
+        using xercesc::XMLString;
 
         // Call the private transcoding method
         fLocalForm = XMLString::transcode(toTranscode);
@@ -55,7 +51,7 @@
 
     ~StrX()
     {
-        XALAN_USING_XERCES(XMLString)
+        using xercesc::XMLString;
 
         XMLString::release(&fLocalForm);
     }
@@ -78,11 +74,7 @@
     char*   fLocalForm;
 };
 
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-inline ostream& operator<<(ostream& target, const StrX& toDump)
-#else
-inline XALAN_STD_QUALIFIER ostream& operator<<(XALAN_STD_QUALIFIER ostream& target, const StrX& toDump)
-#endif
+inline std::ostream& operator<<(std::ostream& target, const StrX& toDump)
 {
     target << toDump.localForm();
     return target;
diff --git a/src/xalanc/Utils/MsgCreator/MsgFileOutputStream.cpp b/src/xalanc/Utils/MsgCreator/MsgFileOutputStream.cpp
index 95184fa..39be314 100644
--- a/src/xalanc/Utils/MsgCreator/MsgFileOutputStream.cpp
+++ b/src/xalanc/Utils/MsgCreator/MsgFileOutputStream.cpp
@@ -28,11 +28,11 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
-XALAN_USING_XERCES(XMLString)
+using xercesc::XMLString;
 
 
 
@@ -41,9 +41,7 @@
 {
     assert(theFileName != 0);
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
     using std::fopen;
-#endif
 
     return fopen(theFileName, "wb");
 }
@@ -66,9 +64,7 @@
 
 MsgFileOutputStream::~MsgFileOutputStream()
 {
-#if defined(XALAN_STRICT_ANSI_HEADERS)
     using std::fclose;
-#endif
 
     if (m_handle != 0)
     {
@@ -81,9 +77,7 @@
 void
 MsgFileOutputStream::doFlush()
 {
-#if defined(XALAN_STRICT_ANSI_HEADERS)
     using std::fflush;
-#endif
 
     if (fflush(m_handle) != 0)
     {
@@ -100,9 +94,7 @@
             const char*     theBuffer,
             XalanSize_t     theBufferLength)
 {
-#if defined(XALAN_STRICT_ANSI_HEADERS)
     using std::fwrite;
-#endif
 
     const size_t    theBytesWritten =
         fwrite(theBuffer,
@@ -131,9 +123,7 @@
     assert(theFileName != 0);
     assert(theResult != 0);
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
     using std::sprintf;
-#endif
 
     sprintf(
         theResult,
@@ -263,4 +253,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/Utils/MsgCreator/MsgFileOutputStream.hpp b/src/xalanc/Utils/MsgCreator/MsgFileOutputStream.hpp
index aaf643a..bc88dd6 100644
--- a/src/xalanc/Utils/MsgCreator/MsgFileOutputStream.hpp
+++ b/src/xalanc/Utils/MsgCreator/MsgFileOutputStream.hpp
@@ -29,11 +29,11 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
-XERCES_CPP_NAMESPACE_USE
+using namespace xercesc;
 
 
 
@@ -42,11 +42,7 @@
 {
 public :
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
     typedef std::FILE*  HandleType;
-#else
-    typedef FILE*       HandleType;
-#endif
 
     /**
      * Construct an MsgFileOutputStream object.
@@ -153,7 +149,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/Utils/MsgCreator/NLSHandler.cpp b/src/xalanc/Utils/MsgCreator/NLSHandler.cpp
index 7e92cfc..44b03ab 100644
--- a/src/xalanc/Utils/MsgCreator/NLSHandler.cpp
+++ b/src/xalanc/Utils/MsgCreator/NLSHandler.cpp
@@ -26,7 +26,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -121,9 +121,7 @@
 {
     char szNumb[20];
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
     using std::sprintf;
-#endif
 
     sprintf(
         szNumb,
@@ -174,4 +172,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/Utils/MsgCreator/NLSHandler.hpp b/src/xalanc/Utils/MsgCreator/NLSHandler.hpp
index d15ccb6..76b84dc 100644
--- a/src/xalanc/Utils/MsgCreator/NLSHandler.hpp
+++ b/src/xalanc/Utils/MsgCreator/NLSHandler.hpp
@@ -25,11 +25,11 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
-XERCES_CPP_NAMESPACE_USE
+using namespace xercesc;
 
 
 
@@ -90,7 +90,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/Utils/MsgCreator/SAX2Handler.cpp b/src/xalanc/Utils/MsgCreator/SAX2Handler.cpp
index 15752a7..c6d4204 100644
--- a/src/xalanc/Utils/MsgCreator/SAX2Handler.cpp
+++ b/src/xalanc/Utils/MsgCreator/SAX2Handler.cpp
@@ -33,16 +33,14 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
-  using std::sprintf;
-#endif
+using std::sprintf;
 
 
-XALAN_USING_XERCES(Attributes)
-XALAN_USING_XERCES(SAXParseException)
-XALAN_USING_XERCES(XMLString)
+using xercesc::Attributes;
+using xercesc::SAXParseException;
+using xercesc::XMLString;
 
 // ---------------------------------------------------------------------------
 //  SAX2Handler: Constructors and Destructor
@@ -168,8 +166,8 @@
 }
 
 
-XALAN_USING_STD(cerr)
-XALAN_USING_STD(endl)
+using std::cerr;
+using std::endl;
 
 
 // ---------------------------------------------------------------------------
@@ -243,4 +241,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/Utils/MsgCreator/SAX2Handler.hpp b/src/xalanc/Utils/MsgCreator/SAX2Handler.hpp
index 2d1ca6c..06da537 100644
--- a/src/xalanc/Utils/MsgCreator/SAX2Handler.hpp
+++ b/src/xalanc/Utils/MsgCreator/SAX2Handler.hpp
@@ -25,11 +25,11 @@
 #include <xercesc/util/XMLUniDefs.hpp>
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
-XERCES_CPP_NAMESPACE_USE
+using namespace xercesc;
 
 
 
@@ -112,7 +112,7 @@
 // For creation data file responsible subclasses
 
 
-class SAX2Handler : public XERCES_CPP_NAMESPACE_QUALIFIER DefaultHandler
+class SAX2Handler : public xercesc::DefaultHandler
 {
 public:
     // -----------------------------------------------------------------------
@@ -229,7 +229,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/Utils/XalanMsgLib/XalanMsgLib.cpp b/src/xalanc/Utils/XalanMsgLib/XalanMsgLib.cpp
index 851b4e6..216cf64 100644
--- a/src/xalanc/Utils/XalanMsgLib/XalanMsgLib.cpp
+++ b/src/xalanc/Utils/XalanMsgLib/XalanMsgLib.cpp
@@ -24,7 +24,7 @@
 
 #include <LocalMsgData.hpp>
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 static const XalanDOMChar   s_errString[] =
@@ -77,6 +77,6 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
diff --git a/src/xalanc/Utils/XalanMsgLib/XalanMsgLib.hpp b/src/xalanc/Utils/XalanMsgLib/XalanMsgLib.hpp
index c510950..55e700f 100644
--- a/src/xalanc/Utils/XalanMsgLib/XalanMsgLib.hpp
+++ b/src/xalanc/Utils/XalanMsgLib/XalanMsgLib.hpp
@@ -24,7 +24,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -43,7 +43,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XMLSupport/FormatterToHTML.cpp b/src/xalanc/XMLSupport/FormatterToHTML.cpp
index cbb25ec..c3e11c9 100644
--- a/src/xalanc/XMLSupport/FormatterToHTML.cpp
+++ b/src/xalanc/XMLSupport/FormatterToHTML.cpp
@@ -48,7 +48,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -170,9 +170,7 @@
 {
     initAttrCharsMap();
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
     using std::memset;
-#endif
 
     memset(m_charsMap, 0, sizeof(m_charsMap));
 
@@ -1557,4 +1555,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XMLSupport/FormatterToHTML.hpp b/src/xalanc/XMLSupport/FormatterToHTML.hpp
index 501f47e..f4bed66 100644
--- a/src/xalanc/XMLSupport/FormatterToHTML.hpp
+++ b/src/xalanc/XMLSupport/FormatterToHTML.hpp
@@ -42,7 +42,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -337,7 +337,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XMLSupport/FormatterToNull.cpp b/src/xalanc/XMLSupport/FormatterToNull.cpp
index c3882ef..09d1404 100644
--- a/src/xalanc/XMLSupport/FormatterToNull.cpp
+++ b/src/xalanc/XMLSupport/FormatterToNull.cpp
@@ -20,7 +20,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -140,4 +140,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XMLSupport/FormatterToNull.hpp b/src/xalanc/XMLSupport/FormatterToNull.hpp
index 1a9f588..c36a395 100644
--- a/src/xalanc/XMLSupport/FormatterToNull.hpp
+++ b/src/xalanc/XMLSupport/FormatterToNull.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -122,7 +122,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XMLSupport/FormatterToText.cpp b/src/xalanc/XMLSupport/FormatterToText.cpp
index f89e1f3..cb9648d 100644
--- a/src/xalanc/XMLSupport/FormatterToText.cpp
+++ b/src/xalanc/XMLSupport/FormatterToText.cpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -363,4 +363,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XMLSupport/FormatterToText.hpp b/src/xalanc/XMLSupport/FormatterToText.hpp
index c4b7407..808418a 100644
--- a/src/xalanc/XMLSupport/FormatterToText.hpp
+++ b/src/xalanc/XMLSupport/FormatterToText.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -256,7 +256,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XMLSupport/FormatterToXML.cpp b/src/xalanc/XMLSupport/FormatterToXML.cpp
index 45365ed..c68eaf8 100644
--- a/src/xalanc/XMLSupport/FormatterToXML.cpp
+++ b/src/xalanc/XMLSupport/FormatterToXML.cpp
@@ -40,7 +40,11 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+#include <cstring>
+
+
+
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -377,11 +381,7 @@
 void
 FormatterToXML::initAttrCharsMap()
 {
-#if defined(XALAN_STRICT_ANSI_HEADERS)
     std::memset(m_attrCharsMap, 0, sizeof(m_attrCharsMap));
-#else
-    memset(m_attrCharsMap, 0, sizeof(m_attrCharsMap));
-#endif
 
     const XalanDOMString::size_type     nSpecials =
         m_attrSpecialChars.length();
@@ -415,11 +415,7 @@
 {
     initAttrCharsMap();
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
     std::memset(m_charsMap, 0, sizeof(m_charsMap));
-#else
-    memset(m_charsMap, 0, sizeof(m_charsMap));
-#endif
 
     m_charsMap[XalanUnicode::charLessThanSign] = 'S';
     m_charsMap[XalanUnicode::charGreaterThanSign] = 'S';
@@ -795,7 +791,7 @@
 
 
 
-XALAN_USING_XERCES(SAXException)
+using xercesc::SAXException;
 
 void
 FormatterToXML::throwInvalidUTF16SurrogateException(
@@ -829,7 +825,7 @@
             XalanMessages::InvalidScalar_1Param,
             NumberToHexDOMString(ch, theBuffer));
 
-    XALAN_USING_XERCES(SAXException)
+    using xercesc::SAXException;
 
     throw SAXException(theMessage.c_str(), &theManager);
 }
@@ -2031,4 +2027,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XMLSupport/FormatterToXML.hpp b/src/xalanc/XMLSupport/FormatterToXML.hpp
index 9af1e5b..d3e192f 100644
--- a/src/xalanc/XMLSupport/FormatterToXML.hpp
+++ b/src/xalanc/XMLSupport/FormatterToXML.hpp
@@ -44,7 +44,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -1174,7 +1174,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XMLSupport/FormatterToXMLUnicode.hpp b/src/xalanc/XMLSupport/FormatterToXMLUnicode.hpp
index 91fa07f..c118c07 100644
--- a/src/xalanc/XMLSupport/FormatterToXMLUnicode.hpp
+++ b/src/xalanc/XMLSupport/FormatterToXMLUnicode.hpp
@@ -42,7 +42,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 /**
@@ -915,7 +915,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XMLSupport/FormatterTreeWalker.cpp b/src/xalanc/XMLSupport/FormatterTreeWalker.cpp
index baec197..6a6cdf4 100644
--- a/src/xalanc/XMLSupport/FormatterTreeWalker.cpp
+++ b/src/xalanc/XMLSupport/FormatterTreeWalker.cpp
@@ -33,7 +33,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -180,4 +180,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XMLSupport/FormatterTreeWalker.hpp b/src/xalanc/XMLSupport/FormatterTreeWalker.hpp
index a345af0..7ad28fc 100644
--- a/src/xalanc/XMLSupport/FormatterTreeWalker.hpp
+++ b/src/xalanc/XMLSupport/FormatterTreeWalker.hpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -76,7 +76,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XMLSupport/XMLParserLiaison.cpp b/src/xalanc/XMLSupport/XMLParserLiaison.cpp
index 6ae3578..3aefd13 100644
--- a/src/xalanc/XMLSupport/XMLParserLiaison.cpp
+++ b/src/xalanc/XMLSupport/XMLParserLiaison.cpp
@@ -20,7 +20,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -36,4 +36,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XMLSupport/XMLParserLiaison.hpp b/src/xalanc/XMLSupport/XMLParserLiaison.hpp
index a2001dd..394a025 100644
--- a/src/xalanc/XMLSupport/XMLParserLiaison.hpp
+++ b/src/xalanc/XMLSupport/XMLParserLiaison.hpp
@@ -29,28 +29,31 @@
 
 
 
-XALAN_DECLARE_XERCES_CLASS(DocumentHandler)
-XALAN_DECLARE_XERCES_CLASS(EntityResolver)
-XALAN_DECLARE_XERCES_CLASS(ErrorHandler)
-XALAN_DECLARE_XERCES_CLASS(InputSource)
-XALAN_DECLARE_XERCES_CLASS(XMLEntityResolver)
+namespace XERCES_CPP_NAMESPACE
+{
+    class DocumentHandler;
+    class EntityResolver;
+    class ErrorHandler;
+    class InputSource;
+    class XMLEntityResolver;
+}
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
-typedef XERCES_CPP_NAMESPACE_QUALIFIER DocumentHandler  DocumentHandlerType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER EntityResolver   EntityResolverType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER ErrorHandler     ErrorHandlerType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER InputSource      InputSourceType;
+typedef xercesc::DocumentHandler  DocumentHandlerType;
+typedef xercesc::EntityResolver   EntityResolverType;
+typedef xercesc::ErrorHandler     ErrorHandlerType;
+typedef xercesc::InputSource      InputSourceType;
 
-XALAN_USING_XERCES(DocumentHandler)
-XALAN_USING_XERCES(EntityResolver)
-XALAN_USING_XERCES(ErrorHandler)
-XALAN_USING_XERCES(InputSource)
-XALAN_USING_XERCES(XMLEntityResolver)
+using xercesc::DocumentHandler;
+using xercesc::EntityResolver;
+using xercesc::ErrorHandler;
+using xercesc::InputSource;
+using xercesc::XMLEntityResolver;
 
 
 
@@ -372,7 +375,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XMLSupport/XMLSupportException.cpp b/src/xalanc/XMLSupport/XMLSupportException.cpp
index 774330c..7613664 100644
--- a/src/xalanc/XMLSupport/XMLSupportException.cpp
+++ b/src/xalanc/XMLSupport/XMLSupportException.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -51,4 +51,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XMLSupport/XMLSupportException.hpp b/src/xalanc/XMLSupport/XMLSupportException.hpp
index 5a898cd..fc8d319 100644
--- a/src/xalanc/XMLSupport/XMLSupportException.hpp
+++ b/src/xalanc/XMLSupport/XMLSupportException.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -62,7 +62,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XMLSupport/XMLSupportInit.cpp b/src/xalanc/XMLSupport/XMLSupportInit.cpp
index 118f5bc..419435a 100644
--- a/src/xalanc/XMLSupport/XMLSupportInit.cpp
+++ b/src/xalanc/XMLSupport/XMLSupportInit.cpp
@@ -24,7 +24,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -74,4 +74,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XMLSupport/XMLSupportInit.hpp b/src/xalanc/XMLSupport/XMLSupportInit.hpp
index 14cb7b7..104db6d 100644
--- a/src/xalanc/XMLSupport/XMLSupportInit.hpp
+++ b/src/xalanc/XMLSupport/XMLSupportInit.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -71,7 +71,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XMLSupport/XalanDummyIndentWriter.hpp b/src/xalanc/XMLSupport/XalanDummyIndentWriter.hpp
index 28f06d4..c3b105f 100644
--- a/src/xalanc/XMLSupport/XalanDummyIndentWriter.hpp
+++ b/src/xalanc/XMLSupport/XalanDummyIndentWriter.hpp
@@ -25,7 +25,7 @@
 #include <xalanc/Include/XalanVector.hpp>
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 template<class WriteHandeler>
@@ -117,7 +117,7 @@
 
 };
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XMLSupport/XalanFormatterWriter.hpp b/src/xalanc/XMLSupport/XalanFormatterWriter.hpp
index 8f1fc41..7ad808d 100644
--- a/src/xalanc/XMLSupport/XalanFormatterWriter.hpp
+++ b/src/xalanc/XMLSupport/XalanFormatterWriter.hpp
@@ -33,11 +33,11 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
-XALAN_USING_XERCES(MemoryManager)
+using xercesc::MemoryManager;
 
 
 
@@ -259,7 +259,7 @@
                     XalanMessages::InvalidScalar_1Param, 
                     NumberToHexDOMString(ch, theBuffer));
 
-        XALAN_USING_XERCES(SAXException)
+        using xercesc::SAXException;
 
         throw SAXException(theMessage.c_str(), &theManager);
     }
@@ -304,7 +304,7 @@
                     chStr,
                     nextStr);
 
-        XALAN_USING_XERCES(SAXException)
+        using xercesc::SAXException;
 
         throw SAXException(theMessage.c_str(),&theManager);
     }
@@ -365,7 +365,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XMLSupport/XalanHTMLElementsProperties.cpp b/src/xalanc/XMLSupport/XalanHTMLElementsProperties.cpp
index 562d2d4..bfbea7a 100644
--- a/src/xalanc/XMLSupport/XalanHTMLElementsProperties.cpp
+++ b/src/xalanc/XMLSupport/XalanHTMLElementsProperties.cpp
@@ -25,7 +25,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -1293,4 +1293,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XMLSupport/XalanHTMLElementsProperties.hpp b/src/xalanc/XMLSupport/XalanHTMLElementsProperties.hpp
index 606b833..1fe5c10 100644
--- a/src/xalanc/XMLSupport/XalanHTMLElementsProperties.hpp
+++ b/src/xalanc/XMLSupport/XalanHTMLElementsProperties.hpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -280,7 +280,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XMLSupport/XalanIndentWriter.hpp b/src/xalanc/XMLSupport/XalanIndentWriter.hpp
index ab3d505..a64770e 100644
--- a/src/xalanc/XMLSupport/XalanIndentWriter.hpp
+++ b/src/xalanc/XMLSupport/XalanIndentWriter.hpp
@@ -28,7 +28,7 @@
 #include <xalanc/PlatformSupport/Writer.hpp>
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 template<
@@ -201,7 +201,7 @@
     BoolStackType   m_preserves;
 };
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XMLSupport/XalanOtherEncodingWriter.hpp b/src/xalanc/XMLSupport/XalanOtherEncodingWriter.hpp
index 3e33a97..8741cea 100644
--- a/src/xalanc/XMLSupport/XalanOtherEncodingWriter.hpp
+++ b/src/xalanc/XMLSupport/XalanOtherEncodingWriter.hpp
@@ -23,7 +23,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -478,7 +478,7 @@
             flushBuffer();
         }
 
-        XALAN_USING_STD(copy)
+        using std::copy;
 
         assert(theString.size() <= m_bufferRemaining);
 
@@ -518,7 +518,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XMLSupport/XalanUTF16Writer.cpp b/src/xalanc/XMLSupport/XalanUTF16Writer.cpp
index 7a20b63..7749c90 100644
--- a/src/xalanc/XMLSupport/XalanUTF16Writer.cpp
+++ b/src/xalanc/XMLSupport/XalanUTF16Writer.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -39,4 +39,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XMLSupport/XalanUTF16Writer.hpp b/src/xalanc/XMLSupport/XalanUTF16Writer.hpp
index fec2742..444b7ce 100644
--- a/src/xalanc/XMLSupport/XalanUTF16Writer.hpp
+++ b/src/xalanc/XMLSupport/XalanUTF16Writer.hpp
@@ -22,7 +22,7 @@
 #include <xalanc/XMLSupport/XalanFormatterWriter.hpp>
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 class XalanUTF16Writer : public XalanFormatterWriter
@@ -220,7 +220,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XMLSupport/XalanUTF8Writer.cpp b/src/xalanc/XMLSupport/XalanUTF8Writer.cpp
index 1fa716b..cb0120e 100644
--- a/src/xalanc/XMLSupport/XalanUTF8Writer.cpp
+++ b/src/xalanc/XMLSupport/XalanUTF8Writer.cpp
@@ -19,7 +19,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -37,4 +37,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XMLSupport/XalanUTF8Writer.hpp b/src/xalanc/XMLSupport/XalanUTF8Writer.hpp
index 96ab8dd..15ece47 100644
--- a/src/xalanc/XMLSupport/XalanUTF8Writer.hpp
+++ b/src/xalanc/XMLSupport/XalanUTF8Writer.hpp
@@ -23,7 +23,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -463,7 +463,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XMLSupport/XalanXMLSerializerBase.cpp b/src/xalanc/XMLSupport/XalanXMLSerializerBase.cpp
index ae078ce..aa2298c 100644
--- a/src/xalanc/XMLSupport/XalanXMLSerializerBase.cpp
+++ b/src/xalanc/XMLSupport/XalanXMLSerializerBase.cpp
@@ -33,7 +33,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 const size_t  XalanXMLSerializerBase::CharFunctor1_0::s_lastSpecial = 0x7fu;
 
@@ -151,7 +151,7 @@
 
 
 
-XALAN_USING_XERCES(SAXException)
+using xercesc::SAXException;
 
 void
 XalanXMLSerializerBase::throwInvalidUTF16SurrogateException(
@@ -968,4 +968,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XMLSupport/XalanXMLSerializerBase.hpp b/src/xalanc/XMLSupport/XalanXMLSerializerBase.hpp
index a3f2fcc..a6628ea 100644
--- a/src/xalanc/XMLSupport/XalanXMLSerializerBase.hpp
+++ b/src/xalanc/XMLSupport/XalanXMLSerializerBase.hpp
@@ -39,7 +39,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -47,7 +47,7 @@
 
 
 
-XALAN_USING_XERCES(MemoryManager)
+using xercesc::MemoryManager;
 
 
 
@@ -799,7 +799,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XMLSupport/XalanXMLSerializerFactory.cpp b/src/xalanc/XMLSupport/XalanXMLSerializerFactory.cpp
index 88a27b2..238c940 100644
--- a/src/xalanc/XMLSupport/XalanXMLSerializerFactory.cpp
+++ b/src/xalanc/XMLSupport/XalanXMLSerializerFactory.cpp
@@ -35,7 +35,7 @@
 #include "xalanc/XMLSupport/XalanUTF16Writer.hpp"
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -423,4 +423,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XMLSupport/XalanXMLSerializerFactory.hpp b/src/xalanc/XMLSupport/XalanXMLSerializerFactory.hpp
index 11f56b2..e475556 100644
--- a/src/xalanc/XMLSupport/XalanXMLSerializerFactory.hpp
+++ b/src/xalanc/XMLSupport/XalanXMLSerializerFactory.hpp
@@ -31,7 +31,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -41,7 +41,7 @@
 
 
 
-XALAN_USING_XERCES(MemoryManager)
+using xercesc::MemoryManager;
 
 
 
@@ -89,7 +89,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/ElementPrefixResolverProxy.cpp b/src/xalanc/XPath/ElementPrefixResolverProxy.cpp
index de0ee48..c427c8b 100644
--- a/src/xalanc/XPath/ElementPrefixResolverProxy.cpp
+++ b/src/xalanc/XPath/ElementPrefixResolverProxy.cpp
@@ -37,7 +37,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -100,4 +100,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/ElementPrefixResolverProxy.hpp b/src/xalanc/XPath/ElementPrefixResolverProxy.hpp
index b1f03cb..25d0a2b 100644
--- a/src/xalanc/XPath/ElementPrefixResolverProxy.hpp
+++ b/src/xalanc/XPath/ElementPrefixResolverProxy.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -99,7 +99,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/FormatterStringLengthCounter.cpp b/src/xalanc/XPath/FormatterStringLengthCounter.cpp
index aba25b2..d71cad2 100644
--- a/src/xalanc/XPath/FormatterStringLengthCounter.cpp
+++ b/src/xalanc/XPath/FormatterStringLengthCounter.cpp
@@ -20,7 +20,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -142,4 +142,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/FormatterStringLengthCounter.hpp b/src/xalanc/XPath/FormatterStringLengthCounter.hpp
index b8cc48b..8138555 100644
--- a/src/xalanc/XPath/FormatterStringLengthCounter.hpp
+++ b/src/xalanc/XPath/FormatterStringLengthCounter.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -129,7 +129,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/Function.cpp b/src/xalanc/XPath/Function.cpp
index 6466f08..7d7c8e4 100644
--- a/src/xalanc/XPath/Function.cpp
+++ b/src/xalanc/XPath/Function.cpp
@@ -26,7 +26,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -175,4 +175,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/Function.hpp b/src/xalanc/XPath/Function.hpp
index 41941cb..12ec376 100644
--- a/src/xalanc/XPath/Function.hpp
+++ b/src/xalanc/XPath/Function.hpp
@@ -34,11 +34,14 @@
 #include <xalanc/XPath/XPathExecutionContext.hpp>
 
 
-XALAN_DECLARE_XERCES_CLASS(Locator)
+namespace XERCES_CPP_NAMESPACE
+{
+    class Locator;
+}
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -55,7 +58,7 @@
 {
 public:
 
-    typedef XERCES_CPP_NAMESPACE_QUALIFIER Locator  LocatorType;
+    typedef xercesc::Locator  LocatorType;
 
     explicit
     Function();
@@ -207,7 +210,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/FunctionConcat.cpp b/src/xalanc/XPath/FunctionConcat.cpp
index b03242e..4458dbf 100644
--- a/src/xalanc/XPath/FunctionConcat.cpp
+++ b/src/xalanc/XPath/FunctionConcat.cpp
@@ -27,7 +27,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -114,11 +114,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionConcat*
-#endif
 FunctionConcat::clone(MemoryManager&    theManager) const
 {
     return XalanCopyConstruct(theManager, *this);
@@ -137,4 +133,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/FunctionConcat.hpp b/src/xalanc/XPath/FunctionConcat.hpp
index f2184e7..d1b57af 100644
--- a/src/xalanc/XPath/FunctionConcat.hpp
+++ b/src/xalanc/XPath/FunctionConcat.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -76,11 +76,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionConcat*
-#endif
     clone(MemoryManager& theManager) const;
 
 protected:
@@ -100,7 +96,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/FunctionContains.cpp b/src/xalanc/XPath/FunctionContains.cpp
index 3dd3a40..14411e6 100644
--- a/src/xalanc/XPath/FunctionContains.cpp
+++ b/src/xalanc/XPath/FunctionContains.cpp
@@ -27,7 +27,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -81,11 +81,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionContains*
-#endif
 FunctionContains::clone(MemoryManager& theManager) const
 {
     return XalanCopyConstruct(theManager, *this);
@@ -104,4 +100,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/FunctionContains.hpp b/src/xalanc/XPath/FunctionContains.hpp
index 922a90b..07e0032 100644
--- a/src/xalanc/XPath/FunctionContains.hpp
+++ b/src/xalanc/XPath/FunctionContains.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -60,11 +60,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionContains*
-#endif
     clone(MemoryManager& theManager) const;
 
 protected:
@@ -84,7 +80,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/FunctionID.cpp b/src/xalanc/XPath/FunctionID.cpp
index e02a69d..4c1d104 100644
--- a/src/xalanc/XPath/FunctionID.cpp
+++ b/src/xalanc/XPath/FunctionID.cpp
@@ -31,7 +31,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -124,11 +124,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionID*
-#endif
 FunctionID::clone(MemoryManager&    theManager) const
 {
     return XalanCopyConstruct(theManager, *this);
@@ -249,4 +245,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/FunctionID.hpp b/src/xalanc/XPath/FunctionID.hpp
index 433a36b..3e3f946 100644
--- a/src/xalanc/XPath/FunctionID.hpp
+++ b/src/xalanc/XPath/FunctionID.hpp
@@ -47,7 +47,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -76,11 +76,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionID*
-#endif
     clone(MemoryManager& theManager) const;
 
 protected:
@@ -158,7 +154,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/FunctionLang.cpp b/src/xalanc/XPath/FunctionLang.cpp
index 9c8acad..25285f7 100644
--- a/src/xalanc/XPath/FunctionLang.cpp
+++ b/src/xalanc/XPath/FunctionLang.cpp
@@ -39,7 +39,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -121,11 +121,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionLang*
-#endif
 FunctionLang::clone(MemoryManager&  theManager) const
 {
     return XalanCopyConstruct(theManager, *this);
@@ -179,4 +175,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/FunctionLang.hpp b/src/xalanc/XPath/FunctionLang.hpp
index f854f17..2eb35f0 100644
--- a/src/xalanc/XPath/FunctionLang.hpp
+++ b/src/xalanc/XPath/FunctionLang.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -72,11 +72,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionLang*
-#endif
     clone(MemoryManager&    theManager) const;
 
 protected:
@@ -98,7 +94,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/FunctionNamespaceURI.cpp b/src/xalanc/XPath/FunctionNamespaceURI.cpp
index 3ee6ee8..8bb1113 100644
--- a/src/xalanc/XPath/FunctionNamespaceURI.cpp
+++ b/src/xalanc/XPath/FunctionNamespaceURI.cpp
@@ -32,7 +32,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -110,11 +110,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionNamespaceURI*
-#endif
 FunctionNamespaceURI::clone(MemoryManager&  theManager) const
 {
     return XalanCopyConstruct(theManager, *this);
@@ -133,4 +129,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/FunctionNamespaceURI.hpp b/src/xalanc/XPath/FunctionNamespaceURI.hpp
index 7c53015..d431a94 100644
--- a/src/xalanc/XPath/FunctionNamespaceURI.hpp
+++ b/src/xalanc/XPath/FunctionNamespaceURI.hpp
@@ -38,7 +38,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -73,11 +73,7 @@
             const XObjectPtr        arg1,
             const Locator*          locator) const;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionNamespaceURI*
-#endif
     clone(MemoryManager& theManager) const;
 
 protected:
@@ -97,7 +93,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/FunctionNormalizeSpace.cpp b/src/xalanc/XPath/FunctionNormalizeSpace.cpp
index 97216eb..a25d11f 100644
--- a/src/xalanc/XPath/FunctionNormalizeSpace.cpp
+++ b/src/xalanc/XPath/FunctionNormalizeSpace.cpp
@@ -36,7 +36,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -200,11 +200,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionNormalizeSpace*
-#endif
 FunctionNormalizeSpace::clone(MemoryManager& theManager) const
 {
     return XalanCopyConstruct(theManager, *this);
@@ -264,4 +260,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/FunctionNormalizeSpace.hpp b/src/xalanc/XPath/FunctionNormalizeSpace.hpp
index 7e319e8..432859f 100644
--- a/src/xalanc/XPath/FunctionNormalizeSpace.hpp
+++ b/src/xalanc/XPath/FunctionNormalizeSpace.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -69,11 +69,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionNormalizeSpace*
-#endif
     clone(MemoryManager&    theManager) const;
 
 protected:
@@ -118,7 +114,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/FunctionStartsWith.cpp b/src/xalanc/XPath/FunctionStartsWith.cpp
index 065d69e..35a2e16 100644
--- a/src/xalanc/XPath/FunctionStartsWith.cpp
+++ b/src/xalanc/XPath/FunctionStartsWith.cpp
@@ -27,7 +27,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -63,11 +63,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionStartsWith*
-#endif
 FunctionStartsWith::clone(MemoryManager& theManager) const
 {
     return XalanCopyConstruct(theManager, *this);
@@ -86,4 +82,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/FunctionStartsWith.hpp b/src/xalanc/XPath/FunctionStartsWith.hpp
index d9b7b16..6a92609 100644
--- a/src/xalanc/XPath/FunctionStartsWith.hpp
+++ b/src/xalanc/XPath/FunctionStartsWith.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -60,11 +60,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionStartsWith*
-#endif
     clone(MemoryManager& theManager) const;
 
 protected:
@@ -84,7 +80,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/FunctionString.cpp b/src/xalanc/XPath/FunctionString.cpp
index d1b7e59..2834bf5 100644
--- a/src/xalanc/XPath/FunctionString.cpp
+++ b/src/xalanc/XPath/FunctionString.cpp
@@ -31,7 +31,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -116,11 +116,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionString*
-#endif
 FunctionString::clone(MemoryManager&    theManager) const
 {
     return XalanCopyConstruct(theManager, *this);
@@ -139,4 +135,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/FunctionString.hpp b/src/xalanc/XPath/FunctionString.hpp
index 92a2868..99a0739 100644
--- a/src/xalanc/XPath/FunctionString.hpp
+++ b/src/xalanc/XPath/FunctionString.hpp
@@ -38,7 +38,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -73,11 +73,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionString*
-#endif
     clone(MemoryManager& theManager) const;
 
 protected:
@@ -97,7 +93,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/FunctionSubstring.cpp b/src/xalanc/XPath/FunctionSubstring.cpp
index e48890d..0d8e6c8 100644
--- a/src/xalanc/XPath/FunctionSubstring.cpp
+++ b/src/xalanc/XPath/FunctionSubstring.cpp
@@ -28,7 +28,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -281,11 +281,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionSubstring*
-#endif
 FunctionSubstring::clone(MemoryManager&     theManager) const
 {
     return XalanCopyConstruct(theManager, *this);
@@ -304,4 +300,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/FunctionSubstring.hpp b/src/xalanc/XPath/FunctionSubstring.hpp
index daca42d..00b2b0a 100644
--- a/src/xalanc/XPath/FunctionSubstring.hpp
+++ b/src/xalanc/XPath/FunctionSubstring.hpp
@@ -38,7 +38,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -77,11 +77,7 @@
             const XObjectPtr        arg3,
             const Locator*          locator) const;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionSubstring*
-#endif
     clone(MemoryManager& theManager) const;
 
 protected:
@@ -103,7 +99,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/FunctionSubstringAfter.cpp b/src/xalanc/XPath/FunctionSubstringAfter.cpp
index 3184710..9a0dbc0 100644
--- a/src/xalanc/XPath/FunctionSubstringAfter.cpp
+++ b/src/xalanc/XPath/FunctionSubstringAfter.cpp
@@ -27,7 +27,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -119,11 +119,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionSubstringAfter*
-#endif
 FunctionSubstringAfter::clone(MemoryManager&    theManager) const
 {
     return XalanCopyConstruct(theManager, *this);
@@ -142,4 +138,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/FunctionSubstringAfter.hpp b/src/xalanc/XPath/FunctionSubstringAfter.hpp
index 7f2f863..24f4a04 100644
--- a/src/xalanc/XPath/FunctionSubstringAfter.hpp
+++ b/src/xalanc/XPath/FunctionSubstringAfter.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -60,11 +60,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionSubstringAfter*
-#endif
     clone(MemoryManager& theManager) const;
 
 protected:
@@ -84,7 +80,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/FunctionSubstringBefore.cpp b/src/xalanc/XPath/FunctionSubstringBefore.cpp
index f7e7bf4..0b2f896 100644
--- a/src/xalanc/XPath/FunctionSubstringBefore.cpp
+++ b/src/xalanc/XPath/FunctionSubstringBefore.cpp
@@ -27,7 +27,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -110,11 +110,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionSubstringBefore*
-#endif
 FunctionSubstringBefore::clone(MemoryManager&   theManager) const
 {
     return XalanCopyConstruct(theManager, *this);
@@ -133,4 +129,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/FunctionSubstringBefore.hpp b/src/xalanc/XPath/FunctionSubstringBefore.hpp
index 1a8cd8e..144fb22 100644
--- a/src/xalanc/XPath/FunctionSubstringBefore.hpp
+++ b/src/xalanc/XPath/FunctionSubstringBefore.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -60,11 +60,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionSubstringBefore*
-#endif
     clone(MemoryManager& theManager) const;
 
 protected:
@@ -83,7 +79,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/FunctionTranslate.cpp b/src/xalanc/XPath/FunctionTranslate.cpp
index 287e05f..9231d99 100644
--- a/src/xalanc/XPath/FunctionTranslate.cpp
+++ b/src/xalanc/XPath/FunctionTranslate.cpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -110,11 +110,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionTranslate*
-#endif
 FunctionTranslate::clone(MemoryManager&     theManager) const
 {
     return XalanCopyConstruct(theManager, *this);
@@ -133,4 +129,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/FunctionTranslate.hpp b/src/xalanc/XPath/FunctionTranslate.hpp
index 00c3f92..c4bf67e 100644
--- a/src/xalanc/XPath/FunctionTranslate.hpp
+++ b/src/xalanc/XPath/FunctionTranslate.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -61,11 +61,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionTranslate*
-#endif
     clone(MemoryManager& theManager) const;
 
 protected:
@@ -84,7 +80,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/MutableNodeRefList.cpp b/src/xalanc/XPath/MutableNodeRefList.cpp
index 672dade..9d8c1ba 100644
--- a/src/xalanc/XPath/MutableNodeRefList.cpp
+++ b/src/xalanc/XPath/MutableNodeRefList.cpp
@@ -37,7 +37,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -180,7 +180,7 @@
 void
 MutableNodeRefList::removeNode(const XalanNode*     n)
 {
-    XALAN_USING_STD(find)
+    using std::find;
 
     NodeListVectorType::iterator    i =
         find(m_nodeList.begin(),
@@ -299,9 +299,9 @@
             const MutableNodeRefList&   nodelist,
             XPathExecutionContext&      executionContext)
 {
-    XALAN_USING_STD(back_inserter);
-    XALAN_USING_STD(copy);
-    XALAN_USING_STD(for_each);
+    using std::back_inserter;;
+    using std::copy;;
+    using std::for_each;;
 
     const eOrder        theOtherOrder = nodelist.m_order;
 
@@ -690,7 +690,7 @@
 void
 MutableNodeRefList::clearNulls()
 {
-    XALAN_USING_STD(remove);
+    using std::remove;;
 
     m_nodeList.erase(
         remove(
@@ -712,11 +712,7 @@
 void
 MutableNodeRefList::reverse()
 {
-#if defined(XALAN_NO_STD_NAMESPACE)
-    ::reverse(
-#else
     std::reverse(
-#endif
         m_nodeList.begin(),
         m_nodeList.end());
 
@@ -732,4 +728,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/MutableNodeRefList.hpp b/src/xalanc/XPath/MutableNodeRefList.hpp
index 028b775..c847d92 100644
--- a/src/xalanc/XPath/MutableNodeRefList.hpp
+++ b/src/xalanc/XPath/MutableNodeRefList.hpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -339,7 +339,7 @@
 
 XALAN_USES_MEMORY_MANAGER(MutableNodeRefList)
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/NameSpace.hpp b/src/xalanc/XPath/NameSpace.hpp
index 27816b1..c45e16c 100644
--- a/src/xalanc/XPath/NameSpace.hpp
+++ b/src/xalanc/XPath/NameSpace.hpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -206,7 +206,7 @@
 
 XALAN_USES_MEMORY_MANAGER(NameSpace)
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/NodeRefList.cpp b/src/xalanc/XPath/NodeRefList.cpp
index 4d69ded..a71cb66 100644
--- a/src/xalanc/XPath/NodeRefList.cpp
+++ b/src/xalanc/XPath/NodeRefList.cpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -135,7 +135,7 @@
 NodeRefList::size_type
 NodeRefList::indexOf(const XalanNode*   theNode) const
 {
-    XALAN_USING_STD(find)
+    using std::find;
 
     // Look for the node in the list.
     NodeListVectorType::const_iterator  i =
@@ -186,4 +186,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/NodeRefList.hpp b/src/xalanc/XPath/NodeRefList.hpp
index c335b59..058e182 100644
--- a/src/xalanc/XPath/NodeRefList.hpp
+++ b/src/xalanc/XPath/NodeRefList.hpp
@@ -33,7 +33,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -145,7 +145,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/NodeRefListBase.cpp b/src/xalanc/XPath/NodeRefListBase.cpp
index 9c4144d..a8a4410 100644
--- a/src/xalanc/XPath/NodeRefListBase.cpp
+++ b/src/xalanc/XPath/NodeRefListBase.cpp
@@ -20,15 +20,11 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
-#if !defined(XALAN_INLINE_INITIALIZATION)
 const NodeRefListBase::size_type    NodeRefListBase::npos = ~0u;
-#elif !defined(XALAN_INLINE_INITIALIZATION_IS_DEFINITION_BUG)
-const NodeRefListBase::size_type    NodeRefListBase::npos;
-#endif
 
 
 
@@ -44,4 +40,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/NodeRefListBase.hpp b/src/xalanc/XPath/NodeRefListBase.hpp
index 75fbfd6..4d971f4 100644
--- a/src/xalanc/XPath/NodeRefListBase.hpp
+++ b/src/xalanc/XPath/NodeRefListBase.hpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -83,11 +83,7 @@
     virtual size_type
     indexOf(const XalanNode*    theNode) const = 0;
 
-#if defined(XALAN_INLINE_INITIALIZATION)
-    static const size_type  npos = ~0u;
-#else
     static const size_type  npos;
-#endif
 
 protected:
 
@@ -104,7 +100,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XBoolean.cpp b/src/xalanc/XPath/XBoolean.cpp
index 2387500..a84f0e3 100644
--- a/src/xalanc/XPath/XBoolean.cpp
+++ b/src/xalanc/XPath/XBoolean.cpp
@@ -28,7 +28,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -171,4 +171,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XBoolean.hpp b/src/xalanc/XPath/XBoolean.hpp
index 7977272..66f0632 100644
--- a/src/xalanc/XPath/XBoolean.hpp
+++ b/src/xalanc/XPath/XBoolean.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -119,7 +119,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XNodeSet.cpp b/src/xalanc/XPath/XNodeSet.cpp
index 9da53dd..c9d253b 100644
--- a/src/xalanc/XPath/XNodeSet.cpp
+++ b/src/xalanc/XPath/XNodeSet.cpp
@@ -39,7 +39,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -114,4 +114,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XNodeSet.hpp b/src/xalanc/XPath/XNodeSet.hpp
index e432497..3ad76be 100644
--- a/src/xalanc/XPath/XNodeSet.hpp
+++ b/src/xalanc/XPath/XNodeSet.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -106,7 +106,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XNodeSetAllocator.cpp b/src/xalanc/XPath/XNodeSetAllocator.cpp
index 3e13eb0..4a680fa 100644
--- a/src/xalanc/XPath/XNodeSetAllocator.cpp
+++ b/src/xalanc/XPath/XNodeSetAllocator.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -73,4 +73,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XNodeSetAllocator.hpp b/src/xalanc/XPath/XNodeSetAllocator.hpp
index 59fbc64..afe0105 100644
--- a/src/xalanc/XPath/XNodeSetAllocator.hpp
+++ b/src/xalanc/XPath/XNodeSetAllocator.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -128,7 +128,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XNodeSetBase.cpp b/src/xalanc/XPath/XNodeSetBase.cpp
index 96d5f00..28c1f54 100644
--- a/src/xalanc/XPath/XNodeSetBase.cpp
+++ b/src/xalanc/XPath/XNodeSetBase.cpp
@@ -39,7 +39,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -305,4 +305,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XNodeSetBase.hpp b/src/xalanc/XPath/XNodeSetBase.hpp
index 59a174c..9f41f46 100644
--- a/src/xalanc/XPath/XNodeSetBase.hpp
+++ b/src/xalanc/XPath/XNodeSetBase.hpp
@@ -35,7 +35,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -150,7 +150,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XNodeSetNodeProxy.cpp b/src/xalanc/XPath/XNodeSetNodeProxy.cpp
index 746a1d2..1fa78a1 100644
--- a/src/xalanc/XPath/XNodeSetNodeProxy.cpp
+++ b/src/xalanc/XPath/XNodeSetNodeProxy.cpp
@@ -20,7 +20,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -134,4 +134,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XNodeSetNodeProxy.hpp b/src/xalanc/XPath/XNodeSetNodeProxy.hpp
index 69ac3fb..740638f 100644
--- a/src/xalanc/XPath/XNodeSetNodeProxy.hpp
+++ b/src/xalanc/XPath/XNodeSetNodeProxy.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -112,7 +112,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XNodeSetNodeProxyAllocator.cpp b/src/xalanc/XPath/XNodeSetNodeProxyAllocator.cpp
index ee65137..df4b074 100644
--- a/src/xalanc/XPath/XNodeSetNodeProxyAllocator.cpp
+++ b/src/xalanc/XPath/XNodeSetNodeProxyAllocator.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -71,4 +71,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XNodeSetNodeProxyAllocator.hpp b/src/xalanc/XPath/XNodeSetNodeProxyAllocator.hpp
index 1f000e3..8de5ee3 100644
--- a/src/xalanc/XPath/XNodeSetNodeProxyAllocator.hpp
+++ b/src/xalanc/XPath/XNodeSetNodeProxyAllocator.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -135,7 +135,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XNodeSetResultTreeFragProxy.cpp b/src/xalanc/XPath/XNodeSetResultTreeFragProxy.cpp
index 4f0ebb3..cc7b9b9 100644
--- a/src/xalanc/XPath/XNodeSetResultTreeFragProxy.cpp
+++ b/src/xalanc/XPath/XNodeSetResultTreeFragProxy.cpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -65,4 +65,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XNodeSetResultTreeFragProxy.hpp b/src/xalanc/XPath/XNodeSetResultTreeFragProxy.hpp
index e89acb7..a765eee 100644
--- a/src/xalanc/XPath/XNodeSetResultTreeFragProxy.hpp
+++ b/src/xalanc/XPath/XNodeSetResultTreeFragProxy.hpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -72,7 +72,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XNumber.cpp b/src/xalanc/XPath/XNumber.cpp
index d9ae9b6..acdf694 100644
--- a/src/xalanc/XPath/XNumber.cpp
+++ b/src/xalanc/XPath/XNumber.cpp
@@ -24,7 +24,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -180,4 +180,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XNumber.hpp b/src/xalanc/XPath/XNumber.hpp
index b72bcdc..830cfbf 100644
--- a/src/xalanc/XPath/XNumber.hpp
+++ b/src/xalanc/XPath/XNumber.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -117,7 +117,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XNumberAllocator.cpp b/src/xalanc/XPath/XNumberAllocator.cpp
index fd2baee..850fb8a 100644
--- a/src/xalanc/XPath/XNumberAllocator.cpp
+++ b/src/xalanc/XPath/XNumberAllocator.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -72,4 +72,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XNumberAllocator.hpp b/src/xalanc/XPath/XNumberAllocator.hpp
index e083ac1..d999435 100644
--- a/src/xalanc/XPath/XNumberAllocator.hpp
+++ b/src/xalanc/XPath/XNumberAllocator.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -125,7 +125,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XNumberBase.cpp b/src/xalanc/XPath/XNumberBase.cpp
index a118895..93e4859 100644
--- a/src/xalanc/XPath/XNumberBase.cpp
+++ b/src/xalanc/XPath/XNumberBase.cpp
@@ -28,7 +28,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -90,4 +90,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XNumberBase.hpp b/src/xalanc/XPath/XNumberBase.hpp
index 225fb52..fa73fcf 100644
--- a/src/xalanc/XPath/XNumberBase.hpp
+++ b/src/xalanc/XPath/XNumberBase.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -118,7 +118,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XObject.cpp b/src/xalanc/XPath/XObject.cpp
index f8a7384..36763d1 100644
--- a/src/xalanc/XPath/XObject.cpp
+++ b/src/xalanc/XPath/XObject.cpp
@@ -40,7 +40,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 static XalanDOMString   s_localBooleanString(XalanMemMgrs::getDummyMemMgr());
@@ -1477,4 +1477,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XObject.hpp b/src/xalanc/XPath/XObject.hpp
index 3c9b59d..08e497e 100644
--- a/src/xalanc/XPath/XObject.hpp
+++ b/src/xalanc/XPath/XObject.hpp
@@ -45,7 +45,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -1012,7 +1012,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XObjectFactory.cpp b/src/xalanc/XPath/XObjectFactory.cpp
index 6255e98..e6e71ba 100644
--- a/src/xalanc/XPath/XObjectFactory.cpp
+++ b/src/xalanc/XPath/XObjectFactory.cpp
@@ -20,7 +20,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -37,4 +37,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XObjectFactory.hpp b/src/xalanc/XPath/XObjectFactory.hpp
index 46529f7..8afe5b7 100644
--- a/src/xalanc/XPath/XObjectFactory.hpp
+++ b/src/xalanc/XPath/XObjectFactory.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -238,11 +238,7 @@
      * A public functor for use with stl algorithms.
      *
      */
-#if defined(XALAN_NO_STD_NAMESPACE)
-    struct DeleteXObjectFunctor : public unary_function<XObject*, void>
-#else
-    struct DeleteXObjectFunctor : public std::unary_function<XObject*, bool>
-#endif
+    struct DeleteXObjectFunctor
     {
     public:
 
@@ -254,8 +250,8 @@
         {
         }
 
-        result_type
-        operator()(argument_type    theXObject) const
+        bool
+        operator()(XObject*    theXObject) const
         {
             if (m_fInReset == true)
             {
@@ -338,7 +334,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XObjectFactoryDefault.cpp b/src/xalanc/XPath/XObjectFactoryDefault.cpp
index 00908a5..98e8d4c 100644
--- a/src/xalanc/XPath/XObjectFactoryDefault.cpp
+++ b/src/xalanc/XPath/XObjectFactoryDefault.cpp
@@ -36,7 +36,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -233,7 +233,7 @@
 
     default:
         {
-            XALAN_USING_STD(find)
+            using std::find;
 
             const XObjectCollectionType::iterator   i =
                     find(m_xobjects.begin(), m_xobjects.end(), theXObject);
@@ -501,9 +501,7 @@
 
     m_xtokenStringAdapterAllocator.reset();
 
-#if !defined(XALAN_NO_STD_NAMESPACE)
     using std::for_each;
-#endif
 
     for_each(m_xobjects.begin(),
              m_xobjects.end(),
@@ -520,4 +518,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XObjectFactoryDefault.hpp b/src/xalanc/XPath/XObjectFactoryDefault.hpp
index 4ebea44..a347230 100644
--- a/src/xalanc/XPath/XObjectFactoryDefault.hpp
+++ b/src/xalanc/XPath/XObjectFactoryDefault.hpp
@@ -48,7 +48,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -220,7 +220,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XObjectResultTreeFragProxy.cpp b/src/xalanc/XPath/XObjectResultTreeFragProxy.cpp
index da677b2..e53ff7b 100644
--- a/src/xalanc/XPath/XObjectResultTreeFragProxy.cpp
+++ b/src/xalanc/XPath/XObjectResultTreeFragProxy.cpp
@@ -20,7 +20,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -57,4 +57,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XObjectResultTreeFragProxy.hpp b/src/xalanc/XPath/XObjectResultTreeFragProxy.hpp
index 84a3526..f72c867 100644
--- a/src/xalanc/XPath/XObjectResultTreeFragProxy.hpp
+++ b/src/xalanc/XPath/XObjectResultTreeFragProxy.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -94,7 +94,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XObjectResultTreeFragProxyBase.cpp b/src/xalanc/XPath/XObjectResultTreeFragProxyBase.cpp
index 08626a1..8e10966 100644
--- a/src/xalanc/XPath/XObjectResultTreeFragProxyBase.cpp
+++ b/src/xalanc/XPath/XObjectResultTreeFragProxyBase.cpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -170,4 +170,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XObjectResultTreeFragProxyBase.hpp b/src/xalanc/XPath/XObjectResultTreeFragProxyBase.hpp
index 21932f3..dbeb5f6 100644
--- a/src/xalanc/XPath/XObjectResultTreeFragProxyBase.hpp
+++ b/src/xalanc/XPath/XObjectResultTreeFragProxyBase.hpp
@@ -31,7 +31,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -115,7 +115,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XObjectResultTreeFragProxyText.cpp b/src/xalanc/XPath/XObjectResultTreeFragProxyText.cpp
index 14317f8..dc9d2bf 100644
--- a/src/xalanc/XPath/XObjectResultTreeFragProxyText.cpp
+++ b/src/xalanc/XPath/XObjectResultTreeFragProxyText.cpp
@@ -31,7 +31,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -211,7 +211,7 @@
 
 
 
-static XALAN_CPP_NAMESPACE_QUALIFIER XalanDOMString     s_localNameString(XalanMemMgrs::getDummyMemMgr());
+static xalanc::XalanDOMString     s_localNameString(XalanMemMgrs::getDummyMemMgr());
 
 
 
@@ -237,4 +237,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XObjectResultTreeFragProxyText.hpp b/src/xalanc/XPath/XObjectResultTreeFragProxyText.hpp
index fdc2de9..23752ac 100644
--- a/src/xalanc/XPath/XObjectResultTreeFragProxyText.hpp
+++ b/src/xalanc/XPath/XObjectResultTreeFragProxyText.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -159,7 +159,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XObjectTypeCallback.cpp b/src/xalanc/XPath/XObjectTypeCallback.cpp
index f033cc2..04e2967 100644
--- a/src/xalanc/XPath/XObjectTypeCallback.cpp
+++ b/src/xalanc/XPath/XObjectTypeCallback.cpp
@@ -20,7 +20,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -37,4 +37,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XObjectTypeCallback.hpp b/src/xalanc/XPath/XObjectTypeCallback.hpp
index b3b12fd..9f557ff 100644
--- a/src/xalanc/XPath/XObjectTypeCallback.hpp
+++ b/src/xalanc/XPath/XObjectTypeCallback.hpp
@@ -31,7 +31,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -160,7 +160,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XPath.cpp b/src/xalanc/XPath/XPath.cpp
index b50922e..6a32962 100644
--- a/src/xalanc/XPath/XPath.cpp
+++ b/src/xalanc/XPath/XPath.cpp
@@ -54,7 +54,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -5529,4 +5529,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XPath.hpp b/src/xalanc/XPath/XPath.hpp
index 62ebce8..19790df 100644
--- a/src/xalanc/XPath/XPath.hpp
+++ b/src/xalanc/XPath/XPath.hpp
@@ -45,11 +45,14 @@
 
 
 
-XALAN_DECLARE_XERCES_CLASS(Locator)
+namespace XERCES_CPP_NAMESPACE
+{
+    class Locator;
+}
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -65,7 +68,7 @@
 {
 public:
 
-    typedef XERCES_CPP_NAMESPACE_QUALIFIER Locator  LocatorType;
+    typedef xercesc::Locator  LocatorType;
 
     typedef XPathExpression::OpCodeMapPositionType              OpCodeMapPositionType;
     typedef XPathExpression::OpCodeMapValueType                 OpCodeMapValueType;
@@ -2669,7 +2672,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XPathAllocator.cpp b/src/xalanc/XPath/XPathAllocator.cpp
index e173403..0e05f52 100644
--- a/src/xalanc/XPath/XPathAllocator.cpp
+++ b/src/xalanc/XPath/XPathAllocator.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -61,4 +61,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XPathAllocator.hpp b/src/xalanc/XPath/XPathAllocator.hpp
index 918b4f4..da08fd4 100644
--- a/src/xalanc/XPath/XPathAllocator.hpp
+++ b/src/xalanc/XPath/XPathAllocator.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -123,7 +123,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XPathConstructionContext.cpp b/src/xalanc/XPath/XPathConstructionContext.cpp
index e6148c1..5565c68 100644
--- a/src/xalanc/XPath/XPathConstructionContext.cpp
+++ b/src/xalanc/XPath/XPathConstructionContext.cpp
@@ -20,7 +20,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -37,4 +37,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XPathConstructionContext.hpp b/src/xalanc/XPath/XPathConstructionContext.hpp
index 2d2f2b6..ad59a2f 100644
--- a/src/xalanc/XPath/XPathConstructionContext.hpp
+++ b/src/xalanc/XPath/XPathConstructionContext.hpp
@@ -33,16 +33,19 @@
 
 
 
-XALAN_DECLARE_XERCES_CLASS(Locator)
+namespace XERCES_CPP_NAMESPACE
+{
+    class Locator;
+}
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
-typedef XERCES_CPP_NAMESPACE_QUALIFIER Locator  LocatorType;
-XALAN_USING_XERCES(Locator)
+typedef xercesc::Locator  LocatorType;
+using xercesc::Locator;
 
 
 
@@ -205,7 +208,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XPathConstructionContextDefault.cpp b/src/xalanc/XPath/XPathConstructionContextDefault.cpp
index dd06e41..53ab0c6 100644
--- a/src/xalanc/XPath/XPathConstructionContextDefault.cpp
+++ b/src/xalanc/XPath/XPathConstructionContextDefault.cpp
@@ -20,11 +20,7 @@
 
 
 
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <iostream.h>
-#else
 #include <iostream>
-#endif
 
 
 
@@ -37,7 +33,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -125,7 +121,7 @@
 {
     MemoryManager&  theManager = getMemoryManager();
 
-    XALAN_USING_STD(cerr)
+    using std::cerr;
 
     XalanStdOutputStream            theStream(cerr, theManager);
     XalanOutputStreamPrintWriter    thePrintWriter(theStream);
@@ -155,7 +151,7 @@
 {
     MemoryManager&  theManager = getMemoryManager();
 
-    XALAN_USING_STD(cerr)
+    using std::cerr;
 
     XalanStdOutputStream            theStream(cerr, theManager);
     XalanOutputStreamPrintWriter    thePrintWriter(theStream);
@@ -175,4 +171,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XPathConstructionContextDefault.hpp b/src/xalanc/XPath/XPathConstructionContextDefault.hpp
index b826ccd..d7ec900 100644
--- a/src/xalanc/XPath/XPathConstructionContextDefault.hpp
+++ b/src/xalanc/XPath/XPathConstructionContextDefault.hpp
@@ -35,7 +35,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -103,7 +103,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XPathEnvSupport.cpp b/src/xalanc/XPath/XPathEnvSupport.cpp
index 0c74ca6..43148d0 100644
--- a/src/xalanc/XPath/XPathEnvSupport.cpp
+++ b/src/xalanc/XPath/XPathEnvSupport.cpp
@@ -19,7 +19,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -35,4 +35,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XPathEnvSupport.hpp b/src/xalanc/XPath/XPathEnvSupport.hpp
index 3e11e0d..8e7abfe 100644
--- a/src/xalanc/XPath/XPathEnvSupport.hpp
+++ b/src/xalanc/XPath/XPathEnvSupport.hpp
@@ -33,11 +33,14 @@
 
 
 
-XALAN_DECLARE_XERCES_CLASS(Locator)
+namespace XERCES_CPP_NAMESPACE
+{
+    class Locator;
+}
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -58,7 +61,7 @@
 {
 public:
 
-    typedef XERCES_CPP_NAMESPACE_QUALIFIER Locator  LocatorType;
+    typedef xercesc::Locator  LocatorType;
 
     typedef Function::XObjectArgVectorType  XObjectArgVectorType;
 
@@ -197,7 +200,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XPathEnvSupportDefault.cpp b/src/xalanc/XPath/XPathEnvSupportDefault.cpp
index d3233c0..8b34db2 100644
--- a/src/xalanc/XPath/XPathEnvSupportDefault.cpp
+++ b/src/xalanc/XPath/XPathEnvSupportDefault.cpp
@@ -24,11 +24,7 @@
 
 
 
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <iostream.h>
-#else
 #include <iostream>
-#endif
 
 
 
@@ -54,12 +50,12 @@
 
 
 
-XALAN_USING_STD(cerr)
-XALAN_USING_STD(endl)
+using std::cerr;
+using std::endl;
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -80,7 +76,7 @@
 void
 XPathEnvSupportDefault::terminate()
 {
-    XALAN_USING_STD(for_each)
+    using std::for_each;
 
     // Clean up the extension namespaces vector
     for_each(s_externalFunctions.begin(),
@@ -106,7 +102,7 @@
 
 XPathEnvSupportDefault::~XPathEnvSupportDefault()
 {
-    XALAN_USING_STD(for_each)
+    using std::for_each;
 
     // Clean up the extension namespaces vector
     for_each(m_externalFunctions.begin(),
@@ -532,4 +528,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XPathEnvSupportDefault.hpp b/src/xalanc/XPath/XPathEnvSupportDefault.hpp
index 1ee798d..88e5b4f 100644
--- a/src/xalanc/XPath/XPathEnvSupportDefault.hpp
+++ b/src/xalanc/XPath/XPathEnvSupportDefault.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -286,7 +286,7 @@
     static const XalanDOMString             s_emptyString;
 };
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XPathEvaluator.cpp b/src/xalanc/XPath/XPathEvaluator.cpp
index 9e865da..01a333f 100644
--- a/src/xalanc/XPath/XPathEvaluator.cpp
+++ b/src/xalanc/XPath/XPathEvaluator.cpp
@@ -35,7 +35,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -526,4 +526,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XPathEvaluator.hpp b/src/xalanc/XPath/XPathEvaluator.hpp
index b8d132f..86589d7 100644
--- a/src/xalanc/XPath/XPathEvaluator.hpp
+++ b/src/xalanc/XPath/XPathEvaluator.hpp
@@ -41,7 +41,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -435,7 +435,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XPathExecutionContext.cpp b/src/xalanc/XPath/XPathExecutionContext.cpp
index 82e1bb0..05c913b 100644
--- a/src/xalanc/XPath/XPathExecutionContext.cpp
+++ b/src/xalanc/XPath/XPathExecutionContext.cpp
@@ -20,7 +20,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -40,4 +40,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XPathExecutionContext.hpp b/src/xalanc/XPath/XPathExecutionContext.hpp
index 376e633..989ff74 100644
--- a/src/xalanc/XPath/XPathExecutionContext.hpp
+++ b/src/xalanc/XPath/XPathExecutionContext.hpp
@@ -46,11 +46,14 @@
 
 
 
-XALAN_DECLARE_XERCES_CLASS(ErrorHandler)
+namespace XERCES_CPP_NAMESPACE
+{
+    class ErrorHandler;
+}
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -67,7 +70,7 @@
 
 
 
-XALAN_USING_XERCES(ErrorHandler)
+using xercesc::ErrorHandler;
 
 
 
@@ -727,7 +730,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XPathExecutionContextDefault.cpp b/src/xalanc/XPath/XPathExecutionContextDefault.cpp
index c55ffb6..528529b 100644
--- a/src/xalanc/XPath/XPathExecutionContextDefault.cpp
+++ b/src/xalanc/XPath/XPathExecutionContextDefault.cpp
@@ -48,7 +48,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -703,4 +703,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XPathExecutionContextDefault.hpp b/src/xalanc/XPath/XPathExecutionContextDefault.hpp
index 202a4cc..c768a05 100644
--- a/src/xalanc/XPath/XPathExecutionContextDefault.hpp
+++ b/src/xalanc/XPath/XPathExecutionContextDefault.hpp
@@ -48,7 +48,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -413,7 +413,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XPathExpression.cpp b/src/xalanc/XPath/XPathExpression.cpp
index 16feecd..6d05b23 100644
--- a/src/xalanc/XPath/XPathExpression.cpp
+++ b/src/xalanc/XPath/XPathExpression.cpp
@@ -25,11 +25,7 @@
 
 
 
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <iostream.h>
-#else
 #include <ostream>
-#endif
 
 
 
@@ -42,14 +38,10 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
-#if defined(XALAN_INLINE_INITIALIZATION) && !defined(XALAN_INLINE_INITIALIZATION_IS_DEFINITION_BUG)
-const XPathExpression::TokenQueueSizeType   XPathExpression::s_opCodeMapLengthIndex;
-#endif
-
 
 
 // This is an array which indicates which of the value defined by
@@ -996,4 +988,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XPathExpression.hpp b/src/xalanc/XPath/XPathExpression.hpp
index c08c03b..312411c 100644
--- a/src/xalanc/XPath/XPathExpression.hpp
+++ b/src/xalanc/XPath/XPathExpression.hpp
@@ -29,11 +29,7 @@
 
 
 
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <iostream.h>
-#else
 #include <iosfwd>
-#endif
 
 
 
@@ -51,11 +47,11 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
-XALAN_USING_XERCES(MemoryManager)
+using xercesc::MemoryManager;
 
 
 
@@ -63,7 +59,7 @@
 {
 public:
 
-    typedef XALAN_STD_QUALIFIER ostream         OstreamType;
+    typedef std::ostream         OstreamType;
 
     typedef XalanVector<int>                    OpCodeMapType;
     typedef XalanVector<XToken>                 TokenQueueType;
@@ -713,14 +709,10 @@
      * offset from the op code where the length is stored.  It will always
      * remain one.
      */
-#if defined(XALAN_INLINE_INITIALIZATION)
-    static const TokenQueueSizeType     s_opCodeMapLengthIndex = 1;
-#else
     enum eDummy
     {
         s_opCodeMapLengthIndex = 1
     };
-#endif
 
     explicit
     XPathExpression(MemoryManager& theManager);
@@ -1526,7 +1518,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XPathFactory.cpp b/src/xalanc/XPath/XPathFactory.cpp
index 0ad4ef0..bc6ede9 100644
--- a/src/xalanc/XPath/XPathFactory.cpp
+++ b/src/xalanc/XPath/XPathFactory.cpp
@@ -20,7 +20,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -36,4 +36,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XPathFactory.hpp b/src/xalanc/XPath/XPathFactory.hpp
index a2f4bed..e3e6ee1 100644
--- a/src/xalanc/XPath/XPathFactory.hpp
+++ b/src/xalanc/XPath/XPathFactory.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -80,11 +80,7 @@
      * A functor for use with stl algorithms.
      *
      */
-#if defined(XALAN_NO_STD_NAMESPACE)
-    struct DeleteXPathFunctor : public unary_function<const XPath*, void>
-#else
-    struct DeleteXPathFunctor : public std::unary_function<const XPath*, bool>
-#endif
+    struct DeleteXPathFunctor
     {
     public:
 
@@ -96,8 +92,8 @@
         {
         }
 
-        result_type
-        operator()(argument_type    theXPath) const
+        bool
+        operator()(const XPath*    theXPath) const
         {
             if (m_fInReset == true)
             {
@@ -245,7 +241,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XPathFactoryBlock.cpp b/src/xalanc/XPath/XPathFactoryBlock.cpp
index 6f73386..d5645e5 100644
--- a/src/xalanc/XPath/XPathFactoryBlock.cpp
+++ b/src/xalanc/XPath/XPathFactoryBlock.cpp
@@ -24,7 +24,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -72,4 +72,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XPathFactoryBlock.hpp b/src/xalanc/XPath/XPathFactoryBlock.hpp
index 2d3a1a1..a41db60 100644
--- a/src/xalanc/XPath/XPathFactoryBlock.hpp
+++ b/src/xalanc/XPath/XPathFactoryBlock.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -79,7 +79,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XPathFactoryDefault.cpp b/src/xalanc/XPath/XPathFactoryDefault.cpp
index 3e7333a..0b93f8e 100644
--- a/src/xalanc/XPath/XPathFactoryDefault.cpp
+++ b/src/xalanc/XPath/XPathFactoryDefault.cpp
@@ -28,7 +28,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -67,7 +67,7 @@
 void
 XPathFactoryDefault::reset()
 {
-    XALAN_USING_STD(for_each)
+    using std::for_each;
 
     for_each(m_xpaths.begin(),
              m_xpaths.end(),
@@ -114,4 +114,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XPathFactoryDefault.hpp b/src/xalanc/XPath/XPathFactoryDefault.hpp
index e7fae63..e57ce72 100644
--- a/src/xalanc/XPath/XPathFactoryDefault.hpp
+++ b/src/xalanc/XPath/XPathFactoryDefault.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -86,7 +86,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XPathFunctionTable.cpp b/src/xalanc/XPath/XPathFunctionTable.cpp
index 62e42ed..1a14fbe 100644
--- a/src/xalanc/XPath/XPathFunctionTable.cpp
+++ b/src/xalanc/XPath/XPathFunctionTable.cpp
@@ -44,7 +44,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -116,11 +116,7 @@
 {
     assert(int(s_functionNamesSize) == TableSize);
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
     std::memset(m_functionTable, 0, sizeof(m_functionTable));
-#else
-    memset(m_functionTable, 0, sizeof(m_functionTable));
-#endif
 
     if (fCreateTable == true)
     {
@@ -460,18 +456,14 @@
 {
     try
     {
-        XALAN_USING_STD(for_each)
+        using std::for_each;
 
         for_each(
             m_functionTable,
             m_functionTable + TableSize,
             DeleteFunctorType(*m_memoryManager));
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
         std::memset(m_functionTable, 0, sizeof(m_functionTable));
-#else
-        memset(m_functionTable, 0, sizeof(m_functionTable));
-#endif
     }
     catch(...)
     {
@@ -1243,4 +1235,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XPathFunctionTable.hpp b/src/xalanc/XPath/XPathFunctionTable.hpp
index 80e58ce..a8cbbe4 100644
--- a/src/xalanc/XPath/XPathFunctionTable.hpp
+++ b/src/xalanc/XPath/XPathFunctionTable.hpp
@@ -42,7 +42,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -485,7 +485,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XPathInit.cpp b/src/xalanc/XPath/XPathInit.cpp
index 3d38f11..867ae30 100644
--- a/src/xalanc/XPath/XPathInit.cpp
+++ b/src/xalanc/XPath/XPathInit.cpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -105,4 +105,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XPathInit.hpp b/src/xalanc/XPath/XPathInit.hpp
index 5b0fa78..a2bc6d2 100644
--- a/src/xalanc/XPath/XPathInit.hpp
+++ b/src/xalanc/XPath/XPathInit.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -74,7 +74,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XPathParserException.cpp b/src/xalanc/XPath/XPathParserException.cpp
index ff88800..498dfb5 100644
--- a/src/xalanc/XPath/XPathParserException.cpp
+++ b/src/xalanc/XPath/XPathParserException.cpp
@@ -20,7 +20,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -96,4 +96,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XPathParserException.hpp b/src/xalanc/XPath/XPathParserException.hpp
index c0f40f2..accedbc 100644
--- a/src/xalanc/XPath/XPathParserException.hpp
+++ b/src/xalanc/XPath/XPathParserException.hpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -76,7 +76,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XPathProcessor.cpp b/src/xalanc/XPath/XPathProcessor.cpp
index b9f99c2..e1d5727 100644
--- a/src/xalanc/XPath/XPathProcessor.cpp
+++ b/src/xalanc/XPath/XPathProcessor.cpp
@@ -24,7 +24,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -51,4 +51,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XPathProcessor.hpp b/src/xalanc/XPath/XPathProcessor.hpp
index 657fa54..4af5d00 100644
--- a/src/xalanc/XPath/XPathProcessor.hpp
+++ b/src/xalanc/XPath/XPathProcessor.hpp
@@ -31,15 +31,18 @@
 
 
 
-XALAN_DECLARE_XERCES_CLASS(Locator)
+namespace XERCES_CPP_NAMESPACE
+{
+    class Locator;
+}
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
-XALAN_USING_XERCES(Locator)
+using xercesc::Locator;
 
 
 
@@ -54,7 +57,7 @@
 {
 public:
 
-    typedef XERCES_CPP_NAMESPACE_QUALIFIER Locator  LocatorType;
+    typedef xercesc::Locator  LocatorType;
 
     explicit
     XPathProcessor();
@@ -120,7 +123,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XPathProcessorImpl.cpp b/src/xalanc/XPath/XPathProcessorImpl.cpp
index ed20b60..350f0d6 100644
--- a/src/xalanc/XPath/XPathProcessorImpl.cpp
+++ b/src/xalanc/XPath/XPathProcessorImpl.cpp
@@ -48,7 +48,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -3495,4 +3495,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XPathProcessorImpl.hpp b/src/xalanc/XPath/XPathProcessorImpl.hpp
index 30fd88b..51a7b8f 100644
--- a/src/xalanc/XPath/XPathProcessorImpl.hpp
+++ b/src/xalanc/XPath/XPathProcessorImpl.hpp
@@ -51,7 +51,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -714,11 +714,7 @@
         XPathExpression::eOpCodes   m_opCode;
     };
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
     typedef std::size_t             size_type;
-#else
-    typedef size_t                  size_type;
-#endif
 
     static const TableEntry&
     searchTable(
@@ -852,7 +848,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XString.cpp b/src/xalanc/XPath/XString.cpp
index 3601bfb..7056ac8 100644
--- a/src/xalanc/XPath/XString.cpp
+++ b/src/xalanc/XPath/XString.cpp
@@ -20,7 +20,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -134,4 +134,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XString.hpp b/src/xalanc/XPath/XString.hpp
index e7afe14..eb7f680 100644
--- a/src/xalanc/XPath/XString.hpp
+++ b/src/xalanc/XPath/XString.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -131,7 +131,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XStringAdapter.cpp b/src/xalanc/XPath/XStringAdapter.cpp
index 5dbe081..ab52961 100644
--- a/src/xalanc/XPath/XStringAdapter.cpp
+++ b/src/xalanc/XPath/XStringAdapter.cpp
@@ -20,7 +20,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -129,4 +129,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XStringAdapter.hpp b/src/xalanc/XPath/XStringAdapter.hpp
index b2a2611..4955ebf 100644
--- a/src/xalanc/XPath/XStringAdapter.hpp
+++ b/src/xalanc/XPath/XStringAdapter.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -109,7 +109,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XStringAdapterAllocator.cpp b/src/xalanc/XPath/XStringAdapterAllocator.cpp
index f43cbd8..348a7e1 100644
--- a/src/xalanc/XPath/XStringAdapterAllocator.cpp
+++ b/src/xalanc/XPath/XStringAdapterAllocator.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -74,4 +74,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XStringAdapterAllocator.hpp b/src/xalanc/XPath/XStringAdapterAllocator.hpp
index b72d9f1..ba9c5c7 100644
--- a/src/xalanc/XPath/XStringAdapterAllocator.hpp
+++ b/src/xalanc/XPath/XStringAdapterAllocator.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -129,7 +129,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XStringAllocator.cpp b/src/xalanc/XPath/XStringAllocator.cpp
index 491f2f4..5900c11 100644
--- a/src/xalanc/XPath/XStringAllocator.cpp
+++ b/src/xalanc/XPath/XStringAllocator.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -103,4 +103,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XStringAllocator.hpp b/src/xalanc/XPath/XStringAllocator.hpp
index 47e3477..8c06264 100644
--- a/src/xalanc/XPath/XStringAllocator.hpp
+++ b/src/xalanc/XPath/XStringAllocator.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -147,7 +147,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XStringBase.cpp b/src/xalanc/XPath/XStringBase.cpp
index 01aecc7..0861e6b 100644
--- a/src/xalanc/XPath/XStringBase.cpp
+++ b/src/xalanc/XPath/XStringBase.cpp
@@ -35,7 +35,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -156,4 +156,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XStringBase.hpp b/src/xalanc/XPath/XStringBase.hpp
index 18f8768..9b667ba 100644
--- a/src/xalanc/XPath/XStringBase.hpp
+++ b/src/xalanc/XPath/XStringBase.hpp
@@ -31,7 +31,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -144,7 +144,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XStringCached.cpp b/src/xalanc/XPath/XStringCached.cpp
index 35820dc..df56844 100644
--- a/src/xalanc/XPath/XStringCached.cpp
+++ b/src/xalanc/XPath/XStringCached.cpp
@@ -24,7 +24,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -126,4 +126,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XStringCached.hpp b/src/xalanc/XPath/XStringCached.hpp
index 64457f1..0d6533c 100644
--- a/src/xalanc/XPath/XStringCached.hpp
+++ b/src/xalanc/XPath/XStringCached.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -108,7 +108,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XStringCachedAllocator.cpp b/src/xalanc/XPath/XStringCachedAllocator.cpp
index 8a92a25..fff4c65 100644
--- a/src/xalanc/XPath/XStringCachedAllocator.cpp
+++ b/src/xalanc/XPath/XStringCachedAllocator.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -72,4 +72,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XStringCachedAllocator.hpp b/src/xalanc/XPath/XStringCachedAllocator.hpp
index 151f86f..e8f8494 100644
--- a/src/xalanc/XPath/XStringCachedAllocator.hpp
+++ b/src/xalanc/XPath/XStringCachedAllocator.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -129,7 +129,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XStringReference.cpp b/src/xalanc/XPath/XStringReference.cpp
index 0b24deb..d81d7ca 100644
--- a/src/xalanc/XPath/XStringReference.cpp
+++ b/src/xalanc/XPath/XStringReference.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -122,4 +122,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XStringReference.hpp b/src/xalanc/XPath/XStringReference.hpp
index 5a8f861..1cb1f59 100644
--- a/src/xalanc/XPath/XStringReference.hpp
+++ b/src/xalanc/XPath/XStringReference.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -105,7 +105,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XStringReferenceAllocator.cpp b/src/xalanc/XPath/XStringReferenceAllocator.cpp
index 3a1c82d..26c0fa7 100644
--- a/src/xalanc/XPath/XStringReferenceAllocator.cpp
+++ b/src/xalanc/XPath/XStringReferenceAllocator.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -72,4 +72,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XStringReferenceAllocator.hpp b/src/xalanc/XPath/XStringReferenceAllocator.hpp
index 65bcf8b..40fb62f 100644
--- a/src/xalanc/XPath/XStringReferenceAllocator.hpp
+++ b/src/xalanc/XPath/XStringReferenceAllocator.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -127,7 +127,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XToken.cpp b/src/xalanc/XPath/XToken.cpp
index 727cdf4..cbc1f03 100644
--- a/src/xalanc/XPath/XToken.cpp
+++ b/src/xalanc/XPath/XToken.cpp
@@ -28,7 +28,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -282,4 +282,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XToken.hpp b/src/xalanc/XPath/XToken.hpp
index bc3375e..a476e7d 100644
--- a/src/xalanc/XPath/XToken.hpp
+++ b/src/xalanc/XPath/XToken.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -224,7 +224,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XTokenNumberAdapter.cpp b/src/xalanc/XPath/XTokenNumberAdapter.cpp
index 79d61f1..63e13a3 100644
--- a/src/xalanc/XPath/XTokenNumberAdapter.cpp
+++ b/src/xalanc/XPath/XTokenNumberAdapter.cpp
@@ -24,7 +24,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -140,4 +140,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XTokenNumberAdapter.hpp b/src/xalanc/XPath/XTokenNumberAdapter.hpp
index 19ac5bd..6255ef9 100644
--- a/src/xalanc/XPath/XTokenNumberAdapter.hpp
+++ b/src/xalanc/XPath/XTokenNumberAdapter.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -118,7 +118,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XTokenNumberAdapterAllocator.cpp b/src/xalanc/XPath/XTokenNumberAdapterAllocator.cpp
index ac91729..9194c80 100644
--- a/src/xalanc/XPath/XTokenNumberAdapterAllocator.cpp
+++ b/src/xalanc/XPath/XTokenNumberAdapterAllocator.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -73,4 +73,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XTokenNumberAdapterAllocator.hpp b/src/xalanc/XPath/XTokenNumberAdapterAllocator.hpp
index 982d660..32f5f1b 100644
--- a/src/xalanc/XPath/XTokenNumberAdapterAllocator.hpp
+++ b/src/xalanc/XPath/XTokenNumberAdapterAllocator.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -132,7 +132,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XTokenStringAdapter.cpp b/src/xalanc/XPath/XTokenStringAdapter.cpp
index aa3ad06..a2a4f03 100644
--- a/src/xalanc/XPath/XTokenStringAdapter.cpp
+++ b/src/xalanc/XPath/XTokenStringAdapter.cpp
@@ -24,7 +24,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -141,4 +141,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XTokenStringAdapter.hpp b/src/xalanc/XPath/XTokenStringAdapter.hpp
index dd03ae1..bb39b20 100644
--- a/src/xalanc/XPath/XTokenStringAdapter.hpp
+++ b/src/xalanc/XPath/XTokenStringAdapter.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -116,7 +116,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XTokenStringAdapterAllocator.cpp b/src/xalanc/XPath/XTokenStringAdapterAllocator.cpp
index d818bf3..416a4c4 100644
--- a/src/xalanc/XPath/XTokenStringAdapterAllocator.cpp
+++ b/src/xalanc/XPath/XTokenStringAdapterAllocator.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -70,4 +70,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XTokenStringAdapterAllocator.hpp b/src/xalanc/XPath/XTokenStringAdapterAllocator.hpp
index a9bc655..76119a8 100644
--- a/src/xalanc/XPath/XTokenStringAdapterAllocator.hpp
+++ b/src/xalanc/XPath/XTokenStringAdapterAllocator.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -125,7 +125,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XUnknown.cpp b/src/xalanc/XPath/XUnknown.cpp
index cc884e6..82adb54 100644
--- a/src/xalanc/XPath/XUnknown.cpp
+++ b/src/xalanc/XPath/XUnknown.cpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -234,4 +234,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XUnknown.hpp b/src/xalanc/XPath/XUnknown.hpp
index 98b9792..a3791ee 100644
--- a/src/xalanc/XPath/XUnknown.hpp
+++ b/src/xalanc/XPath/XUnknown.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -149,7 +149,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XalanDocumentFragmentNodeRefListBaseProxy.cpp b/src/xalanc/XPath/XalanDocumentFragmentNodeRefListBaseProxy.cpp
index 893f47a..da55213 100644
--- a/src/xalanc/XPath/XalanDocumentFragmentNodeRefListBaseProxy.cpp
+++ b/src/xalanc/XPath/XalanDocumentFragmentNodeRefListBaseProxy.cpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -85,4 +85,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XalanDocumentFragmentNodeRefListBaseProxy.hpp b/src/xalanc/XPath/XalanDocumentFragmentNodeRefListBaseProxy.hpp
index 9af1283..45fd375 100644
--- a/src/xalanc/XPath/XalanDocumentFragmentNodeRefListBaseProxy.hpp
+++ b/src/xalanc/XPath/XalanDocumentFragmentNodeRefListBaseProxy.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -79,7 +79,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XalanQName.cpp b/src/xalanc/XPath/XalanQName.cpp
index c34790c..591899b 100644
--- a/src/xalanc/XPath/XalanQName.cpp
+++ b/src/xalanc/XPath/XalanQName.cpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -481,4 +481,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XalanQName.hpp b/src/xalanc/XPath/XalanQName.hpp
index 7e3da1c..6ca8e3d 100644
--- a/src/xalanc/XPath/XalanQName.hpp
+++ b/src/xalanc/XPath/XalanQName.hpp
@@ -45,7 +45,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -437,7 +437,7 @@
 struct XalanMapKeyTraits<XalanQName>
 {
     typedef XalanHashMemberReference<XalanQName>        Hasher;
-    typedef XALAN_STD_QUALIFIER equal_to<XalanQName>    Comparator;
+    typedef std::equal_to<XalanQName>    Comparator;
 };
 
 template<>
@@ -448,7 +448,7 @@
 };
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XalanQNameByReference.cpp b/src/xalanc/XPath/XalanQNameByReference.cpp
index 82f4f15..1ad7c42 100644
--- a/src/xalanc/XPath/XalanQNameByReference.cpp
+++ b/src/xalanc/XPath/XalanQNameByReference.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -89,4 +89,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XalanQNameByReference.hpp b/src/xalanc/XPath/XalanQNameByReference.hpp
index 7364cdd..5d21eaa 100644
--- a/src/xalanc/XPath/XalanQNameByReference.hpp
+++ b/src/xalanc/XPath/XalanQNameByReference.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -142,7 +142,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XalanQNameByValue.cpp b/src/xalanc/XPath/XalanQNameByValue.cpp
index b8148ea..e3f571c 100644
--- a/src/xalanc/XPath/XalanQNameByValue.cpp
+++ b/src/xalanc/XPath/XalanQNameByValue.cpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -474,4 +474,4 @@
 
 
     
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XalanQNameByValue.hpp b/src/xalanc/XPath/XalanQNameByValue.hpp
index 94f62db..ba46549 100644
--- a/src/xalanc/XPath/XalanQNameByValue.hpp
+++ b/src/xalanc/XPath/XalanQNameByValue.hpp
@@ -30,11 +30,14 @@
 
 
 
-XALAN_DECLARE_XERCES_CLASS(Locator)
+namespace XERCES_CPP_NAMESPACE
+{
+    class Locator;
+}
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -47,7 +50,7 @@
 {
 public:
 
-    typedef XERCES_CPP_NAMESPACE_QUALIFIER Locator  LocatorType;
+    typedef xercesc::Locator  LocatorType;
 
     /**
      * Construct an empty XalanQNameByValue.
@@ -315,7 +318,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XalanQNameByValueAllocator.cpp b/src/xalanc/XPath/XalanQNameByValueAllocator.cpp
index db67fdf..0436a8b 100644
--- a/src/xalanc/XPath/XalanQNameByValueAllocator.cpp
+++ b/src/xalanc/XPath/XalanQNameByValueAllocator.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -133,4 +133,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XalanQNameByValueAllocator.hpp b/src/xalanc/XPath/XalanQNameByValueAllocator.hpp
index d3848f5..de5d04e 100644
--- a/src/xalanc/XPath/XalanQNameByValueAllocator.hpp
+++ b/src/xalanc/XPath/XalanQNameByValueAllocator.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -193,7 +193,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPath/XalanXPathException.cpp b/src/xalanc/XPath/XalanXPathException.cpp
index b341bca..4b2cd1b 100644
--- a/src/xalanc/XPath/XalanXPathException.cpp
+++ b/src/xalanc/XPath/XalanXPathException.cpp
@@ -20,7 +20,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -95,4 +95,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XPath/XalanXPathException.hpp b/src/xalanc/XPath/XalanXPathException.hpp
index 6cc3680..41ccd63 100644
--- a/src/xalanc/XPath/XalanXPathException.hpp
+++ b/src/xalanc/XPath/XalanXPathException.hpp
@@ -35,7 +35,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -91,7 +91,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XPathCAPI/XPathCAPI.cpp b/src/xalanc/XPathCAPI/XPathCAPI.cpp
index ede557a..3dbb43f 100644
--- a/src/xalanc/XPathCAPI/XPathCAPI.cpp
+++ b/src/xalanc/XPathCAPI/XPathCAPI.cpp
@@ -55,14 +55,14 @@
 
 
 
-XALAN_USING_XALAN(XalanDOMChar)
-XALAN_USING_XALAN(XalanDOMString)
-XALAN_USING_XALAN(XalanOutputTranscoder)
-XALAN_USING_XALAN(XPath)
-XALAN_USING_XALAN(XPathEvaluator)
-XALAN_USING_XALAN(XalanSourceTreeInit)
-XALAN_USING_XALAN(XalanTranscodingServices)
-XALAN_USING_XALAN(XalanMemMgrs)
+using xalanc::XalanDOMChar;
+using xalanc::XalanDOMString;
+using xalanc::XalanOutputTranscoder;
+using xalanc::XPath;
+using xalanc::XPathEvaluator;
+using xalanc::XalanSourceTreeInit;
+using xalanc::XalanTranscodingServices;
+using xalanc::XalanMemMgrs;
 
 
 static XalanSourceTreeInit*     theSourceTreeInit = 0;
@@ -86,7 +86,7 @@
 
         try
         {
-            XALAN_USING_XERCES(XMLPlatformUtils)
+            using xercesc::XMLPlatformUtils;
 
             XMLPlatformUtils::Initialize();
 
@@ -144,7 +144,7 @@
 
         try
         {
-            XALAN_USING_XERCES(XMLPlatformUtils)
+            using xercesc::XMLPlatformUtils;
 
             delete theSourceTreeInit;
 
@@ -350,7 +350,7 @@
 
             if (theLength >= maxStackArraySize)
             {
-                XALAN_USING_XALAN(XalanArrayAutoPtr)
+                using xalanc::XalanArrayAutoPtr;
 
                 XalanArrayAutoPtr<unsigned char>    theCharsCount(new unsigned char[theLength + 1]);
                 XalanArrayAutoPtr<XalanDOMChar>     theChars(new XalanDOMChar[theLength + 1]);
@@ -425,7 +425,7 @@
             {
                 const XalanDOMChar* const   thePointer = theExpressionString.c_str();
 
-                XALAN_USING_XALAN(length)
+                using xalanc::length;
 
                 if (length(thePointer) == 0)
                 {
@@ -513,7 +513,7 @@
     {
         int theError = XALAN_XPATH_API_SUCCESS;
 
-        XALAN_USING_XERCES(SAXException)
+        using xercesc::SAXException;
 
         try
         {
@@ -523,9 +523,9 @@
             XPath* const    theXPath = getXPath(theXPathHandle);
             assert(theXPath != 0);
 
-            XALAN_USING_XALAN(XalanDocument)
-            XALAN_USING_XALAN(XalanSourceTreeDOMSupport)
-            XALAN_USING_XALAN(XalanSourceTreeParserLiaison)
+            using xalanc::XalanDocument;
+            using xalanc::XalanSourceTreeDOMSupport;
+            using xalanc::XalanSourceTreeParserLiaison;
 
             XalanSourceTreeDOMSupport       theDOMSupport;
             XalanSourceTreeParserLiaison    theLiaison(theDOMSupport, XalanMemMgrs::getDefaultXercesMemMgr());
@@ -533,7 +533,7 @@
             // Hook the two together...
             theDOMSupport.setParserLiaison(&theLiaison);
 
-            XALAN_USING_XERCES(MemBufInputSource)
+            using xercesc::MemBufInputSource;
 
             // Create an input source...
             const MemBufInputSource     theInputSource(
diff --git a/src/xalanc/XSLT/AVT.cpp b/src/xalanc/XSLT/AVT.cpp
index 33b27fa..b9cc2fd 100644
--- a/src/xalanc/XSLT/AVT.cpp
+++ b/src/xalanc/XSLT/AVT.cpp
@@ -35,7 +35,7 @@
 #include "StylesheetConstructionContext.hpp"
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -376,4 +376,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/AVT.hpp b/src/xalanc/XSLT/AVT.hpp
index 1890221..25293d5 100644
--- a/src/xalanc/XSLT/AVT.hpp
+++ b/src/xalanc/XSLT/AVT.hpp
@@ -27,16 +27,19 @@
 
 
 
-XALAN_DECLARE_XERCES_CLASS(Locator)
+namespace XERCES_CPP_NAMESPACE
+{
+    class Locator;
+}
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
-typedef XERCES_CPP_NAMESPACE_QUALIFIER Locator  LocatorType;
-XALAN_USING_XERCES(Locator)
+typedef xercesc::Locator  LocatorType;
+using xercesc::Locator;
 
 
 
@@ -56,11 +59,7 @@
 {
 public:
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
     typedef std::size_t     size_type;
-#else
-    typedef size_t          size_type;
-#endif
 
     /**
      * Construct an Attribute Value Template(AVT) by parsing the string, and
@@ -190,7 +189,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/AVTPart.cpp b/src/xalanc/XSLT/AVTPart.cpp
index f6133a7..0a7277e 100644
--- a/src/xalanc/XSLT/AVTPart.cpp
+++ b/src/xalanc/XSLT/AVTPart.cpp
@@ -19,7 +19,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -35,4 +35,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/AVTPart.hpp b/src/xalanc/XSLT/AVTPart.hpp
index e76f590..4854795 100644
--- a/src/xalanc/XSLT/AVTPart.hpp
+++ b/src/xalanc/XSLT/AVTPart.hpp
@@ -25,7 +25,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -80,7 +80,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/AVTPartSimple.cpp b/src/xalanc/XSLT/AVTPartSimple.cpp
index 2ef3397..1e8d99a 100644
--- a/src/xalanc/XSLT/AVTPartSimple.cpp
+++ b/src/xalanc/XSLT/AVTPartSimple.cpp
@@ -27,7 +27,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -71,4 +71,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/AVTPartSimple.hpp b/src/xalanc/XSLT/AVTPartSimple.hpp
index e18dbee..5945e7a 100644
--- a/src/xalanc/XSLT/AVTPartSimple.hpp
+++ b/src/xalanc/XSLT/AVTPartSimple.hpp
@@ -33,7 +33,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -88,7 +88,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/AVTPartXPath.cpp b/src/xalanc/XSLT/AVTPartXPath.cpp
index 5f935f0..949f16b 100644
--- a/src/xalanc/XSLT/AVTPartXPath.cpp
+++ b/src/xalanc/XSLT/AVTPartXPath.cpp
@@ -27,7 +27,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -66,4 +66,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/AVTPartXPath.hpp b/src/xalanc/XSLT/AVTPartXPath.hpp
index 9506754..31458d0 100644
--- a/src/xalanc/XSLT/AVTPartXPath.hpp
+++ b/src/xalanc/XSLT/AVTPartXPath.hpp
@@ -33,7 +33,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -85,7 +85,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/Constants.cpp b/src/xalanc/XSLT/Constants.cpp
index 2c7ed6c..b1dde45 100644
--- a/src/xalanc/XSLT/Constants.cpp
+++ b/src/xalanc/XSLT/Constants.cpp
@@ -23,9 +23,9 @@
 #include <xalanc/PlatformSupport/DOMStringHelper.hpp>
 
 
-XALAN_USING_XALAN(XalanDOMString)
+using xalanc::XalanDOMString;
 
-XALAN_USING_XALAN(XalanMemMgrs)
+using xalanc::XalanMemMgrs;
 
 
 static XalanDOMString       ATTRNAME_CASEORDER(XalanMemMgrs::getDummyMemMgr());
@@ -155,7 +155,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -550,4 +550,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/Constants.hpp b/src/xalanc/XSLT/Constants.hpp
index b3d9450..5f4ef8c 100644
--- a/src/xalanc/XSLT/Constants.hpp
+++ b/src/xalanc/XSLT/Constants.hpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -207,7 +207,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/CountersTable.cpp b/src/xalanc/XSLT/CountersTable.cpp
index a80603a..58a4167 100644
--- a/src/xalanc/XSLT/CountersTable.cpp
+++ b/src/xalanc/XSLT/CountersTable.cpp
@@ -28,7 +28,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -37,8 +37,8 @@
             CountersTable::NodeVectorType&          flist,
             const CountersTable::NodeVectorType&    blist)
 {
-    XALAN_USING_STD(back_inserter)
-    XALAN_USING_STD(copy)
+    using std::back_inserter;
+    using std::copy;
 
     flist.reserve(flist.size() + blist.size());
 
@@ -178,4 +178,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/CountersTable.hpp b/src/xalanc/XSLT/CountersTable.hpp
index a23a363..10dd3f3 100644
--- a/src/xalanc/XSLT/CountersTable.hpp
+++ b/src/xalanc/XSLT/CountersTable.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -238,7 +238,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/DecimalToRoman.hpp b/src/xalanc/XSLT/DecimalToRoman.hpp
index 04c9ffc..16aa49c 100644
--- a/src/xalanc/XSLT/DecimalToRoman.hpp
+++ b/src/xalanc/XSLT/DecimalToRoman.hpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -53,7 +53,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/ElemApplyImport.cpp b/src/xalanc/XSLT/ElemApplyImport.cpp
index 8655a36..e17f15a 100644
--- a/src/xalanc/XSLT/ElemApplyImport.cpp
+++ b/src/xalanc/XSLT/ElemApplyImport.cpp
@@ -42,7 +42,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -182,4 +182,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/ElemApplyImport.hpp b/src/xalanc/XSLT/ElemApplyImport.hpp
index 6a2c10e..957ee14 100644
--- a/src/xalanc/XSLT/ElemApplyImport.hpp
+++ b/src/xalanc/XSLT/ElemApplyImport.hpp
@@ -31,7 +31,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -84,7 +84,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/ElemApplyTemplates.cpp b/src/xalanc/XSLT/ElemApplyTemplates.cpp
index 9459b23..fb760f0 100644
--- a/src/xalanc/XSLT/ElemApplyTemplates.cpp
+++ b/src/xalanc/XSLT/ElemApplyTemplates.cpp
@@ -40,7 +40,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -384,4 +384,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/ElemApplyTemplates.hpp b/src/xalanc/XSLT/ElemApplyTemplates.hpp
index 8c5f363..0a5098b 100644
--- a/src/xalanc/XSLT/ElemApplyTemplates.hpp
+++ b/src/xalanc/XSLT/ElemApplyTemplates.hpp
@@ -28,7 +28,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -121,7 +121,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/ElemAttribute.cpp b/src/xalanc/XSLT/ElemAttribute.cpp
index e68eff6..a7d8fb6 100644
--- a/src/xalanc/XSLT/ElemAttribute.cpp
+++ b/src/xalanc/XSLT/ElemAttribute.cpp
@@ -40,7 +40,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -736,4 +736,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/ElemAttribute.hpp b/src/xalanc/XSLT/ElemAttribute.hpp
index 3eae15f..8673e6a 100644
--- a/src/xalanc/XSLT/ElemAttribute.hpp
+++ b/src/xalanc/XSLT/ElemAttribute.hpp
@@ -28,7 +28,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -93,7 +93,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/ElemAttributeSet.cpp b/src/xalanc/XSLT/ElemAttributeSet.cpp
index ddacf92..a5a1800 100644
--- a/src/xalanc/XSLT/ElemAttributeSet.cpp
+++ b/src/xalanc/XSLT/ElemAttributeSet.cpp
@@ -35,7 +35,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -214,4 +214,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/ElemAttributeSet.hpp b/src/xalanc/XSLT/ElemAttributeSet.hpp
index 6a5b0e3..786af15 100644
--- a/src/xalanc/XSLT/ElemAttributeSet.hpp
+++ b/src/xalanc/XSLT/ElemAttributeSet.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -127,7 +127,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/ElemCallTemplate.cpp b/src/xalanc/XSLT/ElemCallTemplate.cpp
index bace769..ba369bb 100644
--- a/src/xalanc/XSLT/ElemCallTemplate.cpp
+++ b/src/xalanc/XSLT/ElemCallTemplate.cpp
@@ -38,7 +38,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -246,4 +246,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/ElemCallTemplate.hpp b/src/xalanc/XSLT/ElemCallTemplate.hpp
index 201278b..b7449e9 100644
--- a/src/xalanc/XSLT/ElemCallTemplate.hpp
+++ b/src/xalanc/XSLT/ElemCallTemplate.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -117,7 +117,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/ElemChoose.cpp b/src/xalanc/XSLT/ElemChoose.cpp
index 8ff0ca6..e9dd56f 100644
--- a/src/xalanc/XSLT/ElemChoose.cpp
+++ b/src/xalanc/XSLT/ElemChoose.cpp
@@ -42,7 +42,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -232,4 +232,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/ElemChoose.hpp b/src/xalanc/XSLT/ElemChoose.hpp
index 5a41561..cb5bf0d 100644
--- a/src/xalanc/XSLT/ElemChoose.hpp
+++ b/src/xalanc/XSLT/ElemChoose.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -82,7 +82,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/ElemComment.cpp b/src/xalanc/XSLT/ElemComment.cpp
index 42023a4..87c0742 100644
--- a/src/xalanc/XSLT/ElemComment.cpp
+++ b/src/xalanc/XSLT/ElemComment.cpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -204,4 +204,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/ElemComment.hpp b/src/xalanc/XSLT/ElemComment.hpp
index e0f2477..5c157e5 100644
--- a/src/xalanc/XSLT/ElemComment.hpp
+++ b/src/xalanc/XSLT/ElemComment.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -82,7 +82,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/ElemCopy.cpp b/src/xalanc/XSLT/ElemCopy.cpp
index f9f0fb7..2d307da 100644
--- a/src/xalanc/XSLT/ElemCopy.cpp
+++ b/src/xalanc/XSLT/ElemCopy.cpp
@@ -40,7 +40,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -237,4 +237,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/ElemCopy.hpp b/src/xalanc/XSLT/ElemCopy.hpp
index e7278d1..4cfc46e 100644
--- a/src/xalanc/XSLT/ElemCopy.hpp
+++ b/src/xalanc/XSLT/ElemCopy.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -73,7 +73,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/ElemCopyOf.cpp b/src/xalanc/XSLT/ElemCopyOf.cpp
index 2e3dc8b..03dca77 100644
--- a/src/xalanc/XSLT/ElemCopyOf.cpp
+++ b/src/xalanc/XSLT/ElemCopyOf.cpp
@@ -43,7 +43,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -292,4 +292,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/ElemCopyOf.hpp b/src/xalanc/XSLT/ElemCopyOf.hpp
index c19d31d..2449183 100644
--- a/src/xalanc/XSLT/ElemCopyOf.hpp
+++ b/src/xalanc/XSLT/ElemCopyOf.hpp
@@ -28,7 +28,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -83,7 +83,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/ElemDecimalFormat.cpp b/src/xalanc/XSLT/ElemDecimalFormat.cpp
index 83d2bdb..4d91fe9 100644
--- a/src/xalanc/XSLT/ElemDecimalFormat.cpp
+++ b/src/xalanc/XSLT/ElemDecimalFormat.cpp
@@ -40,7 +40,7 @@
 #include "StylesheetConstructionContext.hpp"
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -337,4 +337,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/ElemDecimalFormat.hpp b/src/xalanc/XSLT/ElemDecimalFormat.hpp
index 1a8c45e..fad37d9 100644
--- a/src/xalanc/XSLT/ElemDecimalFormat.hpp
+++ b/src/xalanc/XSLT/ElemDecimalFormat.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -100,7 +100,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/ElemElement.cpp b/src/xalanc/XSLT/ElemElement.cpp
index 212d465..122c6c4 100644
--- a/src/xalanc/XSLT/ElemElement.cpp
+++ b/src/xalanc/XSLT/ElemElement.cpp
@@ -39,7 +39,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -602,4 +602,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/ElemElement.hpp b/src/xalanc/XSLT/ElemElement.hpp
index 8c3cd1f..a2a42b4 100644
--- a/src/xalanc/XSLT/ElemElement.hpp
+++ b/src/xalanc/XSLT/ElemElement.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -137,7 +137,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/ElemEmpty.cpp b/src/xalanc/XSLT/ElemEmpty.cpp
index b0c3c61..5a62dbf 100644
--- a/src/xalanc/XSLT/ElemEmpty.cpp
+++ b/src/xalanc/XSLT/ElemEmpty.cpp
@@ -26,7 +26,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -110,4 +110,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/ElemEmpty.hpp b/src/xalanc/XSLT/ElemEmpty.hpp
index 3afb0ed..552a412 100644
--- a/src/xalanc/XSLT/ElemEmpty.hpp
+++ b/src/xalanc/XSLT/ElemEmpty.hpp
@@ -33,7 +33,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -99,7 +99,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/ElemExtensionCall.cpp b/src/xalanc/XSLT/ElemExtensionCall.cpp
index d7dbdba..ff5dcd0 100644
--- a/src/xalanc/XSLT/ElemExtensionCall.cpp
+++ b/src/xalanc/XSLT/ElemExtensionCall.cpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -154,4 +154,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/ElemExtensionCall.hpp b/src/xalanc/XSLT/ElemExtensionCall.hpp
index 5542d37..d474e1e 100644
--- a/src/xalanc/XSLT/ElemExtensionCall.hpp
+++ b/src/xalanc/XSLT/ElemExtensionCall.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -105,7 +105,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/ElemFallback.cpp b/src/xalanc/XSLT/ElemFallback.cpp
index 9bb8519..16b29e6 100644
--- a/src/xalanc/XSLT/ElemFallback.cpp
+++ b/src/xalanc/XSLT/ElemFallback.cpp
@@ -37,7 +37,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -181,4 +181,4 @@
 #endif
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/ElemFallback.hpp b/src/xalanc/XSLT/ElemFallback.hpp
index d84d11b..f0487ac 100644
--- a/src/xalanc/XSLT/ElemFallback.hpp
+++ b/src/xalanc/XSLT/ElemFallback.hpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -92,7 +92,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/ElemForEach.cpp b/src/xalanc/XSLT/ElemForEach.cpp
index cada9b9..d1a6388 100644
--- a/src/xalanc/XSLT/ElemForEach.cpp
+++ b/src/xalanc/XSLT/ElemForEach.cpp
@@ -49,7 +49,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -131,7 +131,7 @@
 
 ElemForEach::~ElemForEach()
 {
-    XALAN_USING_STD(for_each)
+    using std::for_each;
 
      MemoryManager& theManager = m_sortElems.getMemoryManager();
 
@@ -835,4 +835,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/ElemForEach.hpp b/src/xalanc/XSLT/ElemForEach.hpp
index 95fc720..210b4e4 100644
--- a/src/xalanc/XSLT/ElemForEach.hpp
+++ b/src/xalanc/XSLT/ElemForEach.hpp
@@ -44,7 +44,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -229,7 +229,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/ElemForwardCompatible.cpp b/src/xalanc/XSLT/ElemForwardCompatible.cpp
index a965ea2..1f9ccd1 100644
--- a/src/xalanc/XSLT/ElemForwardCompatible.cpp
+++ b/src/xalanc/XSLT/ElemForwardCompatible.cpp
@@ -38,7 +38,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -168,4 +168,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/ElemForwardCompatible.hpp b/src/xalanc/XSLT/ElemForwardCompatible.hpp
index eb32d38..2e10cfe 100644
--- a/src/xalanc/XSLT/ElemForwardCompatible.hpp
+++ b/src/xalanc/XSLT/ElemForwardCompatible.hpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -101,7 +101,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/ElemIf.cpp b/src/xalanc/XSLT/ElemIf.cpp
index c6be368..12aee56 100644
--- a/src/xalanc/XSLT/ElemIf.cpp
+++ b/src/xalanc/XSLT/ElemIf.cpp
@@ -42,7 +42,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -197,4 +197,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/ElemIf.hpp b/src/xalanc/XSLT/ElemIf.hpp
index d06f212..aa0a76a 100644
--- a/src/xalanc/XSLT/ElemIf.hpp
+++ b/src/xalanc/XSLT/ElemIf.hpp
@@ -28,7 +28,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -82,7 +82,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/ElemLiteralResult.cpp b/src/xalanc/XSLT/ElemLiteralResult.cpp
index ac8b014..74dd493 100644
--- a/src/xalanc/XSLT/ElemLiteralResult.cpp
+++ b/src/xalanc/XSLT/ElemLiteralResult.cpp
@@ -40,7 +40,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -507,4 +507,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/ElemLiteralResult.hpp b/src/xalanc/XSLT/ElemLiteralResult.hpp
index bc167b1..a7ecdbc 100644
--- a/src/xalanc/XSLT/ElemLiteralResult.hpp
+++ b/src/xalanc/XSLT/ElemLiteralResult.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -164,7 +164,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/ElemMessage.cpp b/src/xalanc/XSLT/ElemMessage.cpp
index 1d020a1..75d9443 100644
--- a/src/xalanc/XSLT/ElemMessage.cpp
+++ b/src/xalanc/XSLT/ElemMessage.cpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -240,4 +240,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/ElemMessage.hpp b/src/xalanc/XSLT/ElemMessage.hpp
index cd553ca..ec7309a 100644
--- a/src/xalanc/XSLT/ElemMessage.hpp
+++ b/src/xalanc/XSLT/ElemMessage.hpp
@@ -31,7 +31,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -108,7 +108,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/ElemNumber.cpp b/src/xalanc/XSLT/ElemNumber.cpp
index a63a687..864bc27 100644
--- a/src/xalanc/XSLT/ElemNumber.cpp
+++ b/src/xalanc/XSLT/ElemNumber.cpp
@@ -63,7 +63,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -1485,11 +1485,7 @@
 
     XalanDOMChar    buf[buflen + 1];
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
     std::memset(buf, 0, (buflen + 1) * sizeof(XalanDOMChar));
-#else
-    memset(buf, 0, (buflen + 1) * sizeof(XalanDOMChar));
-#endif
 
     // next character to set in the buffer
     XalanDOMString::size_type   charPos = buflen - 1 ;    // work backward through buf[]
@@ -2200,4 +2196,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/ElemNumber.hpp b/src/xalanc/XSLT/ElemNumber.hpp
index d585311..97202e1 100644
--- a/src/xalanc/XSLT/ElemNumber.hpp
+++ b/src/xalanc/XSLT/ElemNumber.hpp
@@ -44,7 +44,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -505,7 +505,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/ElemOtherwise.cpp b/src/xalanc/XSLT/ElemOtherwise.cpp
index 316c288..a63ccbe 100644
--- a/src/xalanc/XSLT/ElemOtherwise.cpp
+++ b/src/xalanc/XSLT/ElemOtherwise.cpp
@@ -33,7 +33,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -117,4 +117,4 @@
 #endif
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/ElemOtherwise.hpp b/src/xalanc/XSLT/ElemOtherwise.hpp
index bed0b39..d0fb22d 100644
--- a/src/xalanc/XSLT/ElemOtherwise.hpp
+++ b/src/xalanc/XSLT/ElemOtherwise.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -71,7 +71,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/ElemPI.cpp b/src/xalanc/XSLT/ElemPI.cpp
index e28ede7..d43bc50 100644
--- a/src/xalanc/XSLT/ElemPI.cpp
+++ b/src/xalanc/XSLT/ElemPI.cpp
@@ -35,7 +35,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -264,4 +264,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/ElemPI.hpp b/src/xalanc/XSLT/ElemPI.hpp
index a8420e8..2809755 100644
--- a/src/xalanc/XSLT/ElemPI.hpp
+++ b/src/xalanc/XSLT/ElemPI.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -90,7 +90,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/ElemParam.cpp b/src/xalanc/XSLT/ElemParam.cpp
index 62a5e3e..dca2eb2 100644
--- a/src/xalanc/XSLT/ElemParam.cpp
+++ b/src/xalanc/XSLT/ElemParam.cpp
@@ -32,7 +32,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -133,4 +133,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/ElemParam.hpp b/src/xalanc/XSLT/ElemParam.hpp
index 0d9f61e..a91686d 100644
--- a/src/xalanc/XSLT/ElemParam.hpp
+++ b/src/xalanc/XSLT/ElemParam.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -73,7 +73,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/ElemSort.cpp b/src/xalanc/XSLT/ElemSort.cpp
index eb12ba7..47e6956 100644
--- a/src/xalanc/XSLT/ElemSort.cpp
+++ b/src/xalanc/XSLT/ElemSort.cpp
@@ -33,7 +33,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -172,4 +172,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/ElemSort.hpp b/src/xalanc/XSLT/ElemSort.hpp
index c91a01b..69437e2 100644
--- a/src/xalanc/XSLT/ElemSort.hpp
+++ b/src/xalanc/XSLT/ElemSort.hpp
@@ -35,7 +35,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -148,7 +148,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/ElemTemplate.cpp b/src/xalanc/XSLT/ElemTemplate.cpp
index 07ed333..65a214a 100644
--- a/src/xalanc/XSLT/ElemTemplate.cpp
+++ b/src/xalanc/XSLT/ElemTemplate.cpp
@@ -43,7 +43,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -275,4 +275,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/ElemTemplate.hpp b/src/xalanc/XSLT/ElemTemplate.hpp
index fc3173f..0bc825c 100644
--- a/src/xalanc/XSLT/ElemTemplate.hpp
+++ b/src/xalanc/XSLT/ElemTemplate.hpp
@@ -32,7 +32,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -166,7 +166,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/ElemTemplateElement.cpp b/src/xalanc/XSLT/ElemTemplateElement.cpp
index b54c80a..1cf8dcf 100644
--- a/src/xalanc/XSLT/ElemTemplateElement.cpp
+++ b/src/xalanc/XSLT/ElemTemplateElement.cpp
@@ -71,7 +71,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -1652,4 +1652,4 @@
 }
 #endif
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/ElemTemplateElement.hpp b/src/xalanc/XSLT/ElemTemplateElement.hpp
index afc31df..4f5813e 100644
--- a/src/xalanc/XSLT/ElemTemplateElement.hpp
+++ b/src/xalanc/XSLT/ElemTemplateElement.hpp
@@ -48,21 +48,24 @@
 
 
 
-XALAN_DECLARE_XERCES_CLASS(AttributeList)
-XALAN_DECLARE_XERCES_CLASS(Locator)
+namespace XERCES_CPP_NAMESPACE
+{
+    class AttributeList;
+    class Locator;
+}
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
-typedef XERCES_CPP_NAMESPACE_QUALIFIER AttributeList    AttributeListType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER Locator          LocatorType;
+typedef xercesc::AttributeList    AttributeListType;
+typedef xercesc::Locator          LocatorType;
 
 
-XALAN_USING_XERCES(AttributeList)
-XALAN_USING_XERCES(Locator)
+using xercesc::AttributeList;
+using xercesc::Locator;
 class ElemTemplate;
 class ElemTextLiteral;
 class NamespacesHandler;
@@ -1208,7 +1211,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/ElemText.cpp b/src/xalanc/XSLT/ElemText.cpp
index af55366..c008555 100644
--- a/src/xalanc/XSLT/ElemText.cpp
+++ b/src/xalanc/XSLT/ElemText.cpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -108,4 +108,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/ElemText.hpp b/src/xalanc/XSLT/ElemText.hpp
index c9dc361..8a7adcd 100644
--- a/src/xalanc/XSLT/ElemText.hpp
+++ b/src/xalanc/XSLT/ElemText.hpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -86,7 +86,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/ElemTextLiteral.cpp b/src/xalanc/XSLT/ElemTextLiteral.cpp
index f2ac110..17087b0 100644
--- a/src/xalanc/XSLT/ElemTextLiteral.cpp
+++ b/src/xalanc/XSLT/ElemTextLiteral.cpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -127,4 +127,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/ElemTextLiteral.hpp b/src/xalanc/XSLT/ElemTextLiteral.hpp
index 6a96a48..1a239b3 100644
--- a/src/xalanc/XSLT/ElemTextLiteral.hpp
+++ b/src/xalanc/XSLT/ElemTextLiteral.hpp
@@ -33,7 +33,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -123,7 +123,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/ElemUse.cpp b/src/xalanc/XSLT/ElemUse.cpp
index 8438fac..f59eaf8 100644
--- a/src/xalanc/XSLT/ElemUse.cpp
+++ b/src/xalanc/XSLT/ElemUse.cpp
@@ -38,7 +38,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -306,4 +306,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/ElemUse.hpp b/src/xalanc/XSLT/ElemUse.hpp
index d90b701..89ef68c 100644
--- a/src/xalanc/XSLT/ElemUse.hpp
+++ b/src/xalanc/XSLT/ElemUse.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -38,11 +38,7 @@
 {
 public:
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
     typedef std::size_t     size_type;
-#else
-    typedef size_t          size_type;
-#endif
 
     /**
      * Construct an object corresponding to an "use-attribute-sets" attribute.
@@ -158,7 +154,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/ElemValueOf.cpp b/src/xalanc/XSLT/ElemValueOf.cpp
index 3cf4c4b..f6568d7 100644
--- a/src/xalanc/XSLT/ElemValueOf.cpp
+++ b/src/xalanc/XSLT/ElemValueOf.cpp
@@ -46,7 +46,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -426,4 +426,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/ElemValueOf.hpp b/src/xalanc/XSLT/ElemValueOf.hpp
index 86cc5a0..236bc12 100644
--- a/src/xalanc/XSLT/ElemValueOf.hpp
+++ b/src/xalanc/XSLT/ElemValueOf.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -107,7 +107,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/ElemVariable.cpp b/src/xalanc/XSLT/ElemVariable.cpp
index 8c18ccc..735f291 100644
--- a/src/xalanc/XSLT/ElemVariable.cpp
+++ b/src/xalanc/XSLT/ElemVariable.cpp
@@ -40,7 +40,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -394,4 +394,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/ElemVariable.hpp b/src/xalanc/XSLT/ElemVariable.hpp
index b58aeda..441b4b5 100644
--- a/src/xalanc/XSLT/ElemVariable.hpp
+++ b/src/xalanc/XSLT/ElemVariable.hpp
@@ -36,7 +36,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -169,7 +169,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/ElemWhen.cpp b/src/xalanc/XSLT/ElemWhen.cpp
index 5c570eb..ba1d0a4 100644
--- a/src/xalanc/XSLT/ElemWhen.cpp
+++ b/src/xalanc/XSLT/ElemWhen.cpp
@@ -33,7 +33,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -140,4 +140,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/ElemWhen.hpp b/src/xalanc/XSLT/ElemWhen.hpp
index decda72..b3922b4 100644
--- a/src/xalanc/XSLT/ElemWhen.hpp
+++ b/src/xalanc/XSLT/ElemWhen.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -82,7 +82,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/ElemWithParam.cpp b/src/xalanc/XSLT/ElemWithParam.cpp
index e98fe87..614ca7b 100644
--- a/src/xalanc/XSLT/ElemWithParam.cpp
+++ b/src/xalanc/XSLT/ElemWithParam.cpp
@@ -39,7 +39,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -206,4 +206,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/ElemWithParam.hpp b/src/xalanc/XSLT/ElemWithParam.hpp
index 4886157..3ef3836 100644
--- a/src/xalanc/XSLT/ElemWithParam.hpp
+++ b/src/xalanc/XSLT/ElemWithParam.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -105,7 +105,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/ExtensionFunctionHandler.cpp b/src/xalanc/XSLT/ExtensionFunctionHandler.cpp
index 080c84a..657f6c4 100644
--- a/src/xalanc/XSLT/ExtensionFunctionHandler.cpp
+++ b/src/xalanc/XSLT/ExtensionFunctionHandler.cpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -145,4 +145,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/ExtensionFunctionHandler.hpp b/src/xalanc/XSLT/ExtensionFunctionHandler.hpp
index b9c467c..2d5bbb8 100644
--- a/src/xalanc/XSLT/ExtensionFunctionHandler.hpp
+++ b/src/xalanc/XSLT/ExtensionFunctionHandler.hpp
@@ -43,7 +43,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -194,7 +194,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
  
 
 
diff --git a/src/xalanc/XSLT/ExtensionNSHandler.cpp b/src/xalanc/XSLT/ExtensionNSHandler.cpp
index 5d26c9e..2d00455 100644
--- a/src/xalanc/XSLT/ExtensionNSHandler.cpp
+++ b/src/xalanc/XSLT/ExtensionNSHandler.cpp
@@ -36,7 +36,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -218,4 +218,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/ExtensionNSHandler.hpp b/src/xalanc/XSLT/ExtensionNSHandler.hpp
index bc97708..d3ef112 100644
--- a/src/xalanc/XSLT/ExtensionNSHandler.hpp
+++ b/src/xalanc/XSLT/ExtensionNSHandler.hpp
@@ -41,7 +41,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -215,7 +215,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/FunctionCurrent.cpp b/src/xalanc/XSLT/FunctionCurrent.cpp
index 07befab..2381ed4 100644
--- a/src/xalanc/XSLT/FunctionCurrent.cpp
+++ b/src/xalanc/XSLT/FunctionCurrent.cpp
@@ -27,7 +27,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -56,11 +56,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionCurrent*
-#endif
 FunctionCurrent::clone(MemoryManager&   theManager) const
 {
     return XalanCopyConstruct(theManager, *this);
@@ -79,4 +75,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/FunctionCurrent.hpp b/src/xalanc/XSLT/FunctionCurrent.hpp
index e4f8def..4b83935 100644
--- a/src/xalanc/XSLT/FunctionCurrent.hpp
+++ b/src/xalanc/XSLT/FunctionCurrent.hpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -61,11 +61,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionCurrent*
-#endif
     clone(MemoryManager& theManager) const;
 
 private:
@@ -83,7 +79,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/FunctionDocument.cpp b/src/xalanc/XSLT/FunctionDocument.cpp
index 3e0aa04..bd02cff 100644
--- a/src/xalanc/XSLT/FunctionDocument.cpp
+++ b/src/xalanc/XSLT/FunctionDocument.cpp
@@ -43,7 +43,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -139,7 +139,7 @@
     }
 
     virtual void
-    warning(const XERCES_CPP_NAMESPACE_QUALIFIER SAXParseException& exc)
+    warning(const xercesc::SAXParseException& exc)
     {
         const GetCachedString   theGuard(m_executionContext);
 
@@ -156,13 +156,13 @@
     }
 
     virtual void
-    error(const XERCES_CPP_NAMESPACE_QUALIFIER SAXParseException& exc)
+    error(const xercesc::SAXParseException& exc)
     {
         warning(exc);
     }
 
     virtual void
-    fatalError(const XERCES_CPP_NAMESPACE_QUALIFIER SAXParseException& exc)
+    fatalError(const xercesc::SAXParseException& exc)
     {
         m_fatal = true;
 
@@ -582,11 +582,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionDocument*
-#endif
 FunctionDocument::clone(MemoryManager&  theManager) const
 {
     return XalanCopyConstruct(theManager, *this);
@@ -605,4 +601,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/FunctionDocument.hpp b/src/xalanc/XSLT/FunctionDocument.hpp
index 78bc4dc..4b8e6d8 100644
--- a/src/xalanc/XSLT/FunctionDocument.hpp
+++ b/src/xalanc/XSLT/FunctionDocument.hpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -65,11 +65,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionDocument*
-#endif
     clone(MemoryManager& theManager) const;
 
 protected:
@@ -99,7 +95,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/FunctionElementAvailable.cpp b/src/xalanc/XSLT/FunctionElementAvailable.cpp
index 247f563..e763944 100644
--- a/src/xalanc/XSLT/FunctionElementAvailable.cpp
+++ b/src/xalanc/XSLT/FunctionElementAvailable.cpp
@@ -28,7 +28,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -59,11 +59,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionElementAvailable*
-#endif
 FunctionElementAvailable::clone(MemoryManager& theManager) const
 {
     return XalanCopyConstruct(theManager, *this);
@@ -82,4 +78,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/FunctionElementAvailable.hpp b/src/xalanc/XSLT/FunctionElementAvailable.hpp
index c6f4527..b7d9251 100644
--- a/src/xalanc/XSLT/FunctionElementAvailable.hpp
+++ b/src/xalanc/XSLT/FunctionElementAvailable.hpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -62,11 +62,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionElementAvailable*
-#endif
     clone(MemoryManager& theManager) const;
 
 private:
@@ -85,7 +81,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/FunctionFormatNumber.cpp b/src/xalanc/XSLT/FunctionFormatNumber.cpp
index a317451..de3226e 100644
--- a/src/xalanc/XSLT/FunctionFormatNumber.cpp
+++ b/src/xalanc/XSLT/FunctionFormatNumber.cpp
@@ -24,7 +24,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -99,11 +99,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionFormatNumber*
-#endif
 FunctionFormatNumber::clone(MemoryManager&  theManager) const
 {
     return XalanCopyConstruct(theManager, *this);
@@ -122,4 +118,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/FunctionFormatNumber.hpp b/src/xalanc/XSLT/FunctionFormatNumber.hpp
index 0f0c7f8..72e9d22 100644
--- a/src/xalanc/XSLT/FunctionFormatNumber.hpp
+++ b/src/xalanc/XSLT/FunctionFormatNumber.hpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 // Implementation of the XSLT function format-number.
 //
@@ -65,11 +65,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionFormatNumber*
-#endif
     clone(MemoryManager& theManager) const;
 
 private:
@@ -88,7 +84,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/FunctionFunctionAvailable.cpp b/src/xalanc/XSLT/FunctionFunctionAvailable.cpp
index 2fdd783..cca59ac 100644
--- a/src/xalanc/XSLT/FunctionFunctionAvailable.cpp
+++ b/src/xalanc/XSLT/FunctionFunctionAvailable.cpp
@@ -28,7 +28,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -61,11 +61,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionFunctionAvailable*
-#endif
 FunctionFunctionAvailable::clone(MemoryManager&     theManager) const
 {
     return XalanCopyConstruct(theManager, *this);
@@ -84,4 +80,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/FunctionFunctionAvailable.hpp b/src/xalanc/XSLT/FunctionFunctionAvailable.hpp
index 96167df..a54e10f 100644
--- a/src/xalanc/XSLT/FunctionFunctionAvailable.hpp
+++ b/src/xalanc/XSLT/FunctionFunctionAvailable.hpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -62,11 +62,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionFunctionAvailable*
-#endif
     clone(MemoryManager& theManager) const;
 
 protected:
@@ -86,7 +82,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/FunctionGenerateID.cpp b/src/xalanc/XSLT/FunctionGenerateID.cpp
index 119a157..f8cc3cb 100644
--- a/src/xalanc/XSLT/FunctionGenerateID.cpp
+++ b/src/xalanc/XSLT/FunctionGenerateID.cpp
@@ -33,7 +33,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -132,11 +132,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionGenerateID*
-#endif
 FunctionGenerateID::clone(MemoryManager&    theManager) const
 {
     return XalanCopyConstruct(theManager, *this);
@@ -155,4 +151,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/FunctionGenerateID.hpp b/src/xalanc/XSLT/FunctionGenerateID.hpp
index 231712d..d408bdd 100644
--- a/src/xalanc/XSLT/FunctionGenerateID.hpp
+++ b/src/xalanc/XSLT/FunctionGenerateID.hpp
@@ -31,7 +31,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -65,11 +65,7 @@
             const XObjectPtr        arg1,
             const Locator*          locator) const;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionGenerateID*
-#endif
     clone(MemoryManager& theManager) const;
 
 protected:
@@ -90,7 +86,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/FunctionKey.cpp b/src/xalanc/XSLT/FunctionKey.cpp
index 0154b04..0615c91 100644
--- a/src/xalanc/XSLT/FunctionKey.cpp
+++ b/src/xalanc/XSLT/FunctionKey.cpp
@@ -41,7 +41,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -189,11 +189,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionKey*
-#endif
 FunctionKey::clone(MemoryManager&   theManager) const
 {
     return XalanCopyConstruct(theManager, *this);
@@ -212,4 +208,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/FunctionKey.hpp b/src/xalanc/XSLT/FunctionKey.hpp
index a825f6c..fbb3c2f 100644
--- a/src/xalanc/XSLT/FunctionKey.hpp
+++ b/src/xalanc/XSLT/FunctionKey.hpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -63,11 +63,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionKey*
-#endif
     clone(MemoryManager& theManager) const;
 
 protected:
@@ -87,7 +83,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/FunctionSystemProperty.cpp b/src/xalanc/XSLT/FunctionSystemProperty.cpp
index 34f9d65..2192d5c 100644
--- a/src/xalanc/XSLT/FunctionSystemProperty.cpp
+++ b/src/xalanc/XSLT/FunctionSystemProperty.cpp
@@ -36,7 +36,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -179,11 +179,7 @@
         TranscodeToLocalCodePage(fullName, theResultVect, true);
 
         const char* const   theEnvString =
-#if defined(XALAN_STRICT_ANSI_HEADERS)
             std::getenv(c_str(theResultVect));
-#else
-            getenv(c_str(theResultVect));
-#endif
 
         if (theEnvString != 0)
         {
@@ -202,11 +198,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionSystemProperty*
-#endif
 FunctionSystemProperty::clone(MemoryManager&    theManager) const
 {
     return XalanCopyConstruct(theManager, *this, theManager);
@@ -225,4 +217,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/FunctionSystemProperty.hpp b/src/xalanc/XSLT/FunctionSystemProperty.hpp
index 2b58147..3a5209d 100644
--- a/src/xalanc/XSLT/FunctionSystemProperty.hpp
+++ b/src/xalanc/XSLT/FunctionSystemProperty.hpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -59,11 +59,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionSystemProperty*
-#endif
     clone(MemoryManager& theManager) const;
 
 protected:
@@ -94,7 +90,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/FunctionUnparsedEntityURI.cpp b/src/xalanc/XSLT/FunctionUnparsedEntityURI.cpp
index 8e7134b..6fd86a6 100644
--- a/src/xalanc/XSLT/FunctionUnparsedEntityURI.cpp
+++ b/src/xalanc/XSLT/FunctionUnparsedEntityURI.cpp
@@ -32,7 +32,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -91,11 +91,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionUnparsedEntityURI*
-#endif
 FunctionUnparsedEntityURI::clone(MemoryManager&     theManager) const
 {
    return XalanCopyConstruct(theManager, *this);
@@ -114,4 +110,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/FunctionUnparsedEntityURI.hpp b/src/xalanc/XSLT/FunctionUnparsedEntityURI.hpp
index c007040..22a49df 100644
--- a/src/xalanc/XSLT/FunctionUnparsedEntityURI.hpp
+++ b/src/xalanc/XSLT/FunctionUnparsedEntityURI.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -58,11 +58,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionUnparsedEntityURI*
-#endif
     clone(MemoryManager& theManager) const;
 
 protected:
@@ -82,7 +78,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/GenerateEvent.cpp b/src/xalanc/XSLT/GenerateEvent.cpp
index 0ad3b6e..6f4a68d 100644
--- a/src/xalanc/XSLT/GenerateEvent.cpp
+++ b/src/xalanc/XSLT/GenerateEvent.cpp
@@ -19,7 +19,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -120,4 +120,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/GenerateEvent.hpp b/src/xalanc/XSLT/GenerateEvent.hpp
index a8c5408..1a81231 100644
--- a/src/xalanc/XSLT/GenerateEvent.hpp
+++ b/src/xalanc/XSLT/GenerateEvent.hpp
@@ -29,15 +29,18 @@
 
 
 
-XALAN_DECLARE_XERCES_CLASS(AttributeList)
+namespace XERCES_CPP_NAMESPACE
+{
+    class AttributeList;
+}
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
-typedef XERCES_CPP_NAMESPACE_QUALIFIER AttributeList    AttributeListType;
+typedef xercesc::AttributeList    AttributeListType;
 
 
 
@@ -225,7 +228,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/KeyDeclaration.hpp b/src/xalanc/XSLT/KeyDeclaration.hpp
index 7417f6f..490a576 100644
--- a/src/xalanc/XSLT/KeyDeclaration.hpp
+++ b/src/xalanc/XSLT/KeyDeclaration.hpp
@@ -25,7 +25,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -172,7 +172,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/KeyTable.cpp b/src/xalanc/XSLT/KeyTable.cpp
index 657e19d..41d87d7 100644
--- a/src/xalanc/XSLT/KeyTable.cpp
+++ b/src/xalanc/XSLT/KeyTable.cpp
@@ -49,7 +49,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -343,4 +343,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/KeyTable.hpp b/src/xalanc/XSLT/KeyTable.hpp
index 5559f09..29e2356 100644
--- a/src/xalanc/XSLT/KeyTable.hpp
+++ b/src/xalanc/XSLT/KeyTable.hpp
@@ -43,7 +43,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -158,7 +158,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/NamespacesHandler.cpp b/src/xalanc/XSLT/NamespacesHandler.cpp
index 9365fc9..c555e6f 100644
--- a/src/xalanc/XSLT/NamespacesHandler.cpp
+++ b/src/xalanc/XSLT/NamespacesHandler.cpp
@@ -38,7 +38,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -919,4 +919,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/NamespacesHandler.hpp b/src/xalanc/XSLT/NamespacesHandler.hpp
index bcbbe78..3c5a22a 100644
--- a/src/xalanc/XSLT/NamespacesHandler.hpp
+++ b/src/xalanc/XSLT/NamespacesHandler.hpp
@@ -40,7 +40,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -468,7 +468,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/NodeSortKey.cpp b/src/xalanc/XSLT/NodeSortKey.cpp
index 76cfe1b..aba394d 100644
--- a/src/xalanc/XSLT/NodeSortKey.cpp
+++ b/src/xalanc/XSLT/NodeSortKey.cpp
@@ -24,7 +24,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -105,4 +105,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/NodeSortKey.hpp b/src/xalanc/XSLT/NodeSortKey.hpp
index a81bc48..25594c5 100644
--- a/src/xalanc/XSLT/NodeSortKey.hpp
+++ b/src/xalanc/XSLT/NodeSortKey.hpp
@@ -33,7 +33,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -158,7 +158,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/NodeSorter.cpp b/src/xalanc/XSLT/NodeSorter.cpp
index 905270f..93d0447 100644
--- a/src/xalanc/XSLT/NodeSorter.cpp
+++ b/src/xalanc/XSLT/NodeSorter.cpp
@@ -35,7 +35,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -70,7 +70,7 @@
                     m_scratchVector,
                     m_keys);
 
-    XALAN_USING_STD(stable_sort)
+    using std::stable_sort;
 
     // Use the stl sort algorithm, which will use our compare functor,
     // which returns true if first less than second
@@ -153,9 +153,9 @@
 
 int
 NodeSorter::NodeSortKeyCompare::compare(
-                first_argument_type     theLHS,
-                second_argument_type    theRHS,
-                XalanSize_t             theKeyIndex) const
+                const NodeVectorType::value_type&    theLHS,
+                const NodeVectorType::value_type&    theRHS,
+                XalanSize_t                          theKeyIndex) const
 {
     assert(theLHS.m_node != 0 && theRHS.m_node != 0);
     assert(theKeyIndex < m_nodeSortKeys.size());
@@ -265,9 +265,9 @@
 
 double
 NodeSorter::NodeSortKeyCompare::getNumberResult(
-                const NodeSortKey&      theKey,
-                XalanSize_t             theKeyIndex,
-                first_argument_type     theEntry) const
+                const NodeSortKey&                   theKey,
+                XalanSize_t                          theKeyIndex,
+                const NodeVectorType::value_type&    theEntry) const
 {
     assert(theKey.getPrefixResolver() != 0);
 
@@ -306,7 +306,7 @@
     {
         theCache[theKeyIndex].resize(m_nodes.size(), 0);
 
-        XALAN_USING_STD(fill)
+        using std::fill;
 
         // Fill with the dummy value...
         fill(
@@ -423,9 +423,9 @@
 
 const XalanDOMString&
 NodeSorter::NodeSortKeyCompare::getStringResult(
-                const NodeSortKey&      theKey,
-                XalanSize_t             theKeyIndex,
-                first_argument_type     theEntry) const
+                const NodeSortKey&                   theKey,
+                XalanSize_t                          theKeyIndex,
+                const NodeVectorType::value_type&    theEntry) const
 {
     assert(theKey.getPrefixResolver() != 0);
 
@@ -473,4 +473,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/NodeSorter.hpp b/src/xalanc/XSLT/NodeSorter.hpp
index 4e60a0e..fbdd84b 100644
--- a/src/xalanc/XSLT/NodeSorter.hpp
+++ b/src/xalanc/XSLT/NodeSorter.hpp
@@ -39,7 +39,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -108,11 +108,7 @@
     /**
      * Return the results of a compare of two nodes.
      */
-#if defined(XALAN_NO_STD_NAMESPACE)
-    struct XALAN_XSLT_EXPORT NodeSortKeyCompare : public binary_function<const NodeVectorType::value_type&, const NodeVectorType::value_type&, bool>
-#else
-    struct XALAN_XSLT_EXPORT NodeSortKeyCompare : public std::binary_function<const NodeVectorType::value_type&, const NodeVectorType::value_type&, bool>
-#endif
+    struct XALAN_XSLT_EXPORT NodeSortKeyCompare
     {
     public:
 
@@ -146,9 +142,9 @@
          */
         int
         compare(
-                first_argument_type     theLHS,
-                second_argument_type    theRHS,
-                XalanSize_t             theKeyIndex = 0) const;
+                const NodeVectorType::value_type&    theLHS,
+                const NodeVectorType::value_type&    theRHS,
+                XalanSize_t                          theKeyIndex = 0) const;
 
         /**
          * Compare two nodes as a less predicate.
@@ -158,10 +154,10 @@
          * @param theKeyIndex the index of the key to use
          * @return true if theLHS is less than theRHS
          */
-        result_type
+        bool
         operator()(
-                first_argument_type     theLHS,
-                second_argument_type    theRHS,
+                const NodeVectorType::value_type&    theLHS,
+                const NodeVectorType::value_type&    theRHS,
                 XalanSize_t             theKeyIndex = 0) const
         {
             return compare(theLHS, theRHS, theKeyIndex) < 0 ? true : false;
@@ -171,15 +167,15 @@
 
         double
         getNumberResult(
-                const NodeSortKey&      theKey,
-                XalanSize_t             theKeyIndex,
-                first_argument_type     theEntry) const;
+                const NodeSortKey&                   theKey,
+                XalanSize_t                          theKeyIndex,
+                const NodeVectorType::value_type&    theEntry) const;
 
         const XalanDOMString&
         getStringResult(
-                const NodeSortKey&      theKey,
-                XalanSize_t             theKeyIndex,
-                first_argument_type     theEntry) const;
+                const NodeSortKey&                   theKey,
+                XalanSize_t                          theKeyIndex,
+                const NodeVectorType::value_type&    theEntry) const;
 
     private:
 
@@ -230,7 +226,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/OutputContextStack.cpp b/src/xalanc/XSLT/OutputContextStack.cpp
index 4865937..31b3ab0 100644
--- a/src/xalanc/XSLT/OutputContextStack.cpp
+++ b/src/xalanc/XSLT/OutputContextStack.cpp
@@ -24,7 +24,7 @@
 #include <xalanc/PlatformSupport/DOMStringHelper.hpp>
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -112,4 +112,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/OutputContextStack.hpp b/src/xalanc/XSLT/OutputContextStack.hpp
index aa52e71..129e5f2 100644
--- a/src/xalanc/XSLT/OutputContextStack.hpp
+++ b/src/xalanc/XSLT/OutputContextStack.hpp
@@ -38,7 +38,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -221,7 +221,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/ProblemListener.cpp b/src/xalanc/XSLT/ProblemListener.cpp
index d23e4cb..fd72d44 100644
--- a/src/xalanc/XSLT/ProblemListener.cpp
+++ b/src/xalanc/XSLT/ProblemListener.cpp
@@ -28,7 +28,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -44,4 +44,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/ProblemListener.hpp b/src/xalanc/XSLT/ProblemListener.hpp
index b043490..5dedc29 100644
--- a/src/xalanc/XSLT/ProblemListener.hpp
+++ b/src/xalanc/XSLT/ProblemListener.hpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -108,7 +108,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/ProblemListenerDefault.cpp b/src/xalanc/XSLT/ProblemListenerDefault.cpp
index 5c6e718..6514d4a 100644
--- a/src/xalanc/XSLT/ProblemListenerDefault.cpp
+++ b/src/xalanc/XSLT/ProblemListenerDefault.cpp
@@ -42,7 +42,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -197,4 +197,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/ProblemListenerDefault.hpp b/src/xalanc/XSLT/ProblemListenerDefault.hpp
index 2c979c8..efdf20b 100644
--- a/src/xalanc/XSLT/ProblemListenerDefault.hpp
+++ b/src/xalanc/XSLT/ProblemListenerDefault.hpp
@@ -30,15 +30,18 @@
 
 
 
-XALAN_DECLARE_XERCES_CLASS(MemoryManager)
+namespace XERCES_CPP_NAMESPACE
+{
+    class MemoryManager;
+}
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
-XALAN_USING_XERCES(MemoryManager)
+using xercesc::MemoryManager;
 
 
 
@@ -151,7 +154,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/ResultNamespacesStack.cpp b/src/xalanc/XSLT/ResultNamespacesStack.cpp
index 75e7154..7a8c93a 100644
--- a/src/xalanc/XSLT/ResultNamespacesStack.cpp
+++ b/src/xalanc/XSLT/ResultNamespacesStack.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -207,4 +207,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/ResultNamespacesStack.hpp b/src/xalanc/XSLT/ResultNamespacesStack.hpp
index e99f587..4fbdd39 100644
--- a/src/xalanc/XSLT/ResultNamespacesStack.hpp
+++ b/src/xalanc/XSLT/ResultNamespacesStack.hpp
@@ -37,7 +37,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -47,11 +47,7 @@
 
 
 #if defined(XALAN_USE_DEQUE_FOR_VECTOR_BOOL)
-    #if defined(XALAN_NO_STD_NAMESPACE)
-    typedef deque<bool>         BoolVectorType;
-    #else
     typedef std::deque<bool>    BoolVectorType;
-    #endif
 #else
     typedef XalanVector<bool>       BoolVectorType;
 #endif
@@ -156,7 +152,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/SelectionEvent.cpp b/src/xalanc/XSLT/SelectionEvent.cpp
index e414785..162c83e 100644
--- a/src/xalanc/XSLT/SelectionEvent.cpp
+++ b/src/xalanc/XSLT/SelectionEvent.cpp
@@ -23,7 +23,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -117,4 +117,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/SelectionEvent.hpp b/src/xalanc/XSLT/SelectionEvent.hpp
index b19ed4f..61f3b12 100644
--- a/src/xalanc/XSLT/SelectionEvent.hpp
+++ b/src/xalanc/XSLT/SelectionEvent.hpp
@@ -33,7 +33,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -179,7 +179,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/Stylesheet.cpp b/src/xalanc/XSLT/Stylesheet.cpp
index dc073a7..6ca7678 100644
--- a/src/xalanc/XSLT/Stylesheet.cpp
+++ b/src/xalanc/XSLT/Stylesheet.cpp
@@ -69,7 +69,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -138,7 +138,7 @@
                 m_baseIdent = urlString;
             }
         }
-        catch(const XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtilsException&)
+        catch(const xercesc::XMLPlatformUtilsException&)
         {
             // Assume that any exception here relates to get the urlString from
             // m_baseIdent.  We'll assume that it's just a fake base identifier
@@ -172,9 +172,7 @@
 
 Stylesheet::~Stylesheet()
 {
-#if !defined(XALAN_NO_STD_NAMESPACE)
     using std::for_each;
-#endif
 
     // Clean up all entries in the imports vector.
     for_each(
@@ -967,7 +965,7 @@
             const XalanMatchPatternData*    thePattern,
             PatternTableVectorType&         theVector)
 {
-    XALAN_USING_STD(find)
+    using std::find;
 
     const PatternTableVectorType::const_iterator    theResult =
         find(
@@ -1683,4 +1681,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/Stylesheet.hpp b/src/xalanc/XSLT/Stylesheet.hpp
index 6883e49..8b78db8 100644
--- a/src/xalanc/XSLT/Stylesheet.hpp
+++ b/src/xalanc/XSLT/Stylesheet.hpp
@@ -54,7 +54,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -884,7 +884,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/StylesheetConstructionContext.cpp b/src/xalanc/XSLT/StylesheetConstructionContext.cpp
index 0ceb5c6..86d5c5e 100644
--- a/src/xalanc/XSLT/StylesheetConstructionContext.cpp
+++ b/src/xalanc/XSLT/StylesheetConstructionContext.cpp
@@ -20,7 +20,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -37,4 +37,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/StylesheetConstructionContext.hpp b/src/xalanc/XSLT/StylesheetConstructionContext.hpp
index 3497093..95a89aa 100644
--- a/src/xalanc/XSLT/StylesheetConstructionContext.hpp
+++ b/src/xalanc/XSLT/StylesheetConstructionContext.hpp
@@ -39,22 +39,25 @@
 
 
 
-XALAN_DECLARE_XERCES_CLASS(AttributeList)
-XALAN_DECLARE_XERCES_CLASS(DocumentHandler)
-XALAN_DECLARE_XERCES_CLASS(Locator)
+namespace XERCES_CPP_NAMESPACE
+{
+    class AttributeList;
+    class DocumentHandler;
+    class Locator;
+}
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
-typedef XERCES_CPP_NAMESPACE_QUALIFIER AttributeList    AttributeListType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER DocumentHandler  DocumentHandlerType;
+typedef xercesc::AttributeList    AttributeListType;
+typedef xercesc::DocumentHandler  DocumentHandlerType;
 
-XALAN_USING_XERCES(AttributeList)
-XALAN_USING_XERCES(DocumentHandler)
-XALAN_USING_XERCES(Locator)
+using xercesc::AttributeList;
+using xercesc::DocumentHandler;
+using xercesc::Locator;
 
 
 
@@ -753,7 +756,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/StylesheetConstructionContextDefault.cpp b/src/xalanc/XSLT/StylesheetConstructionContextDefault.cpp
index c4101a3..02e4b1e 100644
--- a/src/xalanc/XSLT/StylesheetConstructionContextDefault.cpp
+++ b/src/xalanc/XSLT/StylesheetConstructionContextDefault.cpp
@@ -71,7 +71,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -203,7 +203,7 @@
 void
 StylesheetConstructionContextDefault::reset()
 {
-    XALAN_USING_STD(for_each)
+    using std::for_each;
 
     for_each(
             m_stylesheets.begin(),
@@ -319,7 +319,7 @@
 void
 StylesheetConstructionContextDefault::destroy(StylesheetRoot*   theStylesheetRoot)
 {
-    XALAN_USING_STD(find)
+    using std::find;
 
     const StylesheetVectorType::iterator    i =
         find(
@@ -2052,4 +2052,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/StylesheetConstructionContextDefault.hpp b/src/xalanc/XSLT/StylesheetConstructionContextDefault.hpp
index a3152e9..e5aa290 100644
--- a/src/xalanc/XSLT/StylesheetConstructionContextDefault.hpp
+++ b/src/xalanc/XSLT/StylesheetConstructionContextDefault.hpp
@@ -80,7 +80,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -628,7 +628,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/StylesheetExecutionContext.cpp b/src/xalanc/XSLT/StylesheetExecutionContext.cpp
index 685319d..642519f 100644
--- a/src/xalanc/XSLT/StylesheetExecutionContext.cpp
+++ b/src/xalanc/XSLT/StylesheetExecutionContext.cpp
@@ -28,7 +28,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -90,4 +90,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/StylesheetExecutionContext.hpp b/src/xalanc/XSLT/StylesheetExecutionContext.hpp
index 3e8c599..b115974 100644
--- a/src/xalanc/XSLT/StylesheetExecutionContext.hpp
+++ b/src/xalanc/XSLT/StylesheetExecutionContext.hpp
@@ -62,13 +62,11 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
 using std::FILE;
-#endif
 
 
 
@@ -113,11 +111,7 @@
 
     typedef FormatterListener::size_type    fl_size_type;
 
-#if defined(XALAN_NO_STD_NAMESPACE)
-    typedef ostream         StreamType;
-#else
     typedef std::ostream    StreamType;
-#endif
 
     explicit
     StylesheetExecutionContext(
@@ -2050,7 +2044,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/StylesheetExecutionContextDefault.cpp b/src/xalanc/XSLT/StylesheetExecutionContextDefault.cpp
index 5338d37..255f92d 100644
--- a/src/xalanc/XSLT/StylesheetExecutionContextDefault.cpp
+++ b/src/xalanc/XSLT/StylesheetExecutionContextDefault.cpp
@@ -80,7 +80,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -607,11 +607,7 @@
         if (i != m_matchPatternCache.end())
         {
             // Update hit time...
-#if defined(XALAN_STRICT_ANSI_HEADERS)
             (*i).second.second = std::clock();
-#else
-            (*i).second.second = clock();
-#endif
 
             theResult = (*i).second.first;
         }
@@ -1268,7 +1264,7 @@
 {
     assert(theElement != 0);
 
-    XALAN_USING_STD(find)
+    using std::find;
 
     const ElementTemplateElementStackType::const_iterator   i =
                 find(m_elementRecursionStack.begin(),
@@ -1673,7 +1669,7 @@
             const XalanDOMChar*                 theRHS,
             XalanCollationServices::eCaseOrder  /* theCaseOrder */) const
 {
-    return XALAN_CPP_NAMESPACE :: collationCompare(theLHS, theRHS);
+    return xalanc::collationCompare(theLHS, theRHS);
 }
 
 
@@ -2571,7 +2567,7 @@
 void
 StylesheetExecutionContextDefault::clearXPathCache()
 {
-    XALAN_USING_STD(for_each)
+    using std::for_each;
 
     assert(m_matchPatternCache.empty() == true || m_xsltProcessor != 0);
 
@@ -2594,11 +2590,7 @@
 {
     assert(m_xsltProcessor != 0);
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
     ClockType   addClock = std::clock();
-#else
-    ClockType   addClock = clock();
-#endif
 
     if (m_matchPatternCache.size() == eXPathCacheMax)
     {
@@ -2651,7 +2643,7 @@
 void
 StylesheetExecutionContextDefault::cleanUpTransients()
 {
-    XALAN_USING_STD(for_each)
+    using std::for_each;
 
     for_each(m_formatterListeners.begin(),
              m_formatterListeners.end(),
@@ -2980,4 +2972,4 @@
 #endif
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/StylesheetExecutionContextDefault.hpp b/src/xalanc/XSLT/StylesheetExecutionContextDefault.hpp
index faeb60d..204789e 100644
--- a/src/xalanc/XSLT/StylesheetExecutionContextDefault.hpp
+++ b/src/xalanc/XSLT/StylesheetExecutionContextDefault.hpp
@@ -72,7 +72,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -89,18 +89,14 @@
 {
 public:
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
     typedef std::clock_t    ClockType;
-#else
-    typedef clock_t         ClockType;
-#endif
 
     typedef XalanVector<FormatterListener*>             FormatterListenerVectorType;
     typedef XalanVector<PrintWriter*>                   PrintWriterVectorType;
     typedef XalanVector<XalanOutputStream*>             OutputStreamVectorType;
 
     typedef XalanVector<const ElemTemplateElement*> ElementTemplateElementStackType;
-    typedef XALAN_STD_QUALIFIER pair<const XPath*, ClockType>       XPathCacheEntry;
+    typedef std::pair<const XPath*, ClockType>       XPathCacheEntry;
     typedef XalanMap <XalanDOMString, XPathCacheEntry>              XPathCacheMapType;
     typedef XalanVector<const ElemTemplate*>            CurrentTemplateStackType;
 
@@ -1267,7 +1263,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/StylesheetHandler.cpp b/src/xalanc/XSLT/StylesheetHandler.cpp
index 0262201..0f9599c 100644
--- a/src/xalanc/XSLT/StylesheetHandler.cpp
+++ b/src/xalanc/XSLT/StylesheetHandler.cpp
@@ -63,7 +63,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -1747,7 +1747,7 @@
 bool
 StylesheetHandler::inExtensionElement() const
 {
-    XALAN_USING_STD(find)
+    using std::find;
 
     if (!(find(
             m_inExtensionElementStack.begin(),
@@ -1998,4 +1998,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/StylesheetHandler.hpp b/src/xalanc/XSLT/StylesheetHandler.hpp
index be467df..3ae2352 100644
--- a/src/xalanc/XSLT/StylesheetHandler.hpp
+++ b/src/xalanc/XSLT/StylesheetHandler.hpp
@@ -48,7 +48,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -786,7 +786,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/StylesheetRoot.cpp b/src/xalanc/XSLT/StylesheetRoot.cpp
index 1d3740f..109be5f 100644
--- a/src/xalanc/XSLT/StylesheetRoot.cpp
+++ b/src/xalanc/XSLT/StylesheetRoot.cpp
@@ -73,7 +73,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -188,7 +188,7 @@
     }
     else if (m_cdataSectionElems.empty() == false)
     {
-        XALAN_USING_STD(sort)
+        using std::sort;
 
         sort(
             m_cdataSectionElems.begin(),
@@ -758,7 +758,7 @@
 bool
 StylesheetRoot::isCDATASectionElementName(const XalanQName&     theQName) const
 {
-    XALAN_USING_STD(find_if)
+    using std::find_if;
 
     return find_if(
             m_cdataSectionElems.begin(),
@@ -1021,4 +1021,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/StylesheetRoot.hpp b/src/xalanc/XSLT/StylesheetRoot.hpp
index daf55c8..1cc7cab 100644
--- a/src/xalanc/XSLT/StylesheetRoot.hpp
+++ b/src/xalanc/XSLT/StylesheetRoot.hpp
@@ -42,7 +42,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -644,7 +644,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/TopLevelArg.cpp b/src/xalanc/XSLT/TopLevelArg.cpp
index 0043035..ffd05c5 100644
--- a/src/xalanc/XSLT/TopLevelArg.cpp
+++ b/src/xalanc/XSLT/TopLevelArg.cpp
@@ -20,7 +20,7 @@
 
 #include <xalanc/Include/XalanMemMgrAutoPtr.hpp>
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -111,4 +111,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/TopLevelArg.hpp b/src/xalanc/XSLT/TopLevelArg.hpp
index d4e5823..2464e0d 100644
--- a/src/xalanc/XSLT/TopLevelArg.hpp
+++ b/src/xalanc/XSLT/TopLevelArg.hpp
@@ -36,7 +36,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -160,7 +160,7 @@
 
 XALAN_USES_MEMORY_MANAGER(TopLevelArg)
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/TraceListener.cpp b/src/xalanc/XSLT/TraceListener.cpp
index 5422f6a..24f613e 100644
--- a/src/xalanc/XSLT/TraceListener.cpp
+++ b/src/xalanc/XSLT/TraceListener.cpp
@@ -20,7 +20,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -36,4 +36,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/TraceListener.hpp b/src/xalanc/XSLT/TraceListener.hpp
index 6460204..583423d 100644
--- a/src/xalanc/XSLT/TraceListener.hpp
+++ b/src/xalanc/XSLT/TraceListener.hpp
@@ -23,7 +23,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -119,7 +119,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/TraceListenerDefault.cpp b/src/xalanc/XSLT/TraceListenerDefault.cpp
index d2a0685..e6d9e15 100644
--- a/src/xalanc/XSLT/TraceListenerDefault.cpp
+++ b/src/xalanc/XSLT/TraceListenerDefault.cpp
@@ -47,7 +47,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -442,4 +442,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/TraceListenerDefault.hpp b/src/xalanc/XSLT/TraceListenerDefault.hpp
index d31e46e..0674ecf 100644
--- a/src/xalanc/XSLT/TraceListenerDefault.hpp
+++ b/src/xalanc/XSLT/TraceListenerDefault.hpp
@@ -32,7 +32,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -153,7 +153,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/TracerEvent.cpp b/src/xalanc/XSLT/TracerEvent.cpp
index bbded53..316cad6 100644
--- a/src/xalanc/XSLT/TracerEvent.cpp
+++ b/src/xalanc/XSLT/TracerEvent.cpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -147,4 +147,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/TracerEvent.hpp b/src/xalanc/XSLT/TracerEvent.hpp
index ef6ec33..edaa8b4 100644
--- a/src/xalanc/XSLT/TracerEvent.hpp
+++ b/src/xalanc/XSLT/TracerEvent.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -107,7 +107,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/VariablesStack.cpp b/src/xalanc/XSLT/VariablesStack.cpp
index 0d2cdd2..222658e 100644
--- a/src/xalanc/XSLT/VariablesStack.cpp
+++ b/src/xalanc/XSLT/VariablesStack.cpp
@@ -36,7 +36,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -236,7 +236,7 @@
     // parameters, the stack stays in a consistent state.
     CommitPushParams    thePusher(*this);
 
-    XALAN_USING_STD(for_each)
+    using std::for_each;
 
     for_each(theParams.begin(), theParams.end(), PushParamFunctor(*this));
 
@@ -385,7 +385,7 @@
                 XalanNode* const    doc = executionContext.getRootDocument();
                 assert(doc != 0);
 
-                XALAN_USING_STD(find)
+                using std::find;
 
                 // See if the ElemVariable instance is already being evaluated...
                 if (find(m_guardStack.begin(), m_guardStack.end(), var) != m_guardStack.end())
@@ -810,4 +810,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/VariablesStack.hpp b/src/xalanc/XSLT/VariablesStack.hpp
index 1fa66e0..1d84c61 100644
--- a/src/xalanc/XSLT/VariablesStack.hpp
+++ b/src/xalanc/XSLT/VariablesStack.hpp
@@ -42,7 +42,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -599,7 +599,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/XResultTreeFrag.cpp b/src/xalanc/XSLT/XResultTreeFrag.cpp
index 91a1f92..7790da0 100644
--- a/src/xalanc/XSLT/XResultTreeFrag.cpp
+++ b/src/xalanc/XSLT/XResultTreeFrag.cpp
@@ -45,7 +45,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -358,4 +358,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/XResultTreeFrag.hpp b/src/xalanc/XSLT/XResultTreeFrag.hpp
index feb70ed..2b7ec94 100644
--- a/src/xalanc/XSLT/XResultTreeFrag.hpp
+++ b/src/xalanc/XSLT/XResultTreeFrag.hpp
@@ -39,7 +39,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -178,7 +178,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/XResultTreeFragAllocator.cpp b/src/xalanc/XSLT/XResultTreeFragAllocator.cpp
index 0ab543d..b52e046 100644
--- a/src/xalanc/XSLT/XResultTreeFragAllocator.cpp
+++ b/src/xalanc/XSLT/XResultTreeFragAllocator.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -85,4 +85,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/XResultTreeFragAllocator.hpp b/src/xalanc/XSLT/XResultTreeFragAllocator.hpp
index af935cb..1c889c9 100644
--- a/src/xalanc/XSLT/XResultTreeFragAllocator.hpp
+++ b/src/xalanc/XSLT/XResultTreeFragAllocator.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -144,7 +144,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/XSLTEngineImpl.cpp b/src/xalanc/XSLT/XSLTEngineImpl.cpp
index 2082fec..50b15d3 100644
--- a/src/xalanc/XSLT/XSLTEngineImpl.cpp
+++ b/src/xalanc/XSLT/XSLTEngineImpl.cpp
@@ -114,7 +114,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 const XalanDOMString    XSLTEngineImpl::s_emptyString(XalanMemMgrs::getDummyMemMgr());
@@ -559,7 +559,7 @@
             {
                 URISupport::getURLStringFromString(theSystemID, xmlIdentifier);
             }
-            catch(const XERCES_CPP_NAMESPACE_QUALIFIER XMLException&)
+            catch(const xercesc::XMLException&)
             {
                 xmlIdentifier = theSystemID;
             }
@@ -632,7 +632,7 @@
         }
         else if (theXMLResolver != 0)
         {
-            XALAN_USING_XERCES(XMLResourceIdentifier);
+            using xercesc::XMLResourceIdentifier;;
 
             XMLResourceIdentifier   theIndentifier(
                 XMLResourceIdentifier::ExternalEntity,
@@ -932,7 +932,7 @@
                             localXSLURLString);
             }
         }
-        catch(const XERCES_CPP_NAMESPACE_QUALIFIER XMLException&)
+        catch(const xercesc::XMLException&)
         {
         }
 
@@ -1026,7 +1026,7 @@
 void
 XSLTEngineImpl::removeTraceListener(TraceListener*  tl)
 {
-    XALAN_USING_STD(remove)
+    using std::remove;
 
     const TraceListenerVectorType::iterator     i =
         remove(
@@ -1042,7 +1042,7 @@
 void
 XSLTEngineImpl::fireGenerateEvent(const GenerateEvent&  ge)
 {
-    XALAN_USING_STD(for_each)
+    using std::for_each;
 
     for_each(
         m_traceListeners.begin(),
@@ -1055,7 +1055,7 @@
 void
 XSLTEngineImpl::fireSelectEvent(const SelectionEvent&   se)
 {
-    XALAN_USING_STD(for_each)
+    using std::for_each;
 
     for_each(
         m_traceListeners.begin(),
@@ -1068,7 +1068,7 @@
 void
 XSLTEngineImpl::fireTraceEvent(const TracerEvent& te)
 {
-    XALAN_USING_STD(for_each)
+    using std::for_each;
 
     for_each(
         m_traceListeners.begin(),
@@ -2805,7 +2805,7 @@
 
             const XalanDOMString&   nodeName = attr->getNodeName();
 
-            XALAN_USING_STD(find_if)
+            using std::find_if;
 
             if (find_if(
                     m_attributeNamesVisited.begin(),
@@ -3226,12 +3226,12 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
-XALAN_USING_XALAN(XalanDOMString)
+using xalanc::XalanDOMString;
 
-XALAN_USING_XALAN(XalanMemMgrs)
+using xalanc::XalanMemMgrs;
 
 static XalanDOMString   s_XSLNameSpaceURL(XalanMemMgrs::getDummyMemMgr());
 
@@ -3257,7 +3257,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -3429,4 +3429,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/XSLTEngineImpl.hpp b/src/xalanc/XSLT/XSLTEngineImpl.hpp
index 592cefa..49d418f 100644
--- a/src/xalanc/XSLT/XSLTEngineImpl.hpp
+++ b/src/xalanc/XSLT/XSLTEngineImpl.hpp
@@ -78,20 +78,23 @@
 
 
 
-XALAN_DECLARE_XERCES_CLASS(InputSource)
-XALAN_DECLARE_XERCES_CLASS(DocumentHandler)
+namespace XERCES_CPP_NAMESPACE
+{
+    class InputSource;
+    class DocumentHandler;
+}
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
-typedef XERCES_CPP_NAMESPACE_QUALIFIER InputSource      InputSourceType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER DocumentHandler  DocumentHandlerType;
+typedef xercesc::InputSource      InputSourceType;
+typedef xercesc::DocumentHandler  DocumentHandlerType;
 
-XALAN_USING_XERCES(InputSource)
-XALAN_USING_XERCES(DocumentHandler)
+using xercesc::InputSource;
+using xercesc::DocumentHandler;
 
 
 
@@ -1700,7 +1703,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/XSLTInit.cpp b/src/xalanc/XSLT/XSLTInit.cpp
index aaae3af..f887555 100644
--- a/src/xalanc/XSLT/XSLTInit.cpp
+++ b/src/xalanc/XSLT/XSLTInit.cpp
@@ -27,7 +27,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -124,4 +124,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/XSLTInit.hpp b/src/xalanc/XSLT/XSLTInit.hpp
index 86f9d64..297a7d8 100644
--- a/src/xalanc/XSLT/XSLTInit.hpp
+++ b/src/xalanc/XSLT/XSLTInit.hpp
@@ -46,7 +46,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -94,7 +94,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/XSLTInputSource.cpp b/src/xalanc/XSLT/XSLTInputSource.cpp
index 58ed4a3..88b0620 100644
--- a/src/xalanc/XSLT/XSLTInputSource.cpp
+++ b/src/xalanc/XSLT/XSLTInputSource.cpp
@@ -22,9 +22,7 @@
 
 #include <cassert>
 
-#if !defined(XALAN_CLASSIC_IOSTREAMS)
 #include <istream>
-#endif
 
 
 
@@ -34,7 +32,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -257,7 +255,7 @@
 
         if (theSystemId != 0)
         {
-            XALAN_USING_XERCES(XMLURL)
+            using xercesc::XMLURL;
 
             XMLURL  theURL(theManager);
 
@@ -272,4 +270,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/XSLTInputSource.hpp b/src/xalanc/XSLT/XSLTInputSource.hpp
index 5742de3..90a159c 100644
--- a/src/xalanc/XSLT/XSLTInputSource.hpp
+++ b/src/xalanc/XSLT/XSLTInputSource.hpp
@@ -26,11 +26,7 @@
 
 
 
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <iostream.h>
-#else
 #include <iosfwd>
-#endif
 
 
 
@@ -42,17 +38,20 @@
 
 
 
-XALAN_DECLARE_XERCES_CLASS(Locator)
+namespace XERCES_CPP_NAMESPACE
+{
+    class Locator;
+}
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
-typedef XERCES_CPP_NAMESPACE_QUALIFIER BinInputStream   BinInputStreamType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER InputSource      InputSourceType;
-XALAN_USING_XERCES(MemoryManager)
+typedef xercesc::BinInputStream   BinInputStreamType;
+typedef xercesc::InputSource      InputSourceType;
+using xercesc::MemoryManager;
 
 
 class XalanDOMString;
@@ -64,11 +63,7 @@
 {
 public:
 
-#if defined(XALAN_NO_STD_NAMESPACE)
-    typedef istream         StreamType;
-#else
     typedef std::istream    StreamType;
-#endif
 
     explicit
     XSLTInputSource(MemoryManager&  theMemoryManager = XalanMemMgrs::getDefault());
@@ -274,7 +269,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/XSLTProcessor.cpp b/src/xalanc/XSLT/XSLTProcessor.cpp
index 5a7fab2..8dc9876 100644
--- a/src/xalanc/XSLT/XSLTProcessor.cpp
+++ b/src/xalanc/XSLT/XSLTProcessor.cpp
@@ -24,7 +24,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -41,4 +41,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/XSLTProcessor.hpp b/src/xalanc/XSLT/XSLTProcessor.hpp
index dbccfb0..f5f4978 100644
--- a/src/xalanc/XSLT/XSLTProcessor.hpp
+++ b/src/xalanc/XSLT/XSLTProcessor.hpp
@@ -34,15 +34,18 @@
 
 
 
-XALAN_DECLARE_XERCES_CLASS(Locator)
+namespace XERCES_CPP_NAMESPACE
+{
+    class Locator;
+}
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
-XALAN_USING_XERCES(Locator);
+using xercesc::Locator;;
 
 
 
@@ -385,7 +388,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/XSLTProcessorEnvSupport.cpp b/src/xalanc/XSLT/XSLTProcessorEnvSupport.cpp
index e22c219..91b84c1 100644
--- a/src/xalanc/XSLT/XSLTProcessorEnvSupport.cpp
+++ b/src/xalanc/XSLT/XSLTProcessorEnvSupport.cpp
@@ -19,7 +19,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -36,4 +36,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/XSLTProcessorEnvSupport.hpp b/src/xalanc/XSLT/XSLTProcessorEnvSupport.hpp
index e2f5aca..f58778a 100644
--- a/src/xalanc/XSLT/XSLTProcessorEnvSupport.hpp
+++ b/src/xalanc/XSLT/XSLTProcessorEnvSupport.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -120,7 +120,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/XSLTProcessorEnvSupportDefault.cpp b/src/xalanc/XSLT/XSLTProcessorEnvSupportDefault.cpp
index db82d2e..aa13f45 100644
--- a/src/xalanc/XSLT/XSLTProcessorEnvSupportDefault.cpp
+++ b/src/xalanc/XSLT/XSLTProcessorEnvSupportDefault.cpp
@@ -56,7 +56,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -179,7 +179,7 @@
             }
             else if (theXMLResolver != 0)
             {
-                XALAN_USING_XERCES(XMLResourceIdentifier);
+                using xercesc::XMLResourceIdentifier;;
 
                 XMLResourceIdentifier   theIndentifier(
                     XMLResourceIdentifier::ExternalEntity,
@@ -329,4 +329,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/XSLTProcessorEnvSupportDefault.hpp b/src/xalanc/XSLT/XSLTProcessorEnvSupportDefault.hpp
index c1bb292..4ae0ef2 100644
--- a/src/xalanc/XSLT/XSLTProcessorEnvSupportDefault.hpp
+++ b/src/xalanc/XSLT/XSLTProcessorEnvSupportDefault.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -193,7 +193,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/XSLTProcessorException.cpp b/src/xalanc/XSLT/XSLTProcessorException.cpp
index 0ed5bb1..33010ba 100644
--- a/src/xalanc/XSLT/XSLTProcessorException.cpp
+++ b/src/xalanc/XSLT/XSLTProcessorException.cpp
@@ -24,7 +24,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 const XalanDOMChar  XSLTProcessorException::m_type[] = 
 {   
@@ -85,4 +85,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/XSLTProcessorException.hpp b/src/xalanc/XSLT/XSLTProcessorException.hpp
index 6f04ee7..961c44a 100644
--- a/src/xalanc/XSLT/XSLTProcessorException.hpp
+++ b/src/xalanc/XSLT/XSLTProcessorException.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -77,7 +77,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/XSLTResultTarget.cpp b/src/xalanc/XSLT/XSLTResultTarget.cpp
index 685ca85..d4ffc5d 100644
--- a/src/xalanc/XSLT/XSLTResultTarget.cpp
+++ b/src/xalanc/XSLT/XSLTResultTarget.cpp
@@ -23,15 +23,11 @@
 
 #include <cassert>
 
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <iostream.h>
-#else
 #include <ostream>
-#endif
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -170,4 +166,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/XSLTResultTarget.hpp b/src/xalanc/XSLT/XSLTResultTarget.hpp
index 69699c4..003e77f 100644
--- a/src/xalanc/XSLT/XSLTResultTarget.hpp
+++ b/src/xalanc/XSLT/XSLTResultTarget.hpp
@@ -25,11 +25,7 @@
 
 
 #include <cstdio>
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-class ostream;
-#else
 #include <iosfwd>
-#endif
 
 
 
@@ -37,7 +33,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -50,15 +46,9 @@
 {
 public:
 
-#if defined(XALAN_NO_STD_NAMESPACE)
-    typedef ostream         StreamType;
-#else
     typedef std::ostream    StreamType;
-#endif
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
     typedef std::FILE   FILE;
-#endif
 
 
     explicit
@@ -326,7 +316,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/XalanAVTAllocator.cpp b/src/xalanc/XSLT/XalanAVTAllocator.cpp
index f5ea1ea..5d87f46 100644
--- a/src/xalanc/XSLT/XalanAVTAllocator.cpp
+++ b/src/xalanc/XSLT/XalanAVTAllocator.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -64,4 +64,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/XalanAVTAllocator.hpp b/src/xalanc/XSLT/XalanAVTAllocator.hpp
index 80dc510..a78e991 100644
--- a/src/xalanc/XSLT/XalanAVTAllocator.hpp
+++ b/src/xalanc/XSLT/XalanAVTAllocator.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -137,7 +137,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/XalanAVTPartSimpleAllocator.cpp b/src/xalanc/XSLT/XalanAVTPartSimpleAllocator.cpp
index 3b045c5..0e34985 100644
--- a/src/xalanc/XSLT/XalanAVTPartSimpleAllocator.cpp
+++ b/src/xalanc/XSLT/XalanAVTPartSimpleAllocator.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -57,4 +57,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/XalanAVTPartSimpleAllocator.hpp b/src/xalanc/XSLT/XalanAVTPartSimpleAllocator.hpp
index e1ebe09..3260490 100644
--- a/src/xalanc/XSLT/XalanAVTPartSimpleAllocator.hpp
+++ b/src/xalanc/XSLT/XalanAVTPartSimpleAllocator.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -133,7 +133,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/XalanAVTPartXPathAllocator.cpp b/src/xalanc/XSLT/XalanAVTPartXPathAllocator.cpp
index 97ebf88..73a7965 100644
--- a/src/xalanc/XSLT/XalanAVTPartXPathAllocator.cpp
+++ b/src/xalanc/XSLT/XalanAVTPartXPathAllocator.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -54,4 +54,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/XalanAVTPartXPathAllocator.hpp b/src/xalanc/XSLT/XalanAVTPartXPathAllocator.hpp
index 637499d..ee28627 100644
--- a/src/xalanc/XSLT/XalanAVTPartXPathAllocator.hpp
+++ b/src/xalanc/XSLT/XalanAVTPartXPathAllocator.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -128,7 +128,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/XalanElemApplyTemplatesAllocator.cpp b/src/xalanc/XSLT/XalanElemApplyTemplatesAllocator.cpp
index d43b7db..9b4926b 100644
--- a/src/xalanc/XSLT/XalanElemApplyTemplatesAllocator.cpp
+++ b/src/xalanc/XSLT/XalanElemApplyTemplatesAllocator.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -66,4 +66,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/XalanElemApplyTemplatesAllocator.hpp b/src/xalanc/XSLT/XalanElemApplyTemplatesAllocator.hpp
index f198fa1..c10344f 100644
--- a/src/xalanc/XSLT/XalanElemApplyTemplatesAllocator.hpp
+++ b/src/xalanc/XSLT/XalanElemApplyTemplatesAllocator.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -139,7 +139,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/XalanElemAttributeAllocator.cpp b/src/xalanc/XSLT/XalanElemAttributeAllocator.cpp
index 2b5bf61..ce9436d 100644
--- a/src/xalanc/XSLT/XalanElemAttributeAllocator.cpp
+++ b/src/xalanc/XSLT/XalanElemAttributeAllocator.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -66,4 +66,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/XalanElemAttributeAllocator.hpp b/src/xalanc/XSLT/XalanElemAttributeAllocator.hpp
index a9e0520..dd39785 100644
--- a/src/xalanc/XSLT/XalanElemAttributeAllocator.hpp
+++ b/src/xalanc/XSLT/XalanElemAttributeAllocator.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -139,7 +139,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/XalanElemAttributeSetAllocator.cpp b/src/xalanc/XSLT/XalanElemAttributeSetAllocator.cpp
index 4f19afa..48436e5 100644
--- a/src/xalanc/XSLT/XalanElemAttributeSetAllocator.cpp
+++ b/src/xalanc/XSLT/XalanElemAttributeSetAllocator.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -66,4 +66,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/XalanElemAttributeSetAllocator.hpp b/src/xalanc/XSLT/XalanElemAttributeSetAllocator.hpp
index f6eda09..60a3b57 100644
--- a/src/xalanc/XSLT/XalanElemAttributeSetAllocator.hpp
+++ b/src/xalanc/XSLT/XalanElemAttributeSetAllocator.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -139,7 +139,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/XalanElemCallTemplateAllocator.cpp b/src/xalanc/XSLT/XalanElemCallTemplateAllocator.cpp
index 5d8b24e..56ccde4 100644
--- a/src/xalanc/XSLT/XalanElemCallTemplateAllocator.cpp
+++ b/src/xalanc/XSLT/XalanElemCallTemplateAllocator.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -68,4 +68,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/XalanElemCallTemplateAllocator.hpp b/src/xalanc/XSLT/XalanElemCallTemplateAllocator.hpp
index 3c7e7d7..7414819 100644
--- a/src/xalanc/XSLT/XalanElemCallTemplateAllocator.hpp
+++ b/src/xalanc/XSLT/XalanElemCallTemplateAllocator.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -139,7 +139,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/XalanElemElementAllocator.cpp b/src/xalanc/XSLT/XalanElemElementAllocator.cpp
index 6e1376d..4173fc1 100644
--- a/src/xalanc/XSLT/XalanElemElementAllocator.cpp
+++ b/src/xalanc/XSLT/XalanElemElementAllocator.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -66,4 +66,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/XalanElemElementAllocator.hpp b/src/xalanc/XSLT/XalanElemElementAllocator.hpp
index 4c66291..cf6c243 100644
--- a/src/xalanc/XSLT/XalanElemElementAllocator.hpp
+++ b/src/xalanc/XSLT/XalanElemElementAllocator.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -139,7 +139,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/XalanElemEmptyAllocator.cpp b/src/xalanc/XSLT/XalanElemEmptyAllocator.cpp
index 72a4815..c8be1e6 100644
--- a/src/xalanc/XSLT/XalanElemEmptyAllocator.cpp
+++ b/src/xalanc/XSLT/XalanElemEmptyAllocator.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -86,4 +86,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/XalanElemEmptyAllocator.hpp b/src/xalanc/XSLT/XalanElemEmptyAllocator.hpp
index 51c953f..abdd359 100644
--- a/src/xalanc/XSLT/XalanElemEmptyAllocator.hpp
+++ b/src/xalanc/XSLT/XalanElemEmptyAllocator.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -159,7 +159,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/XalanElemLiteralResultAllocator.cpp b/src/xalanc/XSLT/XalanElemLiteralResultAllocator.cpp
index 6012359..cf58855 100644
--- a/src/xalanc/XSLT/XalanElemLiteralResultAllocator.cpp
+++ b/src/xalanc/XSLT/XalanElemLiteralResultAllocator.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -66,4 +66,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/XalanElemLiteralResultAllocator.hpp b/src/xalanc/XSLT/XalanElemLiteralResultAllocator.hpp
index 5616476..d1b6667 100644
--- a/src/xalanc/XSLT/XalanElemLiteralResultAllocator.hpp
+++ b/src/xalanc/XSLT/XalanElemLiteralResultAllocator.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -141,7 +141,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/XalanElemTemplateAllocator.cpp b/src/xalanc/XSLT/XalanElemTemplateAllocator.cpp
index 0fb3fe6..4c38e0d 100644
--- a/src/xalanc/XSLT/XalanElemTemplateAllocator.cpp
+++ b/src/xalanc/XSLT/XalanElemTemplateAllocator.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -64,4 +64,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/XalanElemTemplateAllocator.hpp b/src/xalanc/XSLT/XalanElemTemplateAllocator.hpp
index 9e591cf..3de1f06 100644
--- a/src/xalanc/XSLT/XalanElemTemplateAllocator.hpp
+++ b/src/xalanc/XSLT/XalanElemTemplateAllocator.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -139,7 +139,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/XalanElemTextAllocator.cpp b/src/xalanc/XSLT/XalanElemTextAllocator.cpp
index d41200d..f857c4d 100644
--- a/src/xalanc/XSLT/XalanElemTextAllocator.cpp
+++ b/src/xalanc/XSLT/XalanElemTextAllocator.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -64,4 +64,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/XalanElemTextAllocator.hpp b/src/xalanc/XSLT/XalanElemTextAllocator.hpp
index c11af7e..f09978c 100644
--- a/src/xalanc/XSLT/XalanElemTextAllocator.hpp
+++ b/src/xalanc/XSLT/XalanElemTextAllocator.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -146,7 +146,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/XalanElemTextLiteralAllocator.cpp b/src/xalanc/XSLT/XalanElemTextLiteralAllocator.cpp
index 2d58f6f..b9a7998 100644
--- a/src/xalanc/XSLT/XalanElemTextLiteralAllocator.cpp
+++ b/src/xalanc/XSLT/XalanElemTextLiteralAllocator.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -72,4 +72,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/XalanElemTextLiteralAllocator.hpp b/src/xalanc/XSLT/XalanElemTextLiteralAllocator.hpp
index b166ec2..d62e258 100644
--- a/src/xalanc/XSLT/XalanElemTextLiteralAllocator.hpp
+++ b/src/xalanc/XSLT/XalanElemTextLiteralAllocator.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -147,7 +147,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/XalanElemValueOfAllocator.cpp b/src/xalanc/XSLT/XalanElemValueOfAllocator.cpp
index 94bd04e..ea37d46 100644
--- a/src/xalanc/XSLT/XalanElemValueOfAllocator.cpp
+++ b/src/xalanc/XSLT/XalanElemValueOfAllocator.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -64,4 +64,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/XalanElemValueOfAllocator.hpp b/src/xalanc/XSLT/XalanElemValueOfAllocator.hpp
index 52e6551..2a3cd76 100644
--- a/src/xalanc/XSLT/XalanElemValueOfAllocator.hpp
+++ b/src/xalanc/XSLT/XalanElemValueOfAllocator.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -139,7 +139,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/XalanElemVariableAllocator.cpp b/src/xalanc/XSLT/XalanElemVariableAllocator.cpp
index fd22199..35936dc 100644
--- a/src/xalanc/XSLT/XalanElemVariableAllocator.cpp
+++ b/src/xalanc/XSLT/XalanElemVariableAllocator.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -64,4 +64,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/XalanElemVariableAllocator.hpp b/src/xalanc/XSLT/XalanElemVariableAllocator.hpp
index 5810c71..1115fea 100644
--- a/src/xalanc/XSLT/XalanElemVariableAllocator.hpp
+++ b/src/xalanc/XSLT/XalanElemVariableAllocator.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -139,7 +139,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/XalanMatchPatternData.cpp b/src/xalanc/XSLT/XalanMatchPatternData.cpp
index f2c6a8c..9f486b8 100644
--- a/src/xalanc/XSLT/XalanMatchPatternData.cpp
+++ b/src/xalanc/XSLT/XalanMatchPatternData.cpp
@@ -28,7 +28,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -50,4 +50,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/XalanMatchPatternData.hpp b/src/xalanc/XSLT/XalanMatchPatternData.hpp
index c98f63d..2c77cc1 100644
--- a/src/xalanc/XSLT/XalanMatchPatternData.hpp
+++ b/src/xalanc/XSLT/XalanMatchPatternData.hpp
@@ -38,7 +38,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 class ElemTemplate;
@@ -56,11 +56,7 @@
 
     typedef XPath::eMatchScore  eMatchScore;
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
     typedef std::size_t     size_type;
-#else
-    typedef size_t          size_type;
-#endif
 
 
     /**
@@ -178,7 +174,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/XalanMatchPatternDataAllocator.cpp b/src/xalanc/XSLT/XalanMatchPatternDataAllocator.cpp
index 894465d..240e82d 100644
--- a/src/xalanc/XSLT/XalanMatchPatternDataAllocator.cpp
+++ b/src/xalanc/XSLT/XalanMatchPatternDataAllocator.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -67,4 +67,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/XalanMatchPatternDataAllocator.hpp b/src/xalanc/XSLT/XalanMatchPatternDataAllocator.hpp
index 0f2ab2d..d06e151 100644
--- a/src/xalanc/XSLT/XalanMatchPatternDataAllocator.hpp
+++ b/src/xalanc/XSLT/XalanMatchPatternDataAllocator.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -145,7 +145,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/XalanNumberingResourceBundle.cpp b/src/xalanc/XSLT/XalanNumberingResourceBundle.cpp
index 20363c6..38e2ff3 100644
--- a/src/xalanc/XSLT/XalanNumberingResourceBundle.cpp
+++ b/src/xalanc/XSLT/XalanNumberingResourceBundle.cpp
@@ -20,7 +20,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -170,4 +170,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/XalanNumberingResourceBundle.hpp b/src/xalanc/XSLT/XalanNumberingResourceBundle.hpp
index 8c91bfb..57bc361 100644
--- a/src/xalanc/XSLT/XalanNumberingResourceBundle.hpp
+++ b/src/xalanc/XSLT/XalanNumberingResourceBundle.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 XALAN_USES_MEMORY_MANAGER(XalanDOMCharVectorType)
 
@@ -224,7 +224,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/XalanParamHolder.hpp b/src/xalanc/XSLT/XalanParamHolder.hpp
index 1e5d26b..9a048f9 100644
--- a/src/xalanc/XSLT/XalanParamHolder.hpp
+++ b/src/xalanc/XSLT/XalanParamHolder.hpp
@@ -32,11 +32,11 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
-XALAN_USING_XERCES(MemoryManager)
+using xercesc::MemoryManager;
 
 
 
@@ -90,7 +90,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/XalanSourceTreeDocumentAllocator.cpp b/src/xalanc/XSLT/XalanSourceTreeDocumentAllocator.cpp
index 7287895..028bd88 100644
--- a/src/xalanc/XSLT/XalanSourceTreeDocumentAllocator.cpp
+++ b/src/xalanc/XSLT/XalanSourceTreeDocumentAllocator.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -119,4 +119,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/XalanSourceTreeDocumentAllocator.hpp b/src/xalanc/XSLT/XalanSourceTreeDocumentAllocator.hpp
index bb3b3e9..614b68e 100644
--- a/src/xalanc/XSLT/XalanSourceTreeDocumentAllocator.hpp
+++ b/src/xalanc/XSLT/XalanSourceTreeDocumentAllocator.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -182,7 +182,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/XalanSourceTreeDocumentFragmentAllocator.cpp b/src/xalanc/XSLT/XalanSourceTreeDocumentFragmentAllocator.cpp
index 79c3752..29eec05 100644
--- a/src/xalanc/XSLT/XalanSourceTreeDocumentFragmentAllocator.cpp
+++ b/src/xalanc/XSLT/XalanSourceTreeDocumentFragmentAllocator.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -86,4 +86,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/XalanSourceTreeDocumentFragmentAllocator.hpp b/src/xalanc/XSLT/XalanSourceTreeDocumentFragmentAllocator.hpp
index 67be855..ab48456 100644
--- a/src/xalanc/XSLT/XalanSourceTreeDocumentFragmentAllocator.hpp
+++ b/src/xalanc/XSLT/XalanSourceTreeDocumentFragmentAllocator.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -134,7 +134,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XSLT/XalanSpaceNodeTester.cpp b/src/xalanc/XSLT/XalanSpaceNodeTester.cpp
index 64d1bb8..23459ad 100644
--- a/src/xalanc/XSLT/XalanSpaceNodeTester.cpp
+++ b/src/xalanc/XSLT/XalanSpaceNodeTester.cpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -80,4 +80,4 @@
     
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XSLT/XalanSpaceNodeTester.hpp b/src/xalanc/XSLT/XalanSpaceNodeTester.hpp
index ab2f6ef..8be9cbc 100644
--- a/src/xalanc/XSLT/XalanSpaceNodeTester.hpp
+++ b/src/xalanc/XSLT/XalanSpaceNodeTester.hpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -95,7 +95,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanDOM/XalanAttr.cpp b/src/xalanc/XalanDOM/XalanAttr.cpp
index 8812028..6911cdc 100644
--- a/src/xalanc/XalanDOM/XalanAttr.cpp
+++ b/src/xalanc/XalanDOM/XalanAttr.cpp
@@ -19,7 +19,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -61,4 +61,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanDOM/XalanAttr.hpp b/src/xalanc/XalanDOM/XalanAttr.hpp
index 25a8a69..b2f17e4 100644
--- a/src/xalanc/XalanDOM/XalanAttr.hpp
+++ b/src/xalanc/XalanDOM/XalanAttr.hpp
@@ -25,7 +25,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -134,7 +134,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanDOM/XalanCDATASection.hpp b/src/xalanc/XalanDOM/XalanCDATASection.hpp
index 9e61cdd..ac6bd31 100644
--- a/src/xalanc/XalanDOM/XalanCDATASection.hpp
+++ b/src/xalanc/XalanDOM/XalanCDATASection.hpp
@@ -25,7 +25,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -112,7 +112,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanDOM/XalanCDataSection.cpp b/src/xalanc/XalanDOM/XalanCDataSection.cpp
index 31a59b7..3dde262 100644
--- a/src/xalanc/XalanDOM/XalanCDataSection.cpp
+++ b/src/xalanc/XalanDOM/XalanCDataSection.cpp
@@ -19,7 +19,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -61,4 +61,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanDOM/XalanCharacterData.cpp b/src/xalanc/XalanDOM/XalanCharacterData.cpp
index 2f74d9b..8e41bb6 100644
--- a/src/xalanc/XalanDOM/XalanCharacterData.cpp
+++ b/src/xalanc/XalanDOM/XalanCharacterData.cpp
@@ -19,7 +19,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -61,4 +61,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanDOM/XalanCharacterData.hpp b/src/xalanc/XalanDOM/XalanCharacterData.hpp
index c2d84f4..e4400f9 100644
--- a/src/xalanc/XalanDOM/XalanCharacterData.hpp
+++ b/src/xalanc/XalanDOM/XalanCharacterData.hpp
@@ -25,7 +25,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -111,7 +111,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanDOM/XalanComment.cpp b/src/xalanc/XalanDOM/XalanComment.cpp
index 601ab0c..cd99bd2 100644
--- a/src/xalanc/XalanDOM/XalanComment.cpp
+++ b/src/xalanc/XalanDOM/XalanComment.cpp
@@ -19,7 +19,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -61,4 +61,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanDOM/XalanComment.hpp b/src/xalanc/XalanDOM/XalanComment.hpp
index 5cf8106..5580dfb 100644
--- a/src/xalanc/XalanDOM/XalanComment.hpp
+++ b/src/xalanc/XalanDOM/XalanComment.hpp
@@ -25,7 +25,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -107,7 +107,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanDOM/XalanDOMException.cpp b/src/xalanc/XalanDOM/XalanDOMException.cpp
index 88d2f3a..3d62e1d 100644
--- a/src/xalanc/XalanDOM/XalanDOMException.cpp
+++ b/src/xalanc/XalanDOM/XalanDOMException.cpp
@@ -19,7 +19,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -51,4 +51,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanDOM/XalanDOMException.hpp b/src/xalanc/XalanDOM/XalanDOMException.hpp
index fd6a30c..8adade2 100644
--- a/src/xalanc/XalanDOM/XalanDOMException.hpp
+++ b/src/xalanc/XalanDOM/XalanDOMException.hpp
@@ -24,7 +24,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -123,7 +123,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanDOM/XalanDOMImplementation.cpp b/src/xalanc/XalanDOM/XalanDOMImplementation.cpp
index 89debc0..2555206 100644
--- a/src/xalanc/XalanDOM/XalanDOMImplementation.cpp
+++ b/src/xalanc/XalanDOM/XalanDOMImplementation.cpp
@@ -19,7 +19,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -57,4 +57,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanDOM/XalanDOMImplementation.hpp b/src/xalanc/XalanDOM/XalanDOMImplementation.hpp
index f965a4e..0a04a24 100644
--- a/src/xalanc/XalanDOM/XalanDOMImplementation.hpp
+++ b/src/xalanc/XalanDOM/XalanDOMImplementation.hpp
@@ -24,7 +24,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -135,7 +135,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanDOM/XalanDOMInit.cpp b/src/xalanc/XalanDOM/XalanDOMInit.cpp
index c47533e..fec8506 100644
--- a/src/xalanc/XalanDOM/XalanDOMInit.cpp
+++ b/src/xalanc/XalanDOM/XalanDOMInit.cpp
@@ -20,7 +20,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -66,4 +66,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanDOM/XalanDOMInit.hpp b/src/xalanc/XalanDOM/XalanDOMInit.hpp
index 2022ec5..a784cfe 100644
--- a/src/xalanc/XalanDOM/XalanDOMInit.hpp
+++ b/src/xalanc/XalanDOM/XalanDOMInit.hpp
@@ -27,7 +27,7 @@
 #include <xalanc/Include/XalanMemoryManagement.hpp>
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -60,7 +60,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanDOM/XalanDOMString.cpp b/src/xalanc/XalanDOM/XalanDOMString.cpp
index 3a063a5..7ceb858 100644
--- a/src/xalanc/XalanDOM/XalanDOMString.cpp
+++ b/src/xalanc/XalanDOM/XalanDOMString.cpp
@@ -26,16 +26,13 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
 const XalanDOMChar  XalanDOMString::s_empty = 0;
 
-#if defined(XALAN_INLINE_INITIALIZATION) && !defined(XALAN_INLINE_INITIALIZATION_IS_DEFINITION_BUG)
-const XalanDOMString::size_type     XalanDOMString::npos;
-#endif
- 
+const XalanDOMString::size_type     XalanDOMString::npos = 0u; 
 
 
 XalanDOMString::XalanDOMString(MemoryManager&  theManager) :
@@ -248,11 +245,7 @@
         else
         {
             // Yuck.  We have to move data...
-#if defined(XALAN_STRICT_ANSI_HEADERS)
             std::memmove(&*begin(), &*begin() + thePosition, theCount * sizeof(XalanDOMChar));
-#else
-            memmove(&*begin(), &*begin() + thePosition, theCount * sizeof(XalanDOMChar));
-#endif
 
             resize(theCount);
         }
@@ -781,7 +774,7 @@
 XalanDOMString::size_type
 XalanDOMString::length(const XalanDOMChar*  theString)
 {
-    return XALAN_CPP_NAMESPACE :: length(theString);
+    return xalanc::length(theString);
 }
 
 
@@ -791,20 +784,13 @@
 {
     assert(theString != 0);
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
     assert(std::strlen(theString) < size_type(npos));
 
     return size_type(std::strlen(theString));
-#else
-    assert(strlen(theString) < size_type(npos));
-
-    return size_type(strlen(theString));
-#endif
-
 }
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
@@ -812,7 +798,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 const XalanDOMString::size_type     theOneTranslatedWbCharLen = 10;
@@ -860,7 +846,7 @@
 
     bool            fSuccess = false;
 
-    XALAN_USING_XERCES(XMLString)
+    using xercesc::XMLString;
 
     fSuccess = XMLString::transcode(
         theRealSourceString,
@@ -974,7 +960,7 @@
 
     do
     {
-        XALAN_USING_XERCES(XMLString)
+        using xercesc::XMLString;
 
         fSuccess = XMLString::transcode(
                     theRealSourceString,
@@ -1297,4 +1283,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanDOM/XalanDOMString.hpp b/src/xalanc/XalanDOM/XalanDOMString.hpp
index 7f3411e..270b931 100644
--- a/src/xalanc/XalanDOM/XalanDOMString.hpp
+++ b/src/xalanc/XalanDOM/XalanDOMString.hpp
@@ -38,7 +38,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -61,11 +61,7 @@
     typedef XalanDOMCharVectorType::reverse_iterator        reverse_iterator;
     typedef XalanDOMCharVectorType::const_reverse_iterator  const_reverse_iterator;
 
-#if defined(XALAN_INLINE_INITIALIZATION)
-    static const size_type  npos = ~0u;
-#else
-    enum { npos = ~0u };
-#endif
+    static const size_type  npos;
 
     XalanDOMString(MemoryManager&  theManager XALAN_DEFAULT_CONSTRUCTOR_MEMMGR);
 
@@ -367,11 +363,7 @@
 
         m_data.swap(theOther.m_data);
 
-#if defined(XALAN_NO_STD_NAMESPACE)
-        ::swap(m_size, theOther.m_size);
-#else
         std::swap(m_size, theOther.m_size);
-#endif
     }
 
     XalanDOMString&
@@ -847,10 +839,10 @@
  * @param theKey XalanDOMString to be hashed
  * @return hash value for XalanDOMString
  */
-struct DOMStringHashFunction : public XALAN_STD_QUALIFIER unary_function<const XalanDOMString&, size_t>
+struct DOMStringHashFunction
 {
-    result_type
-    operator() (argument_type   theKey) const
+    size_t
+    operator() (const XalanDOMString&   theKey) const
     {
         return theKey.hash();
     }
@@ -864,10 +856,10 @@
  * @param theKey XalanDOMString to be hashed
  * @return hash value for XalanDOMString
  */
-struct DOMStringPointerHashFunction : public XALAN_STD_QUALIFIER unary_function<const XalanDOMString*, size_t>
+struct DOMStringPointerHashFunction
 {
-    result_type
-    operator() (argument_type   theKey) const
+    size_t
+    operator() (const XalanDOMString*    theKey) const
     {
         assert (theKey != 0);
 
@@ -899,15 +891,11 @@
  * @param theRHS second string to compare
  * @return true if the contents of both strings are identical
  */
-#if defined(XALAN_NO_STD_NAMESPACE)
-struct DOMStringEqualsFunction : public binary_function<const XalanDOMString&, const XalanDOMString&, bool>
-#else
-struct DOMStringEqualsFunction : public std::binary_function<const XalanDOMString&, const XalanDOMString&, bool>
-#endif
+struct DOMStringEqualsFunction
 {
-    result_type
-    operator() (first_argument_type     theLHS,
-                second_argument_type    theRHS) const
+    bool
+    operator() (const XalanDOMString&    theLHS,
+                const XalanDOMString&    theRHS) const
     {
         return XalanDOMString::equals(theLHS, theRHS);
     }
@@ -922,15 +910,11 @@
  * @param theRHS second string to compare
  * @return true if the contents of both strings are identical
  */
-#if defined(XALAN_NO_STD_NAMESPACE)
-struct DOMStringNotEqualsFunction : public binary_function<const XalanDOMString&, const XalanDOMString&, bool>
-#else
-struct DOMStringNotEqualsFunction : public std::binary_function<const XalanDOMString&, const XalanDOMString&, bool>
-#endif
+struct DOMStringNotEqualsFunction
 {
-    result_type
-    operator() (first_argument_type     theLHS,
-                second_argument_type    theRHS) const
+    bool
+    operator() (const XalanDOMString&    theLHS,
+                const XalanDOMString&    theRHS) const
     {
         return !XalanDOMString::equals(theLHS, theRHS);
     }
@@ -945,15 +929,11 @@
  * @param theRHS second string to compare
  * @return true if the theLHS is less than theRHSl
  */
-#if defined(XALAN_NO_STD_NAMESPACE)
-struct DOMStringLessThanFunction : public binary_function<const XalanDOMString&, const XalanDOMString&, bool>
-#else
-struct DOMStringLessThanFunction : public std::binary_function<const XalanDOMString&, const XalanDOMString&, bool>
-#endif
+struct DOMStringLessThanFunction
 {
-    result_type
-    operator() (first_argument_type     theLHS,
-                second_argument_type    theRHS) const
+    bool
+    operator() (const XalanDOMString&    theLHS,
+                const XalanDOMString&    theRHS) const
     {
         return theLHS.compare(theRHS) < 0 ? true : false;
     }
@@ -967,11 +947,11 @@
  * @param theRHS second string to compare
  * @return true if the theLHS is equal to theRHS
  */
-struct DOMStringPointerEqualToFunction : public XALAN_STD_QUALIFIER binary_function<const XalanDOMString*, const XalanDOMString*, bool>
+struct DOMStringPointerEqualToFunction
 {
-    result_type
-    operator() (first_argument_type     theLHS,
-                second_argument_type    theRHS) const
+    bool
+    operator() (const XalanDOMString*    theLHS,
+                const XalanDOMString*    theRHS) const
     {
         assert(theLHS != 0 && theRHS != 0);
 
@@ -987,15 +967,11 @@
  * @param theRHS second string to compare
  * @return true if the theLHS is less than theRHSl
  */
-#if defined(XALAN_NO_STD_NAMESPACE)
-struct DOMStringPointerLessThanFunction : public binary_function<const XalanDOMString*, const XalanDOMString*, bool>
-#else
-struct DOMStringPointerLessThanFunction : public std::binary_function<const XalanDOMString*, const XalanDOMString*, bool>
-#endif
+struct DOMStringPointerLessThanFunction
 {
-    result_type
-    operator() (first_argument_type     theLHS,
-                second_argument_type    theRHS) const
+    bool
+    operator() (const XalanDOMString*    theLHS,
+                const XalanDOMString*    theRHS) const
     {
         assert(theLHS != 0 && theRHS != 0);
 
@@ -1009,7 +985,7 @@
 struct XalanMapKeyTraits<XalanDOMString>
 {
     typedef DOMStringHashFunction                           Hasher;
-    typedef XALAN_STD_QUALIFIER equal_to<XalanDOMString>    Comparator;
+    typedef std::equal_to<XalanDOMString>    Comparator;
 };
 
 
@@ -1420,7 +1396,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanDOM/XalanDocument.cpp b/src/xalanc/XalanDOM/XalanDocument.cpp
index a0956f5..e85e0f5 100644
--- a/src/xalanc/XalanDOM/XalanDocument.cpp
+++ b/src/xalanc/XalanDOM/XalanDocument.cpp
@@ -19,7 +19,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -61,4 +61,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanDOM/XalanDocument.hpp b/src/xalanc/XalanDOM/XalanDocument.hpp
index b584d52..3b92a9e 100644
--- a/src/xalanc/XalanDOM/XalanDocument.hpp
+++ b/src/xalanc/XalanDOM/XalanDocument.hpp
@@ -25,7 +25,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -219,7 +219,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanDOM/XalanDocumentFragment.cpp b/src/xalanc/XalanDOM/XalanDocumentFragment.cpp
index 7e66fb9..b04cef5 100644
--- a/src/xalanc/XalanDOM/XalanDocumentFragment.cpp
+++ b/src/xalanc/XalanDOM/XalanDocumentFragment.cpp
@@ -19,7 +19,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -61,4 +61,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanDOM/XalanDocumentFragment.hpp b/src/xalanc/XalanDOM/XalanDocumentFragment.hpp
index 60a1047..91d2c4c 100644
--- a/src/xalanc/XalanDOM/XalanDocumentFragment.hpp
+++ b/src/xalanc/XalanDOM/XalanDocumentFragment.hpp
@@ -25,7 +25,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -103,7 +103,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanDOM/XalanDocumentType.cpp b/src/xalanc/XalanDOM/XalanDocumentType.cpp
index 058817b..0a4c6c6 100644
--- a/src/xalanc/XalanDOM/XalanDocumentType.cpp
+++ b/src/xalanc/XalanDOM/XalanDocumentType.cpp
@@ -19,7 +19,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -61,4 +61,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanDOM/XalanDocumentType.hpp b/src/xalanc/XalanDOM/XalanDocumentType.hpp
index 0a76bfe..419f7f1 100644
--- a/src/xalanc/XalanDOM/XalanDocumentType.hpp
+++ b/src/xalanc/XalanDOM/XalanDocumentType.hpp
@@ -25,7 +25,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -248,7 +248,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanDOM/XalanElement.cpp b/src/xalanc/XalanDOM/XalanElement.cpp
index a9313d8..27fa749 100644
--- a/src/xalanc/XalanDOM/XalanElement.cpp
+++ b/src/xalanc/XalanDOM/XalanElement.cpp
@@ -19,7 +19,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -61,4 +61,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanDOM/XalanElement.hpp b/src/xalanc/XalanDOM/XalanElement.hpp
index 672b94f..834c366 100644
--- a/src/xalanc/XalanDOM/XalanElement.hpp
+++ b/src/xalanc/XalanDOM/XalanElement.hpp
@@ -25,7 +25,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -215,7 +215,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanDOM/XalanEmptyNamedNodeMap.cpp b/src/xalanc/XalanDOM/XalanEmptyNamedNodeMap.cpp
index 42ea8a3..2ce703b 100644
--- a/src/xalanc/XalanDOM/XalanEmptyNamedNodeMap.cpp
+++ b/src/xalanc/XalanDOM/XalanEmptyNamedNodeMap.cpp
@@ -23,7 +23,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -98,4 +98,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanDOM/XalanEmptyNamedNodeMap.hpp b/src/xalanc/XalanDOM/XalanEmptyNamedNodeMap.hpp
index 1cfbd91..487f52f 100644
--- a/src/xalanc/XalanDOM/XalanEmptyNamedNodeMap.hpp
+++ b/src/xalanc/XalanDOM/XalanEmptyNamedNodeMap.hpp
@@ -24,7 +24,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -65,7 +65,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanDOM/XalanEntity.cpp b/src/xalanc/XalanDOM/XalanEntity.cpp
index d82addf..b4f0712 100644
--- a/src/xalanc/XalanDOM/XalanEntity.cpp
+++ b/src/xalanc/XalanDOM/XalanEntity.cpp
@@ -19,7 +19,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -61,4 +61,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanDOM/XalanEntity.hpp b/src/xalanc/XalanDOM/XalanEntity.hpp
index 1998b39..22fadf4 100644
--- a/src/xalanc/XalanDOM/XalanEntity.hpp
+++ b/src/xalanc/XalanDOM/XalanEntity.hpp
@@ -25,7 +25,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -238,7 +238,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanDOM/XalanEntityReference.cpp b/src/xalanc/XalanDOM/XalanEntityReference.cpp
index 286b31d..253bcf3 100644
--- a/src/xalanc/XalanDOM/XalanEntityReference.cpp
+++ b/src/xalanc/XalanDOM/XalanEntityReference.cpp
@@ -19,7 +19,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -61,4 +61,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanDOM/XalanEntityReference.hpp b/src/xalanc/XalanDOM/XalanEntityReference.hpp
index a791fe7..e517755 100644
--- a/src/xalanc/XalanDOM/XalanEntityReference.hpp
+++ b/src/xalanc/XalanDOM/XalanEntityReference.hpp
@@ -25,7 +25,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -207,7 +207,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanDOM/XalanNamedNodeMap.cpp b/src/xalanc/XalanDOM/XalanNamedNodeMap.cpp
index a12c4c9..af1119d 100644
--- a/src/xalanc/XalanDOM/XalanNamedNodeMap.cpp
+++ b/src/xalanc/XalanDOM/XalanNamedNodeMap.cpp
@@ -19,7 +19,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -57,4 +57,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanDOM/XalanNamedNodeMap.hpp b/src/xalanc/XalanDOM/XalanNamedNodeMap.hpp
index 32b1788..ed10ca6 100644
--- a/src/xalanc/XalanDOM/XalanNamedNodeMap.hpp
+++ b/src/xalanc/XalanDOM/XalanNamedNodeMap.hpp
@@ -24,7 +24,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -106,7 +106,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanDOM/XalanNode.cpp b/src/xalanc/XalanDOM/XalanNode.cpp
index 59831cd..32fcaa0 100644
--- a/src/xalanc/XalanDOM/XalanNode.cpp
+++ b/src/xalanc/XalanDOM/XalanNode.cpp
@@ -19,7 +19,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -57,4 +57,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanDOM/XalanNode.hpp b/src/xalanc/XalanDOM/XalanNode.hpp
index c057fd9..befb40b 100644
--- a/src/xalanc/XalanDOM/XalanNode.hpp
+++ b/src/xalanc/XalanDOM/XalanNode.hpp
@@ -24,7 +24,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -197,7 +197,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanDOM/XalanNodeList.cpp b/src/xalanc/XalanDOM/XalanNodeList.cpp
index 6e12b6f..0bee12d 100644
--- a/src/xalanc/XalanDOM/XalanNodeList.cpp
+++ b/src/xalanc/XalanDOM/XalanNodeList.cpp
@@ -19,7 +19,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -57,4 +57,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanDOM/XalanNodeList.hpp b/src/xalanc/XalanDOM/XalanNodeList.hpp
index 58850e2..4bd1a79 100644
--- a/src/xalanc/XalanDOM/XalanNodeList.hpp
+++ b/src/xalanc/XalanDOM/XalanNodeList.hpp
@@ -25,7 +25,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -81,7 +81,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanDOM/XalanNodeListDummy.cpp b/src/xalanc/XalanDOM/XalanNodeListDummy.cpp
index fc180ce..2482665 100644
--- a/src/xalanc/XalanDOM/XalanNodeListDummy.cpp
+++ b/src/xalanc/XalanDOM/XalanNodeListDummy.cpp
@@ -19,7 +19,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -52,4 +52,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanDOM/XalanNodeListDummy.hpp b/src/xalanc/XalanDOM/XalanNodeListDummy.hpp
index c05105e..1c4f25f 100644
--- a/src/xalanc/XalanDOM/XalanNodeListDummy.hpp
+++ b/src/xalanc/XalanDOM/XalanNodeListDummy.hpp
@@ -28,7 +28,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -58,7 +58,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanDOM/XalanNodeListSurrogate.cpp b/src/xalanc/XalanDOM/XalanNodeListSurrogate.cpp
index 2cddc81..02df5bb 100644
--- a/src/xalanc/XalanDOM/XalanNodeListSurrogate.cpp
+++ b/src/xalanc/XalanDOM/XalanNodeListSurrogate.cpp
@@ -23,7 +23,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -82,4 +82,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanDOM/XalanNodeListSurrogate.hpp b/src/xalanc/XalanDOM/XalanNodeListSurrogate.hpp
index 311b98c..f3418fa 100644
--- a/src/xalanc/XalanDOM/XalanNodeListSurrogate.hpp
+++ b/src/xalanc/XalanDOM/XalanNodeListSurrogate.hpp
@@ -28,7 +28,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -84,7 +84,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanDOM/XalanNotation.cpp b/src/xalanc/XalanDOM/XalanNotation.cpp
index e1bf8c2..3236dde 100644
--- a/src/xalanc/XalanDOM/XalanNotation.cpp
+++ b/src/xalanc/XalanDOM/XalanNotation.cpp
@@ -19,7 +19,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -61,4 +61,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanDOM/XalanNotation.hpp b/src/xalanc/XalanDOM/XalanNotation.hpp
index 9d35527..d5993bf 100644
--- a/src/xalanc/XalanDOM/XalanNotation.hpp
+++ b/src/xalanc/XalanDOM/XalanNotation.hpp
@@ -25,7 +25,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -229,7 +229,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanDOM/XalanProcessingInstruction.cpp b/src/xalanc/XalanDOM/XalanProcessingInstruction.cpp
index 49a511a..869e101 100644
--- a/src/xalanc/XalanDOM/XalanProcessingInstruction.cpp
+++ b/src/xalanc/XalanDOM/XalanProcessingInstruction.cpp
@@ -19,7 +19,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -61,4 +61,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanDOM/XalanProcessingInstruction.hpp b/src/xalanc/XalanDOM/XalanProcessingInstruction.hpp
index 0927de1..3b218ad 100644
--- a/src/xalanc/XalanDOM/XalanProcessingInstruction.hpp
+++ b/src/xalanc/XalanDOM/XalanProcessingInstruction.hpp
@@ -25,7 +25,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -222,7 +222,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanDOM/XalanText.cpp b/src/xalanc/XalanDOM/XalanText.cpp
index 09250eb..5477bdf 100644
--- a/src/xalanc/XalanDOM/XalanText.cpp
+++ b/src/xalanc/XalanDOM/XalanText.cpp
@@ -19,7 +19,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -61,4 +61,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanDOM/XalanText.hpp b/src/xalanc/XalanDOM/XalanText.hpp
index 79aebce..50a8b4c 100644
--- a/src/xalanc/XalanDOM/XalanText.hpp
+++ b/src/xalanc/XalanDOM/XalanText.hpp
@@ -25,7 +25,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -232,7 +232,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanEXSLT/XalanEXSLTCommon.cpp b/src/xalanc/XalanEXSLT/XalanEXSLTCommon.cpp
index b22b1dc..b42c5b3 100644
--- a/src/xalanc/XalanEXSLT/XalanEXSLTCommon.cpp
+++ b/src/xalanc/XalanEXSLT/XalanEXSLTCommon.cpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -299,4 +299,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanEXSLT/XalanEXSLTCommon.hpp b/src/xalanc/XalanEXSLT/XalanEXSLTCommon.hpp
index 12c740f..7bf56e7 100644
--- a/src/xalanc/XalanEXSLT/XalanEXSLTCommon.hpp
+++ b/src/xalanc/XalanEXSLT/XalanEXSLTCommon.hpp
@@ -28,7 +28,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -52,7 +52,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanEXSLT/XalanEXSLTCommonImpl.hpp b/src/xalanc/XalanEXSLT/XalanEXSLTCommonImpl.hpp
index 3f2250f..cdd70a3 100644
--- a/src/xalanc/XalanEXSLT/XalanEXSLTCommonImpl.hpp
+++ b/src/xalanc/XalanEXSLT/XalanEXSLTCommonImpl.hpp
@@ -36,7 +36,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -54,11 +54,7 @@
     {
     }
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionNodeSet*
-#endif
     clone(MemoryManager& theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -146,11 +142,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionObjectType*
-#endif
     clone(MemoryManager& theManager) const
     {
         typedef XalanEXSLTFunctionObjectType    ThisType;
@@ -202,7 +194,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanEXSLT/XalanEXSLTDateTime.cpp b/src/xalanc/XalanEXSLT/XalanEXSLTDateTime.cpp
index 1b196da..cf3cd90 100644
--- a/src/xalanc/XalanEXSLT/XalanEXSLTDateTime.cpp
+++ b/src/xalanc/XalanEXSLT/XalanEXSLTDateTime.cpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -101,66 +101,61 @@
 
 
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
 using std::sprintf;
 using std::time;
 using std::time_t;
 using std::tm;
-#endif
 
 
 
 #if defined(XALAN_NO_REENTRANT_TIME_FUNCTIONS)
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
-using std::gmtime;
-using std::localtime;
-#endif
-
-static struct tm*
-localtime_r(const time_t *clock, struct tm *res)
+namespace
 {
-    assert( res != 0 );
+    using std::gmtime;
+    using std::localtime;
 
-    struct tm * tmpTime = localtime(clock);
-
-    if (tmpTime == 0 )
+    static struct tm*
+    localtime_r(const time_t *clock, struct tm *res)
     {
-        return 0;
-    }
-    else
-    {
-        *res = *tmpTime;
+        assert( res != 0 );
 
-        return res;
+        struct tm * tmpTime = localtime(clock);
+
+        if (tmpTime == 0 )
+        {
+            return 0;
+        }
+        else
+        {
+            *res = *tmpTime;
+
+            return res;
+        }
     }
-    
+
+    static struct tm *
+    gmtime_r(const time_t *clock, struct tm *res)
+    {
+        assert( res != 0 );
+
+        struct tm * tmpTime = gmtime(clock);
+
+        if (tmpTime == 0 )
+        {
+            return 0;
+        }
+        else
+        {
+            *res = *tmpTime;
+
+            return res;
+        }
+    }
 }
-
-static struct tm *
-gmtime_r(const time_t *clock, struct tm *res)
-{
-    assert( res != 0 );
-
-    struct tm * tmpTime = gmtime(clock);
-
-    if (tmpTime == 0 )
-    {
-        return 0;
-    }
-    else
-    {
-        *res = *tmpTime;
-
-        return res;
-    }
-    
-}
-
 #endif
 
 
-
 XObjectPtr
 XalanEXSLTFunctionDateTime::execute(
             XPathExecutionContext&          executionContext,
@@ -303,4 +298,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanEXSLT/XalanEXSLTDateTime.hpp b/src/xalanc/XalanEXSLT/XalanEXSLTDateTime.hpp
index 656d90b..693ac69 100644
--- a/src/xalanc/XalanEXSLT/XalanEXSLTDateTime.hpp
+++ b/src/xalanc/XalanEXSLT/XalanEXSLTDateTime.hpp
@@ -27,7 +27,7 @@
 #include <xalanc/XalanExtensions/XalanExtensions.hpp>
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -52,7 +52,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanEXSLT/XalanEXSLTDateTimeImpl.hpp b/src/xalanc/XalanEXSLT/XalanEXSLTDateTimeImpl.hpp
index 541f578..ae2f2d2 100644
--- a/src/xalanc/XalanEXSLT/XalanEXSLTDateTimeImpl.hpp
+++ b/src/xalanc/XalanEXSLT/XalanEXSLTDateTimeImpl.hpp
@@ -28,7 +28,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -58,11 +58,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionDateTime*
-#endif
     clone(MemoryManager& theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -86,7 +82,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanEXSLT/XalanEXSLTDynamic.cpp b/src/xalanc/XalanEXSLT/XalanEXSLTDynamic.cpp
index 428aa6f..c362586 100644
--- a/src/xalanc/XalanEXSLT/XalanEXSLTDynamic.cpp
+++ b/src/xalanc/XalanEXSLT/XalanEXSLTDynamic.cpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -147,4 +147,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanEXSLT/XalanEXSLTDynamic.hpp b/src/xalanc/XalanEXSLT/XalanEXSLTDynamic.hpp
index 2125b61..51752f6 100644
--- a/src/xalanc/XalanEXSLT/XalanEXSLTDynamic.hpp
+++ b/src/xalanc/XalanEXSLT/XalanEXSLTDynamic.hpp
@@ -28,7 +28,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -54,7 +54,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanEXSLT/XalanEXSLTDynamicImpl.hpp b/src/xalanc/XalanEXSLT/XalanEXSLTDynamicImpl.hpp
index a63bf68..4192d49 100644
--- a/src/xalanc/XalanEXSLT/XalanEXSLTDynamicImpl.hpp
+++ b/src/xalanc/XalanEXSLT/XalanEXSLTDynamicImpl.hpp
@@ -36,7 +36,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -65,11 +65,7 @@
             const XObjectArgVectorType&     args,
             const Locator*                  locator) const;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionEvaluate*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -98,7 +94,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanEXSLT/XalanEXSLTMath.cpp b/src/xalanc/XalanEXSLT/XalanEXSLTMath.cpp
index 93f1458..f4ba8d2 100644
--- a/src/xalanc/XalanEXSLT/XalanEXSLTMath.cpp
+++ b/src/xalanc/XalanEXSLT/XalanEXSLTMath.cpp
@@ -39,7 +39,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -426,9 +426,7 @@
             locator);
     }
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
     using std::rand;
-#endif
 
     const int   value = rand();
 
@@ -484,9 +482,7 @@
 
     assert(args[0].null() == false);
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
     using std::acos;
-#endif
 
     return executionContext.getXObjectFactory().createNumber(acos(args[0]->num(executionContext)));
 }
@@ -533,9 +529,7 @@
 
     assert(args[0].null() == false);
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
     using std::asin;
-#endif
 
     return executionContext.getXObjectFactory().createNumber(asin(args[0]->num(executionContext)));
 }
@@ -581,9 +575,7 @@
 
     assert(args[0].null() == false);
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
     using std::atan;
-#endif
 
     return executionContext.getXObjectFactory().createNumber(atan(args[0]->num(executionContext)));
 }
@@ -630,9 +622,7 @@
 
     assert(args[0].null() == false && args[1].null() == false);
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
     using std::atan2;
-#endif
 
     return executionContext.getXObjectFactory().createNumber(
                 atan2(args[0]->num(executionContext), args[1]->num(executionContext)));
@@ -1139,9 +1129,7 @@
 
     assert(args[0].null() == false);
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
     using std::cos;
-#endif
 
     return executionContext.getXObjectFactory().createNumber(cos(args[0]->num(executionContext)));
 }
@@ -1186,9 +1174,7 @@
 
     assert(args[0].null() == false);
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
     using std::exp;
-#endif
 
     return executionContext.getXObjectFactory().createNumber(exp(args[0]->num(executionContext)));
 }
@@ -1233,9 +1219,7 @@
 
     assert(args[0].null() == false);
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
     using std::log;
-#endif
 
     return executionContext.getXObjectFactory().createNumber(log(args[0]->num(executionContext)));
 }
@@ -1282,9 +1266,7 @@
 
     assert(args[0].null() == false && args[1].null() == false);
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
     using std::pow;
-#endif
 
     return executionContext.getXObjectFactory().createNumber(
                 pow(
@@ -1332,9 +1314,7 @@
 
     assert(args[0].null() == false);
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
     using std::sin;
-#endif
 
     return executionContext.getXObjectFactory().createNumber(sin(args[0]->num(executionContext)));
 }
@@ -1381,9 +1361,7 @@
 
     assert(args[0].null() == false);
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
     using std::sqrt;
-#endif
 
     return executionContext.getXObjectFactory().createNumber(sqrt(args[0]->num(executionContext)));
 }
@@ -1428,9 +1406,7 @@
 
     assert(args[0].null() == false);
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
     using std::tan;
-#endif
 
     return executionContext.getXObjectFactory().createNumber(tan(args[0]->num(executionContext)));
 }
@@ -1552,10 +1528,8 @@
 
     // Sets the starting point for generating a series of pseudorandom integers,
     // we need it for random() EXSLT function
-#if defined(XALAN_STRICT_ANSI_HEADERS)
     using std::srand;
     using std::time;
-#endif
     srand( (unsigned)time( NULL ) );
 }
 
@@ -1577,4 +1551,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanEXSLT/XalanEXSLTMath.hpp b/src/xalanc/XalanEXSLT/XalanEXSLTMath.hpp
index 17c1f27..fa329e5 100644
--- a/src/xalanc/XalanEXSLT/XalanEXSLTMath.hpp
+++ b/src/xalanc/XalanEXSLT/XalanEXSLTMath.hpp
@@ -28,7 +28,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -53,7 +53,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanEXSLT/XalanEXSLTMathImpl.hpp b/src/xalanc/XalanEXSLT/XalanEXSLTMathImpl.hpp
index 6805df4..a5c7062 100644
--- a/src/xalanc/XalanEXSLT/XalanEXSLTMathImpl.hpp
+++ b/src/xalanc/XalanEXSLT/XalanEXSLTMathImpl.hpp
@@ -32,7 +32,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -62,11 +62,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionAbs*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -115,11 +111,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionRandom*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -168,11 +160,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionAcos*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -221,11 +209,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionAsin*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -274,11 +258,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionAtan*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -327,11 +307,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionAtan2*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -380,11 +356,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionConstant*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -456,11 +428,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionCos*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -509,11 +477,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionExp*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -562,11 +526,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionHighest*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -615,11 +575,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionLog*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -668,11 +624,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionLowest*
-#endif
     clone(MemoryManager&  theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -721,11 +673,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionMax*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -774,11 +722,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionMin*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -827,11 +771,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionPower*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -880,11 +820,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionSin*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -933,11 +869,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionSqrt*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -986,11 +918,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionTan*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -1013,7 +941,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanEXSLT/XalanEXSLTSet.cpp b/src/xalanc/XalanEXSLT/XalanEXSLTSet.cpp
index b959686..ccf41fb 100644
--- a/src/xalanc/XalanEXSLT/XalanEXSLTSet.cpp
+++ b/src/xalanc/XalanEXSLT/XalanEXSLTSet.cpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -400,4 +400,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanEXSLT/XalanEXSLTSet.hpp b/src/xalanc/XalanEXSLT/XalanEXSLTSet.hpp
index 4bfd764..acf0997 100644
--- a/src/xalanc/XalanEXSLT/XalanEXSLTSet.hpp
+++ b/src/xalanc/XalanEXSLT/XalanEXSLTSet.hpp
@@ -28,7 +28,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -53,7 +53,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanEXSLT/XalanEXSLTSetImpl.hpp b/src/xalanc/XalanEXSLT/XalanEXSLTSetImpl.hpp
index aa616f5..773f2ee 100644
--- a/src/xalanc/XalanEXSLT/XalanEXSLTSetImpl.hpp
+++ b/src/xalanc/XalanEXSLT/XalanEXSLTSetImpl.hpp
@@ -38,7 +38,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -56,11 +56,7 @@
     {
     }
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionDifference*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -103,11 +99,7 @@
     {
     }
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionDistinct*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -164,11 +156,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionHasSameNode*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -213,11 +201,7 @@
     {
     }
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionIntersection*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -273,11 +257,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionLeading*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -333,11 +313,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionTrailing*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -366,7 +342,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanEXSLT/XalanEXSLTString.cpp b/src/xalanc/XalanEXSLT/XalanEXSLTString.cpp
index 7db6226..7707268 100644
--- a/src/xalanc/XalanEXSLT/XalanEXSLTString.cpp
+++ b/src/xalanc/XalanEXSLT/XalanEXSLTString.cpp
@@ -35,7 +35,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -374,7 +374,7 @@
     const GetCachedString   theGuard1(executionContext);
     XalanDOMString&     theBuffer = theGuard1.get();
 
-    XALAN_USING_STD(find)
+    using std::find;
 
     for (XalanDOMString::size_type i = 0; i < theString.length(); ++i)
     {
@@ -810,4 +810,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanEXSLT/XalanEXSLTString.hpp b/src/xalanc/XalanEXSLT/XalanEXSLTString.hpp
index 8cd843b..048c76d 100644
--- a/src/xalanc/XalanEXSLT/XalanEXSLTString.hpp
+++ b/src/xalanc/XalanEXSLT/XalanEXSLTString.hpp
@@ -28,7 +28,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -54,7 +54,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanEXSLT/XalanEXSLTStringImpl.hpp b/src/xalanc/XalanEXSLT/XalanEXSLTStringImpl.hpp
index 594d108..fc6806a 100644
--- a/src/xalanc/XalanEXSLT/XalanEXSLTStringImpl.hpp
+++ b/src/xalanc/XalanEXSLT/XalanEXSLTStringImpl.hpp
@@ -32,7 +32,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -63,11 +63,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionAlign*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -128,11 +124,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionConcat*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -206,11 +198,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionPadding*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this, theManager);
@@ -273,11 +261,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionEncodeURI*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -344,11 +328,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual XalanEXSLTFunctionDecodeURI*
-#endif
     clone(MemoryManager&    theManager) const
     {
         return XalanCopyConstruct(theManager, *this);
@@ -386,7 +366,7 @@
     operator==(const XalanEXSLTFunctionDecodeURI&) const;
 };
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanExe/XalanExe.cpp b/src/xalanc/XalanExe/XalanExe.cpp
index 941d128..90823ce 100644
--- a/src/xalanc/XalanExe/XalanExe.cpp
+++ b/src/xalanc/XalanExe/XalanExe.cpp
@@ -22,11 +22,7 @@
 
 #include <cstdlib>
 #include <cstring>
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <iostream.h>
-#else
 #include <iostream>
-#endif
 
 
 
@@ -62,36 +58,32 @@
 #include "windows.h"
 #else
 #include <ctime>
-#if defined(XALAN_STRICT_ANSI_HEADERS)
 using std::clock;
 using std::clock_t;
 #endif
-#endif
 
 
 
-XALAN_USING_STD(cerr)
-XALAN_USING_STD(cin)
-XALAN_USING_STD(cout)
-XALAN_USING_STD(endl)
-XALAN_USING_STD(ostream)
+using std::cerr;
+using std::cin;
+using std::cout;
+using std::endl;
+using std::ostream;
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
 using std::atoi;
 using std::strcmp;
 using std::strlen;
-#endif
 
 
 
 void
 Usage()
 {
-    XALAN_USING_XALAN(XalanDOMString)
-    XALAN_USING_XALAN(XalanMessageLoader)
-    XALAN_USING_XALAN(XalanMessages)
-    XALAN_USING_XALAN(XalanMemMgrs)
-    XALAN_USING_XERCES(MemoryManager)
+    using xalanc::XalanDOMString;
+    using xalanc::XalanMessageLoader;
+    using xalanc::XalanMessages;
+    using xalanc::XalanMemMgrs;
+    using xercesc::MemoryManager;
 
     MemoryManager&  theManager = XalanMemMgrs::getDefaultXercesMemMgr();
 
@@ -163,9 +155,9 @@
 
 
 
-XALAN_USING_XALAN(XalanTransformer)
-XALAN_USING_XALAN(XSLTInputSource)
-XALAN_USING_XALAN(XSLTResultTarget)
+using xalanc::XalanTransformer;
+using xalanc::XSLTInputSource;
+using xalanc::XSLTResultTarget;
 
 
 
@@ -279,7 +271,7 @@
         const char*     m_expression;
     };
 
-    typedef XALAN_CPP_NAMESPACE_QUALIFIER XalanArrayAutoPtr<ParamPair>  ArrayAutoPtrType;
+    typedef xalanc::XalanArrayAutoPtr<ParamPair>  ArrayAutoPtrType;
 
     ArrayAutoPtrType        m_params;
 
@@ -462,11 +454,7 @@
 #if defined(XALAN_USE_WINDOWS_TIMING)
 typedef LARGE_INTEGER   ClockType;
 #else
-#if defined(XALAN_STRICT_ANSI_HEADERS)
 typedef std::clock_t    ClockType;
-#else
-typedef clock_t         ClockType;
-#endif
 #endif
 
 typedef ostream         OstreamType;
@@ -482,11 +470,7 @@
 
     return theResult;
 #else
-#if defined(XALAN_STRICT_ANSI_HEADERS)
     return std::clock();
-#else
-    return clock();
-#endif
 #endif
 }
 
@@ -568,8 +552,8 @@
 
 
 
-XALAN_USING_XALAN(XalanParsedSource)
-XALAN_USING_XALAN(XalanCompiledStylesheet)
+using xalanc::XalanParsedSource;
+using xalanc::XalanCompiledStylesheet;
 
 
 typedef XalanTransformer::EnsureDestroyParsedSource         SourceGuard;
@@ -721,9 +705,9 @@
             const XSLTInputSource&  theSource,
             const XSLTInputSource&  theStylesheetSource)
 {
-    XALAN_USING_XALAN(XalanDOMString)
-    XALAN_USING_XALAN(XSLTResultTarget)
-    XALAN_USING_XERCES(MemoryManager)
+    using xalanc::XalanDOMString;
+    using xalanc::XSLTResultTarget;
+    using xercesc::MemoryManager;
 
     MemoryManager&  theManager = theTransformer.getMemoryManager();
 
@@ -826,13 +810,13 @@
 
 #if defined(XALAN_WINDOWS)
 
-XALAN_USING_XERCES(MemoryManager)
+using xercesc::MemoryManager;
 
-class WindowsMemoryManager : public XALAN_CPP_NAMESPACE_QUALIFIER XalanMemoryManager
+class WindowsMemoryManager : public xalanc::XalanMemoryManager
 {
 public:
 
-    typedef XALAN_CPP_NAMESPACE_QUALIFIER XalanSize_t   XalanSize_t;
+    typedef xalanc::XalanSize_t   XalanSize_t;
 
     WindowsMemoryManager() :
         XalanMemoryManager(),
@@ -862,7 +846,7 @@
 
         if (value == 0)
         {
-            throw XERCES_CPP_NAMESPACE_QUALIFIER OutOfMemoryException();
+            throw xercesc::OutOfMemoryException();
         }
 
         return value;
@@ -910,14 +894,14 @@
 {
     int theResult = -1;
 
-    XALAN_USING_XERCES(XMLPlatformUtils)
+    using xercesc::XMLPlatformUtils;
 
 #if defined(XALAN_WINDOWS) && defined(NDEBUG)
     WindowsMemoryManager  theMemoryManager;
 
     // Call the static initializer for Xerces...
     XMLPlatformUtils::Initialize(
-        XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgXercescDefaultLocale,
+        xercesc::XMLUni::fgXercescDefaultLocale,
         0,
         0,
         &theMemoryManager);
@@ -925,7 +909,7 @@
     // Call the static initializer for Xerces...
     XMLPlatformUtils::Initialize();
 
-    XALAN_USING_XERCES(MemoryManager)
+    using xercesc::MemoryManager;
  
     MemoryManager&  theMemoryManager =
             *XMLPlatformUtils::fgMemoryManager;
diff --git a/src/xalanc/XalanExtensions/FunctionDifference.cpp b/src/xalanc/XalanExtensions/FunctionDifference.cpp
index 3f12907..0d8f0ac 100644
--- a/src/xalanc/XalanExtensions/FunctionDifference.cpp
+++ b/src/xalanc/XalanExtensions/FunctionDifference.cpp
@@ -28,7 +28,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -91,11 +91,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionDifference*
-#endif
 FunctionDifference::clone(MemoryManager&    theManager) const
 {
     return XalanCopyConstruct(theManager, *this);
@@ -114,4 +110,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanExtensions/FunctionDifference.hpp b/src/xalanc/XalanExtensions/FunctionDifference.hpp
index 8f6cf11..8b983bc 100644
--- a/src/xalanc/XalanExtensions/FunctionDifference.hpp
+++ b/src/xalanc/XalanExtensions/FunctionDifference.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -59,11 +59,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionDifference*
-#endif
     clone(MemoryManager& theManager) const;
 
 protected:
@@ -83,7 +79,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanExtensions/FunctionDistinct.cpp b/src/xalanc/XalanExtensions/FunctionDistinct.cpp
index 07c637b..05ba4b8 100644
--- a/src/xalanc/XalanExtensions/FunctionDistinct.cpp
+++ b/src/xalanc/XalanExtensions/FunctionDistinct.cpp
@@ -40,7 +40,7 @@
 #include <xalanc/XPath/XObjectFactory.hpp>
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -124,11 +124,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionDistinct*
-#endif
 FunctionDistinct::clone(MemoryManager&  theManager) const
 {
     return XalanCopyConstruct(theManager, *this);
@@ -148,4 +144,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanExtensions/FunctionDistinct.hpp b/src/xalanc/XalanExtensions/FunctionDistinct.hpp
index e5a26d5..314faa1 100644
--- a/src/xalanc/XalanExtensions/FunctionDistinct.hpp
+++ b/src/xalanc/XalanExtensions/FunctionDistinct.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -59,11 +59,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionDistinct*
-#endif
     clone(MemoryManager& theManager) const;
 
 protected:
@@ -83,7 +79,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanExtensions/FunctionEvaluate.cpp b/src/xalanc/XalanExtensions/FunctionEvaluate.cpp
index 94617a9..7a84751 100644
--- a/src/xalanc/XalanExtensions/FunctionEvaluate.cpp
+++ b/src/xalanc/XalanExtensions/FunctionEvaluate.cpp
@@ -40,7 +40,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -159,11 +159,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionEvaluate*
-#endif
 FunctionEvaluate::clone(MemoryManager&  theManager) const
 {
     return XalanCopyConstruct(theManager, *this);
@@ -182,4 +178,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanExtensions/FunctionEvaluate.hpp b/src/xalanc/XalanExtensions/FunctionEvaluate.hpp
index 0aadd76..273364c 100644
--- a/src/xalanc/XalanExtensions/FunctionEvaluate.hpp
+++ b/src/xalanc/XalanExtensions/FunctionEvaluate.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -59,11 +59,7 @@
             const XObjectArgVectorType&     args,
             const Locator*                  locator) const;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionEvaluate*
-#endif
     clone(MemoryManager& theManager) const;
 
 protected:
@@ -83,7 +79,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanExtensions/FunctionHasSameNodes.cpp b/src/xalanc/XalanExtensions/FunctionHasSameNodes.cpp
index aae1177..7f9f6db 100644
--- a/src/xalanc/XalanExtensions/FunctionHasSameNodes.cpp
+++ b/src/xalanc/XalanExtensions/FunctionHasSameNodes.cpp
@@ -28,7 +28,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -91,11 +91,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionHasSameNodes*
-#endif
 FunctionHasSameNodes::clone(MemoryManager&  theManager) const
 {
     return XalanCopyConstruct(theManager, *this);
@@ -115,4 +111,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanExtensions/FunctionHasSameNodes.hpp b/src/xalanc/XalanExtensions/FunctionHasSameNodes.hpp
index f76f7bb..f078d29 100644
--- a/src/xalanc/XalanExtensions/FunctionHasSameNodes.hpp
+++ b/src/xalanc/XalanExtensions/FunctionHasSameNodes.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -59,11 +59,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionHasSameNodes*
-#endif
     clone(MemoryManager& theManager) const;
 
 protected:
@@ -83,7 +79,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanExtensions/FunctionIntersection.cpp b/src/xalanc/XalanExtensions/FunctionIntersection.cpp
index 049f26d..c43b418 100644
--- a/src/xalanc/XalanExtensions/FunctionIntersection.cpp
+++ b/src/xalanc/XalanExtensions/FunctionIntersection.cpp
@@ -28,7 +28,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -88,11 +88,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionIntersection*
-#endif
 FunctionIntersection::clone(MemoryManager&  theManager) const
 {
     return XalanCopyConstruct(theManager, *this);
@@ -111,4 +107,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanExtensions/FunctionIntersection.hpp b/src/xalanc/XalanExtensions/FunctionIntersection.hpp
index 1c9257e..6d2dedf 100644
--- a/src/xalanc/XalanExtensions/FunctionIntersection.hpp
+++ b/src/xalanc/XalanExtensions/FunctionIntersection.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -59,11 +59,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionIntersection*
-#endif
     clone(MemoryManager& theManager) const;
 
 protected:
@@ -83,7 +79,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanExtensions/FunctionNodeSet.cpp b/src/xalanc/XalanExtensions/FunctionNodeSet.cpp
index 82b3b9d..fc368a8 100644
--- a/src/xalanc/XalanExtensions/FunctionNodeSet.cpp
+++ b/src/xalanc/XalanExtensions/FunctionNodeSet.cpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -175,11 +175,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-Function*
-#else
 FunctionNodeSet*
-#endif
 FunctionNodeSet::clone(MemoryManager&   theManager) const
 {
     return XalanCopyConstruct(theManager, *this);
@@ -209,4 +205,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanExtensions/FunctionNodeSet.hpp b/src/xalanc/XalanExtensions/FunctionNodeSet.hpp
index 5ab6bb3..cb1db2d 100644
--- a/src/xalanc/XalanExtensions/FunctionNodeSet.hpp
+++ b/src/xalanc/XalanExtensions/FunctionNodeSet.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -68,11 +68,7 @@
 
     using ParentType::execute;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual Function*
-#else
     virtual FunctionNodeSet*
-#endif
     clone(MemoryManager& theManager) const;
 
 protected:
@@ -99,7 +95,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanExtensions/XalanExtensions.cpp b/src/xalanc/XalanExtensions/XalanExtensions.cpp
index b778631..a2e2303 100644
--- a/src/xalanc/XalanExtensions/XalanExtensions.cpp
+++ b/src/xalanc/XalanExtensions/XalanExtensions.cpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -325,4 +325,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanExtensions/XalanExtensions.hpp b/src/xalanc/XalanExtensions/XalanExtensions.hpp
index 7b30d2f..cbc3c5b 100644
--- a/src/xalanc/XalanExtensions/XalanExtensions.hpp
+++ b/src/xalanc/XalanExtensions/XalanExtensions.hpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -89,7 +89,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanSourceTree/FormatterToSourceTree.cpp b/src/xalanc/XalanSourceTree/FormatterToSourceTree.cpp
index 2537136..3c88017 100644
--- a/src/xalanc/XalanSourceTree/FormatterToSourceTree.cpp
+++ b/src/xalanc/XalanSourceTree/FormatterToSourceTree.cpp
@@ -48,7 +48,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -464,4 +464,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanSourceTree/FormatterToSourceTree.hpp b/src/xalanc/XalanSourceTree/FormatterToSourceTree.hpp
index 8c6d6c5..d0cbaac 100644
--- a/src/xalanc/XalanSourceTree/FormatterToSourceTree.hpp
+++ b/src/xalanc/XalanSourceTree/FormatterToSourceTree.hpp
@@ -38,7 +38,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -239,7 +239,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeAttr.cpp b/src/xalanc/XalanSourceTree/XalanSourceTreeAttr.cpp
index 52a3f35..cd8d6dd 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeAttr.cpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeAttr.cpp
@@ -31,7 +31,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -221,4 +221,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeAttr.hpp b/src/xalanc/XalanSourceTree/XalanSourceTreeAttr.hpp
index 3024732..76aaea8 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeAttr.hpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeAttr.hpp
@@ -32,7 +32,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -172,7 +172,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeAttrNS.cpp b/src/xalanc/XalanSourceTree/XalanSourceTreeAttrNS.cpp
index 492e292..33ecab0 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeAttrNS.cpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeAttrNS.cpp
@@ -23,7 +23,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -77,4 +77,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeAttrNS.hpp b/src/xalanc/XalanSourceTree/XalanSourceTreeAttrNS.hpp
index 5eb4cdd..95fa133 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeAttrNS.hpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeAttrNS.hpp
@@ -28,7 +28,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -98,7 +98,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeAttributeAllocator.cpp b/src/xalanc/XalanSourceTree/XalanSourceTreeAttributeAllocator.cpp
index b1e086d..2cf228a 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeAttributeAllocator.cpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeAttributeAllocator.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -69,4 +69,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeAttributeAllocator.hpp b/src/xalanc/XalanSourceTree/XalanSourceTreeAttributeAllocator.hpp
index 3d70687..33929e9 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeAttributeAllocator.hpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeAttributeAllocator.hpp
@@ -33,7 +33,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -126,7 +126,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeAttributeNSAllocator.cpp b/src/xalanc/XalanSourceTree/XalanSourceTreeAttributeNSAllocator.cpp
index 97059d3..9e81f38 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeAttributeNSAllocator.cpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeAttributeNSAllocator.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -75,4 +75,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeAttributeNSAllocator.hpp b/src/xalanc/XalanSourceTree/XalanSourceTreeAttributeNSAllocator.hpp
index b14ef07..ce767b6 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeAttributeNSAllocator.hpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeAttributeNSAllocator.hpp
@@ -33,7 +33,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -131,7 +131,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeComment.cpp b/src/xalanc/XalanSourceTree/XalanSourceTreeComment.cpp
index a1e7574..34b42d2 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeComment.cpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeComment.cpp
@@ -36,7 +36,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -339,4 +339,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeComment.hpp b/src/xalanc/XalanSourceTree/XalanSourceTreeComment.hpp
index 977b79f..758971d 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeComment.hpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeComment.hpp
@@ -32,7 +32,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -202,7 +202,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeCommentAllocator.cpp b/src/xalanc/XalanSourceTree/XalanSourceTreeCommentAllocator.cpp
index 311764e..82e4a1a 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeCommentAllocator.cpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeCommentAllocator.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -73,4 +73,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeCommentAllocator.hpp b/src/xalanc/XalanSourceTree/XalanSourceTreeCommentAllocator.hpp
index c5205ed..272e2ef 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeCommentAllocator.hpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeCommentAllocator.hpp
@@ -33,7 +33,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -129,7 +129,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeContentHandler.cpp b/src/xalanc/XalanSourceTree/XalanSourceTreeContentHandler.cpp
index 283bae4..36bd71d 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeContentHandler.cpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeContentHandler.cpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -516,4 +516,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeContentHandler.hpp b/src/xalanc/XalanSourceTree/XalanSourceTreeContentHandler.hpp
index 041f430..f3b212c 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeContentHandler.hpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeContentHandler.hpp
@@ -40,29 +40,32 @@
 
 
 
-XALAN_DECLARE_XERCES_CLASS(Attributes)
-XALAN_DECLARE_XERCES_CLASS(AttributeList)
-XALAN_DECLARE_XERCES_CLASS(ContentHandler)
-XALAN_DECLARE_XERCES_CLASS(DTDHandler)
-XALAN_DECLARE_XERCES_CLASS(LexicalHandler)
-XALAN_DECLARE_XERCES_CLASS(Locator)
+namespace XERCES_CPP_NAMESPACE
+{
+    class Attributes;
+    class AttributeList;
+    class ContentHandler;
+    class DTDHandler;
+    class LexicalHandler;
+    class Locator;
+}
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
-XALAN_USING_XERCES(Locator)
+using xercesc::Locator;
 
 
 
-typedef XERCES_CPP_NAMESPACE_QUALIFIER Attributes       AttributesType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER AttributeList    AttributeListType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER ContentHandler   ContentHandlerType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER DTDHandler       DTDHandlerType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER LexicalHandler   LexicalHandlerType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER Locator          LocatorType;
+typedef xercesc::Attributes       AttributesType;
+typedef xercesc::AttributeList    AttributeListType;
+typedef xercesc::ContentHandler   ContentHandlerType;
+typedef xercesc::DTDHandler       DTDHandlerType;
+typedef xercesc::LexicalHandler   LexicalHandlerType;
+typedef xercesc::Locator          LocatorType;
 
 
 
@@ -270,7 +273,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeDOMSupport.cpp b/src/xalanc/XalanSourceTree/XalanSourceTreeDOMSupport.cpp
index 1194547..6b35ce4 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeDOMSupport.cpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeDOMSupport.cpp
@@ -39,7 +39,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -110,4 +110,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeDOMSupport.hpp b/src/xalanc/XalanSourceTree/XalanSourceTreeDOMSupport.hpp
index 021623e..473dfc3 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeDOMSupport.hpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeDOMSupport.hpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -82,7 +82,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeDocument.cpp b/src/xalanc/XalanSourceTree/XalanSourceTreeDocument.cpp
index 67650ce..9ae34d0 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeDocument.cpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeDocument.cpp
@@ -41,7 +41,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -1384,4 +1384,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeDocument.hpp b/src/xalanc/XalanSourceTree/XalanSourceTreeDocument.hpp
index 804f8ef..909aa59 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeDocument.hpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeDocument.hpp
@@ -53,17 +53,20 @@
 
 
 
-XALAN_DECLARE_XERCES_CLASS(Attributes)
-XALAN_DECLARE_XERCES_CLASS(AttributeList)
+namespace XERCES_CPP_NAMESPACE
+{
+    class Attributes;
+    class AttributeList;
+}
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
-typedef XERCES_CPP_NAMESPACE_QUALIFIER Attributes       AttributesType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER AttributeList    AttributeListType;
+typedef xercesc::Attributes       AttributesType;
+typedef xercesc::AttributeList    AttributeListType;
 
 
 
@@ -476,7 +479,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeDocumentFragment.cpp b/src/xalanc/XalanSourceTree/XalanSourceTreeDocumentFragment.cpp
index 60609ae..f86d20c 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeDocumentFragment.cpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeDocumentFragment.cpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -155,11 +155,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-XalanDocument*
-#else
 XalanSourceTreeDocument*
-#endif
 XalanSourceTreeDocumentFragment::getOwnerDocument() const
 {
     return m_ownerDocument;
@@ -246,4 +242,4 @@
 }
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeDocumentFragment.hpp b/src/xalanc/XalanSourceTree/XalanSourceTreeDocumentFragment.hpp
index 5c9a252..0aabc44 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeDocumentFragment.hpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeDocumentFragment.hpp
@@ -30,13 +30,11 @@
 
 
 
-#if !defined(XALAN_NO_COVARIANT_RETURN_TYPE)
 #include <xalanc/XalanSourceTree/XalanSourceTreeDocument.hpp>
-#endif
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -96,11 +94,7 @@
     virtual const XalanNamedNodeMap*
     getAttributes() const;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual XalanDocument*
-#else
     virtual XalanSourceTreeDocument*
-#endif
     getOwnerDocument() const;
 
     virtual const XalanDOMString&
@@ -153,7 +147,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeElement.cpp b/src/xalanc/XalanSourceTree/XalanSourceTreeElement.cpp
index 74945c4..0d50d53 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeElement.cpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeElement.cpp
@@ -37,7 +37,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -309,4 +309,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeElement.hpp b/src/xalanc/XalanSourceTree/XalanSourceTreeElement.hpp
index c847546..0fd1613 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeElement.hpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeElement.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -243,7 +243,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeElementA.cpp b/src/xalanc/XalanSourceTree/XalanSourceTreeElementA.cpp
index 417ffce..d50fdef 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeElementA.cpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeElementA.cpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -154,4 +154,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeElementA.hpp b/src/xalanc/XalanSourceTree/XalanSourceTreeElementA.hpp
index f2aa6c5..19c2ef8 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeElementA.hpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeElementA.hpp
@@ -32,7 +32,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -131,7 +131,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeElementAAllocator.cpp b/src/xalanc/XalanSourceTree/XalanSourceTreeElementAAllocator.cpp
index 37979ab..60a5219 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeElementAAllocator.cpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeElementAAllocator.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -80,4 +80,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeElementAAllocator.hpp b/src/xalanc/XalanSourceTree/XalanSourceTreeElementAAllocator.hpp
index 046d526..6caf5d8 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeElementAAllocator.hpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeElementAAllocator.hpp
@@ -33,7 +33,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -135,7 +135,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeElementANS.cpp b/src/xalanc/XalanSourceTree/XalanSourceTreeElementANS.cpp
index 1132084..9a2e952 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeElementANS.cpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeElementANS.cpp
@@ -19,7 +19,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -83,4 +83,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeElementANS.hpp b/src/xalanc/XalanSourceTree/XalanSourceTreeElementANS.hpp
index ed72229..64f1761 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeElementANS.hpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeElementANS.hpp
@@ -28,7 +28,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -100,7 +100,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeElementANSAllocator.cpp b/src/xalanc/XalanSourceTree/XalanSourceTreeElementANSAllocator.cpp
index e729dd8..3af8dad 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeElementANSAllocator.cpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeElementANSAllocator.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -86,4 +86,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeElementANSAllocator.hpp b/src/xalanc/XalanSourceTree/XalanSourceTreeElementANSAllocator.hpp
index 6bed2e1..750f312 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeElementANSAllocator.hpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeElementANSAllocator.hpp
@@ -33,7 +33,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -141,7 +141,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeElementNA.cpp b/src/xalanc/XalanSourceTree/XalanSourceTreeElementNA.cpp
index 6982631..b65d2c5 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeElementNA.cpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeElementNA.cpp
@@ -25,7 +25,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -92,4 +92,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeElementNA.hpp b/src/xalanc/XalanSourceTree/XalanSourceTreeElementNA.hpp
index 0738496..6a4bdcb 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeElementNA.hpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeElementNA.hpp
@@ -32,7 +32,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -93,7 +93,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeElementNAAllocator.cpp b/src/xalanc/XalanSourceTree/XalanSourceTreeElementNAAllocator.cpp
index 8c6f7ae..2df7624 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeElementNAAllocator.cpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeElementNAAllocator.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -76,4 +76,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeElementNAAllocator.hpp b/src/xalanc/XalanSourceTree/XalanSourceTreeElementNAAllocator.hpp
index 1833756..35c3dd9 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeElementNAAllocator.hpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeElementNAAllocator.hpp
@@ -33,7 +33,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -131,7 +131,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeElementNANS.cpp b/src/xalanc/XalanSourceTree/XalanSourceTreeElementNANS.cpp
index 80a9f1e..4880ac2 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeElementNANS.cpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeElementNANS.cpp
@@ -21,7 +21,7 @@
 #include <xalanc/Include/XalanMemMgrAutoPtr.hpp>
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -82,4 +82,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeElementNANS.hpp b/src/xalanc/XalanSourceTree/XalanSourceTreeElementNANS.hpp
index 8283bba..663eb0d 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeElementNANS.hpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeElementNANS.hpp
@@ -28,7 +28,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -96,7 +96,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeElementNANSAllocator.cpp b/src/xalanc/XalanSourceTree/XalanSourceTreeElementNANSAllocator.cpp
index d396c73..b66d3fe 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeElementNANSAllocator.cpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeElementNANSAllocator.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -82,4 +82,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeElementNANSAllocator.hpp b/src/xalanc/XalanSourceTree/XalanSourceTreeElementNANSAllocator.hpp
index c3d510b..57d8458 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeElementNANSAllocator.hpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeElementNANSAllocator.hpp
@@ -33,7 +33,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -139,7 +139,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeHelper.cpp b/src/xalanc/XalanSourceTree/XalanSourceTreeHelper.cpp
index 314c8eb..30859c4 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeHelper.cpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeHelper.cpp
@@ -37,7 +37,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -521,4 +521,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeHelper.hpp b/src/xalanc/XalanSourceTree/XalanSourceTreeHelper.hpp
index 0a8a81c..c048f02 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeHelper.hpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeHelper.hpp
@@ -28,7 +28,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -160,7 +160,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeInit.cpp b/src/xalanc/XalanSourceTree/XalanSourceTreeInit.cpp
index be05158..77d64f8 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeInit.cpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeInit.cpp
@@ -26,7 +26,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -85,4 +85,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeInit.hpp b/src/xalanc/XalanSourceTree/XalanSourceTreeInit.hpp
index c798e7c..9fa18aa 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeInit.hpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeInit.hpp
@@ -44,7 +44,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -83,7 +83,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeParserLiaison.cpp b/src/xalanc/XalanSourceTree/XalanSourceTreeParserLiaison.cpp
index 5f5b248..7aa0dff 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeParserLiaison.cpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeParserLiaison.cpp
@@ -44,7 +44,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -134,7 +134,7 @@
 void
 XalanSourceTreeParserLiaison::ensureReader()
 {
-    XALAN_USING_XERCES(XMLUni)
+    using xercesc::XMLUni;
 
     if (m_xmlReader == 0)
     {
@@ -508,7 +508,7 @@
 SAX2XMLReaderImpl*
 XalanSourceTreeParserLiaison::createReader()
 {
-    XALAN_USING_XERCES(XMLUni)
+    using xercesc::XMLUni;
 
     typedef XalanAutoPtr<SAX2XMLReaderImpl> AutoPtrType;
 
@@ -529,4 +529,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeParserLiaison.hpp b/src/xalanc/XalanSourceTree/XalanSourceTreeParserLiaison.hpp
index 2d74414..86a3e19 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeParserLiaison.hpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeParserLiaison.hpp
@@ -33,14 +33,17 @@
 
 
 
-XALAN_DECLARE_XERCES_CLASS(ContentHandler)
-XALAN_DECLARE_XERCES_CLASS(DTDHandler)
-XALAN_DECLARE_XERCES_CLASS(LexicalHandler)
-XALAN_DECLARE_XERCES_CLASS(SAX2XMLReaderImpl)
+namespace XERCES_CPP_NAMESPACE
+{
+    class ContentHandler;
+    class DTDHandler;
+    class LexicalHandler;
+    class SAX2XMLReaderImpl;
+}
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -50,16 +53,16 @@
 
 
 /*
-typedef XERCES_CPP_NAMESPACE_QUALIFIER ContentHandler       ContentHandlerType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER DTDHandler           DTDHandlerType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER LexicalHandler       LexicalHandlerType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER SAX2XMLReader        SAX2XMLReaderType;
+typedef xercesc::ContentHandler       ContentHandlerType;
+typedef xercesc::DTDHandler           DTDHandlerType;
+typedef xercesc::LexicalHandler       LexicalHandlerType;
+typedef xercesc::SAX2XMLReader        SAX2XMLReaderType;
 */
 
-XALAN_USING_XERCES(ContentHandler)
-XALAN_USING_XERCES(DTDHandler)
-XALAN_USING_XERCES(LexicalHandler)
-XALAN_USING_XERCES(SAX2XMLReaderImpl)
+using xercesc::ContentHandler;
+using xercesc::DTDHandler;
+using xercesc::LexicalHandler;
+using xercesc::SAX2XMLReaderImpl;
 
 
 class XALAN_XALANSOURCETREE_EXPORT  XalanSourceTreeParserLiaison : public XMLParserLiaison
@@ -386,7 +389,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeProcessingInstruction.cpp b/src/xalanc/XalanSourceTree/XalanSourceTreeProcessingInstruction.cpp
index 93a9e29..dc622d5 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeProcessingInstruction.cpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeProcessingInstruction.cpp
@@ -36,7 +36,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -307,4 +307,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeProcessingInstruction.hpp b/src/xalanc/XalanSourceTree/XalanSourceTreeProcessingInstruction.hpp
index ff4c9c0..3fb0849 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeProcessingInstruction.hpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeProcessingInstruction.hpp
@@ -32,7 +32,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -200,7 +200,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeProcessingInstructionAllocator.cpp b/src/xalanc/XalanSourceTree/XalanSourceTreeProcessingInstructionAllocator.cpp
index f8bf278..6c78e82 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeProcessingInstructionAllocator.cpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeProcessingInstructionAllocator.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -75,4 +75,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeProcessingInstructionAllocator.hpp b/src/xalanc/XalanSourceTree/XalanSourceTreeProcessingInstructionAllocator.hpp
index fe0089f..048b764 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeProcessingInstructionAllocator.hpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeProcessingInstructionAllocator.hpp
@@ -33,7 +33,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -131,7 +131,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeText.cpp b/src/xalanc/XalanSourceTree/XalanSourceTreeText.cpp
index 7fded41..a0d98ff 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeText.cpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeText.cpp
@@ -35,7 +35,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -333,4 +333,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeText.hpp b/src/xalanc/XalanSourceTree/XalanSourceTreeText.hpp
index 8d893c3..59b08f2 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeText.hpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeText.hpp
@@ -32,7 +32,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -203,7 +203,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeTextAllocator.cpp b/src/xalanc/XalanSourceTree/XalanSourceTreeTextAllocator.cpp
index 31327ce..9e42136 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeTextAllocator.cpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeTextAllocator.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -71,4 +71,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeTextAllocator.hpp b/src/xalanc/XalanSourceTree/XalanSourceTreeTextAllocator.hpp
index 26e342d..b3989ed 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeTextAllocator.hpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeTextAllocator.hpp
@@ -33,7 +33,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -127,7 +127,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeTextIWS.cpp b/src/xalanc/XalanSourceTree/XalanSourceTreeTextIWS.cpp
index 4f94420..b732388 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeTextIWS.cpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeTextIWS.cpp
@@ -19,7 +19,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -54,4 +54,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeTextIWS.hpp b/src/xalanc/XalanSourceTree/XalanSourceTreeTextIWS.hpp
index 68eabc9..530b99d 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeTextIWS.hpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeTextIWS.hpp
@@ -28,7 +28,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -75,7 +75,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeTextIWSAllocator.cpp b/src/xalanc/XalanSourceTree/XalanSourceTreeTextIWSAllocator.cpp
index 776b85b..4774013 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeTextIWSAllocator.cpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeTextIWSAllocator.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -71,4 +71,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanSourceTree/XalanSourceTreeTextIWSAllocator.hpp b/src/xalanc/XalanSourceTree/XalanSourceTreeTextIWSAllocator.hpp
index 5bf58d9..52ca131 100644
--- a/src/xalanc/XalanSourceTree/XalanSourceTreeTextIWSAllocator.hpp
+++ b/src/xalanc/XalanSourceTree/XalanSourceTreeTextIWSAllocator.hpp
@@ -33,7 +33,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -127,7 +127,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanTransformer/XalanCAPI.cpp b/src/xalanc/XalanTransformer/XalanCAPI.cpp
index 8654b4d..4908d8d 100644
--- a/src/xalanc/XalanTransformer/XalanCAPI.cpp
+++ b/src/xalanc/XalanTransformer/XalanCAPI.cpp
@@ -20,11 +20,7 @@
 #include <xercesc/util/PlatformUtils.hpp>
 
 #include <cassert>
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <strstream.h>
-#else
 #include <strstream>
-#endif
 
 #include "XalanCAPI.h"
 #include "XalanTransformer.hpp"
@@ -32,20 +28,20 @@
 
 #include "xalanc/Include/XalanMemoryManagement.hpp"
 
-XALAN_USING_STD(istrstream)
+using std::istrstream;
 
-XALAN_USING_XALAN(XalanAllocationGuard)
-XALAN_USING_XALAN(XalanCompiledStylesheet)
-XALAN_USING_XALAN(XalanDOMString)
-XALAN_USING_XALAN(XalanParsedSource)
-XALAN_USING_XALAN(XalanTransformer)
-XALAN_USING_XERCES(XMLPlatformUtils)
-XALAN_USING_XERCES(MemoryManager)
+using xalanc::XalanAllocationGuard;
+using xalanc::XalanCompiledStylesheet;
+using xalanc::XalanDOMString;
+using xalanc::XalanParsedSource;
+using xalanc::XalanTransformer;
+using xercesc::XMLPlatformUtils;
+using xercesc::MemoryManager;
 
-XALAN_USING_XALAN(XalanMemMgrAutoPtr)
-XALAN_USING_XALAN(XalanMemMgrs)
-XALAN_USING_XALAN(XSLTInputSource)
-XALAN_USING_XALAN(XSLTResultTarget)
+using xalanc::XalanMemMgrAutoPtr;
+using xalanc::XalanMemMgrs;
+using xalanc::XSLTInputSource;
+using xalanc::XSLTResultTarget;
 
 static bool fInitialized = false;
 
@@ -196,7 +192,7 @@
             char**          theOutput,
             XalanHandle     theXalanHandle)
 {
-    XALAN_USING_STD(ostrstream)
+    using std::ostrstream;
 
     int status = 0;     
 
@@ -243,7 +239,7 @@
             char**          theOutput,
             XalanHandle     theXalanHandle)
 {
-    XALAN_USING_STD(ostrstream)
+    using std::ostrstream;
 
     ostrstream  theOutputStream;    
 
diff --git a/src/xalanc/XalanTransformer/XalanCompiledStylesheet.hpp b/src/xalanc/XalanTransformer/XalanCompiledStylesheet.hpp
index a9bc2a8..eca8dfc 100644
--- a/src/xalanc/XalanTransformer/XalanCompiledStylesheet.hpp
+++ b/src/xalanc/XalanTransformer/XalanCompiledStylesheet.hpp
@@ -25,7 +25,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -50,7 +50,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanTransformer/XalanCompiledStylesheetDefault.cpp b/src/xalanc/XalanTransformer/XalanCompiledStylesheetDefault.cpp
index 64be239..c5ca3c8 100644
--- a/src/xalanc/XalanTransformer/XalanCompiledStylesheetDefault.cpp
+++ b/src/xalanc/XalanTransformer/XalanCompiledStylesheetDefault.cpp
@@ -23,7 +23,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -152,4 +152,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanTransformer/XalanCompiledStylesheetDefault.hpp b/src/xalanc/XalanTransformer/XalanCompiledStylesheetDefault.hpp
index 5c6a65d..25c90de 100644
--- a/src/xalanc/XalanTransformer/XalanCompiledStylesheetDefault.hpp
+++ b/src/xalanc/XalanTransformer/XalanCompiledStylesheetDefault.hpp
@@ -42,20 +42,23 @@
 
 
 
-XALAN_DECLARE_XERCES_CLASS(EntityResolver)
-XALAN_DECLARE_XERCES_CLASS(ErrorHandler)
+namespace XERCES_CPP_NAMESPACE
+{
+    class EntityResolver;
+    class ErrorHandler;
+}
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
-typedef XERCES_CPP_NAMESPACE_QUALIFIER EntityResolver   EntityResolverType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER ErrorHandler     ErrorHandlerType;
+typedef xercesc::EntityResolver   EntityResolverType;
+typedef xercesc::ErrorHandler     ErrorHandlerType;
 
-XALAN_USING_XERCES(EntityResolver)
-XALAN_USING_XERCES(ErrorHandler)
+using xercesc::EntityResolver;
+using xercesc::ErrorHandler;
 
 
 class XALAN_TRANSFORMER_EXPORT XalanCompiledStylesheetDefault : public XalanCompiledStylesheet
@@ -95,7 +98,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanTransformer/XalanDefaultDocumentBuilder.cpp b/src/xalanc/XalanTransformer/XalanDefaultDocumentBuilder.cpp
index 6024617..16b0b9a 100644
--- a/src/xalanc/XalanTransformer/XalanDefaultDocumentBuilder.cpp
+++ b/src/xalanc/XalanTransformer/XalanDefaultDocumentBuilder.cpp
@@ -28,7 +28,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -119,4 +119,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanTransformer/XalanDefaultDocumentBuilder.hpp b/src/xalanc/XalanTransformer/XalanDefaultDocumentBuilder.hpp
index 5ce0534..9d8cd66 100644
--- a/src/xalanc/XalanTransformer/XalanDefaultDocumentBuilder.hpp
+++ b/src/xalanc/XalanTransformer/XalanDefaultDocumentBuilder.hpp
@@ -35,7 +35,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -99,7 +99,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanTransformer/XalanDefaultParsedSource.cpp b/src/xalanc/XalanTransformer/XalanDefaultParsedSource.cpp
index affa919..9340f45 100644
--- a/src/xalanc/XalanTransformer/XalanDefaultParsedSource.cpp
+++ b/src/xalanc/XalanTransformer/XalanDefaultParsedSource.cpp
@@ -39,7 +39,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -194,7 +194,7 @@
         {
             URISupport::getURLStringFromString(theSystemID, m_uri);
         }
-        catch(const XERCES_CPP_NAMESPACE_QUALIFIER XMLException&)
+        catch(const xercesc::XMLException&)
         {
             // Assume that any exception here relates to get the url from
             // the system ID.  We'll assume that it's just a fake base identifier
@@ -274,4 +274,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanTransformer/XalanDefaultParsedSource.hpp b/src/xalanc/XalanTransformer/XalanDefaultParsedSource.hpp
index 42ce7ce..daa6112 100644
--- a/src/xalanc/XalanTransformer/XalanDefaultParsedSource.hpp
+++ b/src/xalanc/XalanTransformer/XalanDefaultParsedSource.hpp
@@ -35,7 +35,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -184,7 +184,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanTransformer/XalanDocumentBuilder.hpp b/src/xalanc/XalanTransformer/XalanDocumentBuilder.hpp
index 6c99d6b..287767c 100644
--- a/src/xalanc/XalanTransformer/XalanDocumentBuilder.hpp
+++ b/src/xalanc/XalanTransformer/XalanDocumentBuilder.hpp
@@ -32,19 +32,22 @@
 
 
 
-XALAN_DECLARE_XERCES_CLASS(ContentHandler)
-XALAN_DECLARE_XERCES_CLASS(DTDHandler)
-XALAN_DECLARE_XERCES_CLASS(LexicalHandler)
+namespace XERCES_CPP_NAMESPACE
+{
+    class ContentHandler;
+    class DTDHandler;
+    class LexicalHandler;
+}
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
-typedef XERCES_CPP_NAMESPACE_QUALIFIER ContentHandler       ContentHandlerType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER DTDHandler           DTDHandlerType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER LexicalHandler       LexicalHandlerType;
+typedef xercesc::ContentHandler       ContentHandlerType;
+typedef xercesc::DTDHandler           DTDHandlerType;
+typedef xercesc::LexicalHandler       LexicalHandlerType;
 
 
 
@@ -91,7 +94,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanTransformer/XalanParsedSource.cpp b/src/xalanc/XalanTransformer/XalanParsedSource.cpp
index deeac20..03dc03b 100644
--- a/src/xalanc/XalanTransformer/XalanParsedSource.cpp
+++ b/src/xalanc/XalanTransformer/XalanParsedSource.cpp
@@ -19,7 +19,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
     
@@ -35,4 +35,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanTransformer/XalanParsedSource.hpp b/src/xalanc/XalanTransformer/XalanParsedSource.hpp
index 9c10641..faeb9a9 100644
--- a/src/xalanc/XalanTransformer/XalanParsedSource.hpp
+++ b/src/xalanc/XalanTransformer/XalanParsedSource.hpp
@@ -33,7 +33,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -115,7 +115,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanTransformer/XalanSourceTreeWrapperParsedSource.cpp b/src/xalanc/XalanTransformer/XalanSourceTreeWrapperParsedSource.cpp
index b33e957..0c04f85 100644
--- a/src/xalanc/XalanTransformer/XalanSourceTreeWrapperParsedSource.cpp
+++ b/src/xalanc/XalanTransformer/XalanSourceTreeWrapperParsedSource.cpp
@@ -33,7 +33,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -88,4 +88,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanTransformer/XalanSourceTreeWrapperParsedSource.hpp b/src/xalanc/XalanTransformer/XalanSourceTreeWrapperParsedSource.hpp
index f313148..a61544c 100644
--- a/src/xalanc/XalanTransformer/XalanSourceTreeWrapperParsedSource.hpp
+++ b/src/xalanc/XalanTransformer/XalanSourceTreeWrapperParsedSource.hpp
@@ -33,7 +33,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -87,7 +87,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanTransformer/XalanTransformer.cpp b/src/xalanc/XalanTransformer/XalanTransformer.cpp
index 3a93cdb..553f7af 100644
--- a/src/xalanc/XalanTransformer/XalanTransformer.cpp
+++ b/src/xalanc/XalanTransformer/XalanTransformer.cpp
@@ -18,12 +18,8 @@
 #include "XalanTransformer.hpp"
 
 #include <algorithm>
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <iostream.h>
-#else
 #include <iostream>
-#endif
-
+#include <cstring>
 
 
 #include <xercesc/sax/SAXParseException.hpp>
@@ -91,7 +87,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 const XSLTInputSource*  XalanTransformer::s_emptyInputSource = 0;
@@ -119,11 +115,7 @@
     m_externalNoNamespaceSchemaLocation(m_memoryManager),
     m_problemListener(0),
     m_errorStream(0),
-#if defined(XALAN_NO_STD_NAMESPACE)
-    m_warningStream(&cerr),
-#else
     m_warningStream(&std::cerr),
-#endif
     m_outputEncoding(m_memoryManager),
     m_topXObjectFactory(XObjectFactoryDefault::create(m_memoryManager)),
     m_stylesheetExecutionContext(StylesheetExecutionContextDefault::create(m_memoryManager))
@@ -150,7 +142,7 @@
     // Clean up Top-Level Parameters
     clearStylesheetParams();
 
-    XALAN_USING_STD(for_each)
+    using std::for_each;
 
     // Clean up the XalanCompiledStylesheet vector.
     for_each(
@@ -431,9 +423,9 @@
 
 
 
-XALAN_USING_XERCES(XMLException)
-XALAN_USING_XERCES(SAXParseException)
-XALAN_USING_XERCES(SAXException)
+using xercesc::XMLException;
+using xercesc::SAXParseException;
+using xercesc::SAXException;
 
 
 
@@ -544,9 +536,7 @@
 
         theMessage.resize(theLength + 1);
 
-#if defined(XALAN_STRICT_ANSI_HEADERS)
-            XALAN_USING_STD(strncpy);
-#endif
+            using std::strncpy;;
 
             strncpy(
                 &*theMessage.begin(),
@@ -709,7 +699,7 @@
 int
 XalanTransformer::destroyStylesheet(const XalanCompiledStylesheet*  theStylesheet)
 {
-    XALAN_USING_STD(find)
+    using std::find;
 
     const CompiledStylesheetPtrVectorType::iterator     i =
         find(
@@ -836,7 +826,7 @@
 int
 XalanTransformer::destroyParsedSource(const XalanParsedSource*  theParsedSource)
 {
-    XALAN_USING_STD(find)
+    using std::find;
 
     const ParsedSourcePtrVectorType::iterator   i =
         find(
@@ -947,7 +937,7 @@
 bool
 XalanTransformer::removeTraceListener(TraceListener*    theTraceListener)
 {
-    XALAN_USING_STD(find)
+    using std::find;
 
     const TraceListenerVectorType::iterator     i =
         find(
@@ -1524,4 +1514,4 @@
 }
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanTransformer/XalanTransformer.hpp b/src/xalanc/XalanTransformer/XalanTransformer.hpp
index fb61a7e..b07caa3 100644
--- a/src/xalanc/XalanTransformer/XalanTransformer.hpp
+++ b/src/xalanc/XalanTransformer/XalanTransformer.hpp
@@ -25,11 +25,7 @@
 
 
 #include <cassert>
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-class ostream;
-#else
 #include <iosfwd>
-#endif
 #include <algorithm>
 
 
@@ -50,22 +46,25 @@
 
 
 
-XALAN_DECLARE_XERCES_CLASS(EntityResolver)
-XALAN_DECLARE_XERCES_CLASS(ErrorHandler)
-XALAN_DECLARE_XERCES_CLASS(XMLEntityResolver)
+namespace XERCES_CPP_NAMESPACE
+{
+    class EntityResolver;
+    class ErrorHandler;
+    class XMLEntityResolver;
+}
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
-typedef XERCES_CPP_NAMESPACE_QUALIFIER EntityResolver   EntityResolverType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER ErrorHandler     ErrorHandlerType;
+typedef xercesc::EntityResolver   EntityResolverType;
+typedef xercesc::ErrorHandler     ErrorHandlerType;
 
-XALAN_USING_XERCES(EntityResolver)
-XALAN_USING_XERCES(ErrorHandler)
-XALAN_USING_XERCES(XMLEntityResolver)
+using xercesc::EntityResolver;
+using xercesc::ErrorHandler;
+using xercesc::XMLEntityResolver;
 
 
 
@@ -93,11 +92,7 @@
 
 public:
     
-#if defined(XALAN_NO_STD_NAMESPACE)
-    typedef ostream         StreamType;
-#else
     typedef std::ostream    StreamType;
-#endif
 
     typedef XalanVector<const XalanCompiledStylesheet*> CompiledStylesheetPtrVectorType;
     typedef XalanVector<const XalanParsedSource*>       ParsedSourcePtrVectorType;
@@ -1206,7 +1201,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanTransformer/XalanTransformerOutputStream.cpp b/src/xalanc/XalanTransformer/XalanTransformerOutputStream.cpp
index b4cbb17..ff7a7ab 100644
--- a/src/xalanc/XalanTransformer/XalanTransformerOutputStream.cpp
+++ b/src/xalanc/XalanTransformer/XalanTransformerOutputStream.cpp
@@ -23,7 +23,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -84,4 +84,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanTransformer/XalanTransformerOutputStream.hpp b/src/xalanc/XalanTransformer/XalanTransformerOutputStream.hpp
index fbdd417..c17ddcf 100644
--- a/src/xalanc/XalanTransformer/XalanTransformerOutputStream.hpp
+++ b/src/xalanc/XalanTransformer/XalanTransformerOutputStream.hpp
@@ -30,7 +30,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -84,7 +84,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanTransformer/XalanTransformerProblemListener.cpp b/src/xalanc/XalanTransformer/XalanTransformerProblemListener.cpp
index eed7c67..9bb527f 100644
--- a/src/xalanc/XalanTransformer/XalanTransformerProblemListener.cpp
+++ b/src/xalanc/XalanTransformer/XalanTransformerProblemListener.cpp
@@ -23,11 +23,7 @@
 
 
 
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <iostream.h>
-#else
 #include <ostream>
-#endif
 
 
 
@@ -36,7 +32,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -184,4 +180,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanTransformer/XalanTransformerProblemListener.hpp b/src/xalanc/XalanTransformer/XalanTransformerProblemListener.hpp
index 2051dd1..8adbca6 100644
--- a/src/xalanc/XalanTransformer/XalanTransformerProblemListener.hpp
+++ b/src/xalanc/XalanTransformer/XalanTransformerProblemListener.hpp
@@ -26,11 +26,7 @@
 
 
 
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-class ostream;
-#else
 #include <iosfwd>
-#endif
 
 
 
@@ -43,7 +39,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -51,11 +47,7 @@
 {
 public:
 
-#if defined(XALAN_NO_STD_NAMESPACE)
-    typedef ostream         StreamType;
-#else
     typedef std::ostream    StreamType;
-#endif
 
     XalanTransformerProblemListener(
             MemoryManager&  theManager,
@@ -111,7 +103,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanTransformer/XercesDOMParsedSource.cpp b/src/xalanc/XalanTransformer/XercesDOMParsedSource.cpp
index 2e17ce4..c9a7f6c 100644
--- a/src/xalanc/XalanTransformer/XercesDOMParsedSource.cpp
+++ b/src/xalanc/XalanTransformer/XercesDOMParsedSource.cpp
@@ -31,7 +31,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -110,7 +110,7 @@
         {
             URISupport::getURLStringFromString(theSystemID, m_uri);
         }
-        catch(const XERCES_CPP_NAMESPACE_QUALIFIER XMLException&)
+        catch(const xercesc::XMLException&)
         {
             // Assume that any exception here relates to get the url from
             // the system ID.  We'll assume that it's just a fake base identifier
@@ -189,4 +189,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanTransformer/XercesDOMParsedSource.hpp b/src/xalanc/XalanTransformer/XercesDOMParsedSource.hpp
index 202ab3b..18fa65f 100644
--- a/src/xalanc/XalanTransformer/XercesDOMParsedSource.hpp
+++ b/src/xalanc/XalanTransformer/XercesDOMParsedSource.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -119,7 +119,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XalanTransformer/XercesDOMWrapperParsedSource.cpp b/src/xalanc/XalanTransformer/XercesDOMWrapperParsedSource.cpp
index 56993ce..0661cc4 100644
--- a/src/xalanc/XalanTransformer/XercesDOMWrapperParsedSource.cpp
+++ b/src/xalanc/XalanTransformer/XercesDOMWrapperParsedSource.cpp
@@ -36,7 +36,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 #if defined(XALAN_BUILD_DEPRECATED_DOM_BRIDGE)
@@ -115,4 +115,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XalanTransformer/XercesDOMWrapperParsedSource.hpp b/src/xalanc/XalanTransformer/XercesDOMWrapperParsedSource.hpp
index a8e3203..0c39057 100644
--- a/src/xalanc/XalanTransformer/XercesDOMWrapperParsedSource.hpp
+++ b/src/xalanc/XalanTransformer/XercesDOMWrapperParsedSource.hpp
@@ -33,17 +33,20 @@
 
 
 
-XALAN_DECLARE_XERCES_CLASS(DOM_Document)
-XALAN_DECLARE_XERCES_CLASS(DOMDocument)
+namespace XERCES_CPP_NAMESPACE
+{
+    class DOM_Document;
+    class DOMDocument;
+}
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
-typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_Document DOM_Document_Type;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument  DOMDocument_Type;
+typedef xercesc::DOM_Document DOM_Document_Type;
+typedef xercesc::DOMDocument  DOMDocument_Type;
 
 
 
@@ -123,7 +126,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/FormatterToDeprecatedXercesDOM.cpp b/src/xalanc/XercesParserLiaison/Deprecated/FormatterToDeprecatedXercesDOM.cpp
index e3af7da..a76921d 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/FormatterToDeprecatedXercesDOM.cpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/FormatterToDeprecatedXercesDOM.cpp
@@ -65,7 +65,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -166,7 +166,7 @@
 
         m_currentElem = elem;
     }
-    catch(const XERCES_CPP_NAMESPACE_QUALIFIER DOMException&    theException)
+    catch(const xercesc::DOMException&    theException)
     {
         throw XercesDOMException(theException);
     }
@@ -192,7 +192,7 @@
             m_currentElem = 0;
         }
     }
-    catch(const XERCES_CPP_NAMESPACE_QUALIFIER DOMException&    theException)
+    catch(const xercesc::DOMException&    theException)
     {
         throw XercesDOMException(theException);
     }
@@ -221,7 +221,7 @@
 
         cdata(chars, length);
     }
-    catch(const XERCES_CPP_NAMESPACE_QUALIFIER DOMException&    theException)
+    catch(const xercesc::DOMException&    theException)
     {
         throw XercesDOMException(theException);
     }
@@ -243,7 +243,7 @@
 
         append(theXercesNode);
     }
-    catch(const XERCES_CPP_NAMESPACE_QUALIFIER DOMException&    theException)
+    catch(const xercesc::DOMException&    theException)
     {
         throw XercesDOMException(theException);
     }
@@ -269,7 +269,7 @@
 
         append(theXercesNode);
     }
-    catch(const XERCES_CPP_NAMESPACE_QUALIFIER DOMException&    theException)
+    catch(const xercesc::DOMException&    theException)
     {
         throw XercesDOMException(theException);
     }
@@ -293,7 +293,7 @@
 
         append(theXercesNode);
     }
-    catch(const XERCES_CPP_NAMESPACE_QUALIFIER DOMException&    theException)
+    catch(const xercesc::DOMException&    theException)
     {
         throw XercesDOMException(theException);
     }
@@ -322,7 +322,7 @@
 
         append(theXercesNode);
     }
-    catch(const XERCES_CPP_NAMESPACE_QUALIFIER DOMException&    theException)
+    catch(const xercesc::DOMException&    theException)
     {
         throw XercesDOMException(theException);
     }
@@ -348,7 +348,7 @@
 
         append(theXercesNode);
     }
-    catch(const XERCES_CPP_NAMESPACE_QUALIFIER DOMException&    theException)
+    catch(const xercesc::DOMException&    theException)
     {
         throw XercesDOMException(theException);
     }
@@ -470,7 +470,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 #endif //XALAN_BUILD_DEPRECATED_DOM_BRIDGE 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/FormatterToDeprecatedXercesDOM.hpp b/src/xalanc/XercesParserLiaison/Deprecated/FormatterToDeprecatedXercesDOM.hpp
index 8efa723..bdc1e19 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/FormatterToDeprecatedXercesDOM.hpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/FormatterToDeprecatedXercesDOM.hpp
@@ -53,7 +53,7 @@
 #endif
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -250,7 +250,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesAttrBridge.cpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesAttrBridge.cpp
index a5b2635..ed475a0 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesAttrBridge.cpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesAttrBridge.cpp
@@ -39,7 +39,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -150,23 +150,15 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-XalanNode*
-#else
 XercesAttrBridge*
-#endif
 XercesAttrBridge::cloneNode(bool    deep) const
 {
     assert(m_navigator.getOwnerDocument() != 0);
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    return m_navigator.cloneNode(this, m_xercesNode, deep);
-#else
     XercesAttrBridge* const     theBridge =
         static_cast<XercesAttrBridge*>(m_navigator.cloneNode(this, m_xercesNode, deep));
 
     return theBridge;
-#endif
 }
 
 
@@ -331,7 +323,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 #endif //XALAN_BUILD_DEPRECATED_DOM_BRIDGE 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesAttrBridge.hpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesAttrBridge.hpp
index ba881fb..4781565 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesAttrBridge.hpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesAttrBridge.hpp
@@ -41,7 +41,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -183,11 +183,7 @@
      *   its attributes, if it is an <code>Element</code>).
      * @return The duplicate node.
      */
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual XalanNode*
-#else
     virtual XercesAttrBridge*
-#endif
     cloneNode(bool deep) const;
 
     //@}
@@ -494,7 +490,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesAttributeBridgeAllocator.cpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesAttributeBridgeAllocator.cpp
index 2808314..3aa4118 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesAttributeBridgeAllocator.cpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesAttributeBridgeAllocator.cpp
@@ -26,7 +26,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -68,7 +68,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 #endif //XALAN_BUILD_DEPRECATED_DOM_BRIDGE 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesAttributeBridgeAllocator.hpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesAttributeBridgeAllocator.hpp
index 81b236b..e49afc9 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesAttributeBridgeAllocator.hpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesAttributeBridgeAllocator.hpp
@@ -33,7 +33,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 /**
@@ -123,7 +123,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesBridgeHelper.cpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesBridgeHelper.cpp
index 7f8fdd0..8849cad 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesBridgeHelper.cpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesBridgeHelper.cpp
@@ -37,7 +37,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -195,7 +195,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 #endif //XALAN_BUILD_DEPRECATED_DOM_BRIDGE 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesBridgeHelper.hpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesBridgeHelper.hpp
index 5abaedd..beea474 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesBridgeHelper.hpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesBridgeHelper.hpp
@@ -45,11 +45,14 @@
 
 
 
-XALAN_DECLARE_XERCES_CLASS(DOM_CharacterData)
+namespace XERCES_CPP_NAMESPACE
+{
+    class DOM_CharacterData;
+}
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 /**
@@ -129,7 +132,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesBridgeNavigator.cpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesBridgeNavigator.cpp
index afa6c63..c2d0414 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesBridgeNavigator.cpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesBridgeNavigator.cpp
@@ -35,7 +35,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -330,7 +330,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 #endif //XALAN_BUILD_DEPRECATED_DOM_BRIDGE 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesBridgeNavigator.hpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesBridgeNavigator.hpp
index eb4704b..1a8d395 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesBridgeNavigator.hpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesBridgeNavigator.hpp
@@ -37,7 +37,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -250,7 +250,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesBridgeTypes.hpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesBridgeTypes.hpp
index cafa2f9..d400cf9 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesBridgeTypes.hpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesBridgeTypes.hpp
@@ -24,69 +24,72 @@
 
 
 
-XALAN_DECLARE_XERCES_CLASS(DOM_Attr)
-XALAN_DECLARE_XERCES_CLASS(DOM_CharacterData)
-XALAN_DECLARE_XERCES_CLASS(DOM_Comment)
-XALAN_DECLARE_XERCES_CLASS(DOM_CDATASection)
-XALAN_DECLARE_XERCES_CLASS(DOM_Document)
-XALAN_DECLARE_XERCES_CLASS(DOM_DocumentFragment)
-XALAN_DECLARE_XERCES_CLASS(DOM_DocumentType)
-XALAN_DECLARE_XERCES_CLASS(DOM_DOMImplementation)
-XALAN_DECLARE_XERCES_CLASS(DOM_Element)
-XALAN_DECLARE_XERCES_CLASS(DOM_Entity)
-XALAN_DECLARE_XERCES_CLASS(DOM_EntityReference)
-XALAN_DECLARE_XERCES_CLASS(DOM_Node)
-XALAN_DECLARE_XERCES_CLASS(DOM_Text)
-XALAN_DECLARE_XERCES_CLASS(DOM_NamedNodeMap)
-XALAN_DECLARE_XERCES_CLASS(DOM_NodeList)
-XALAN_DECLARE_XERCES_CLASS(DOM_Notation)
-XALAN_DECLARE_XERCES_CLASS(DOM_ProcessingInstruction)
-XALAN_DECLARE_XERCES_CLASS(DOM_Text)
-XALAN_DECLARE_XERCES_CLASS(DOM_DocumentType)
-XALAN_DECLARE_XERCES_CLASS(DOM_DOMException)
-XALAN_DECLARE_XERCES_CLASS(DOMString)
-XALAN_DECLARE_XERCES_CLASS(AttrImpl)
-XALAN_DECLARE_XERCES_CLASS(ElementImpl)
-XALAN_DECLARE_XERCES_CLASS(NodeImpl)
-XALAN_DECLARE_XERCES_CLASS(TextImpl)
+namespace XERCES_CPP_NAMESPACE
+{
+    class DOM_Attr;
+    class DOM_CharacterData;
+    class DOM_Comment;
+    class DOM_CDATASection;
+    class DOM_Document;
+    class DOM_DocumentFragment;
+    class DOM_DocumentType;
+    class DOM_DOMImplementation;
+    class DOM_Element;
+    class DOM_Entity;
+    class DOM_EntityReference;
+    class DOM_Node;
+    class DOM_Text;
+    class DOM_NamedNodeMap;
+    class DOM_NodeList;
+    class DOM_Notation;
+    class DOM_ProcessingInstruction;
+    class DOM_Text;
+    class DOM_DocumentType;
+    class DOM_DOMException;
+    class DOMString;
+    class AttrImpl;
+    class ElementImpl;
+    class NodeImpl;
+    class TextImpl;
+}
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
-typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_Attr             DOM_AttrType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_CharacterData    DOM_CharacterDataType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_Comment          DOM_CommentType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_CDATASection     DOM_CDATASectionType;
+typedef xercesc::DOM_Attr             DOM_AttrType;
+typedef xercesc::DOM_CharacterData    DOM_CharacterDataType;
+typedef xercesc::DOM_Comment          DOM_CommentType;
+typedef xercesc::DOM_CDATASection     DOM_CDATASectionType;
 // These next two have an extra '_' because they collide without it...
-typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_DocumentType     DOM_DocumentType_Type;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_Document         DOM_Document_Type;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_DocumentFragment DOM_DocumentFragmentType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_DOMImplementation    DOM_DOMImplementationType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_Element          DOM_ElementType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_Entity           DOM_EntityType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_EntityReference  DOM_EntityReferenceType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_Node             DOM_NodeType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_Text             DOM_TextType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_NamedNodeMap     DOM_NamedNodeMapType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_NodeList         DOM_NodeListType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_Notation         DOM_NotationType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_ProcessingInstruction    DOM_ProcessingInstructionType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_Text             DOM_TextType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_DOMException     DOM_DOMExceptionType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER AttrImpl             AttrImplType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER ElementImpl          ElementImplType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER NodeImpl             NodeImplType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER TextImpl             TextImplType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER DOMString            DOMStringType;
+typedef xercesc::DOM_DocumentType     DOM_DocumentType_Type;
+typedef xercesc::DOM_Document         DOM_Document_Type;
+typedef xercesc::DOM_DocumentFragment DOM_DocumentFragmentType;
+typedef xercesc::DOM_DOMImplementation    DOM_DOMImplementationType;
+typedef xercesc::DOM_Element          DOM_ElementType;
+typedef xercesc::DOM_Entity           DOM_EntityType;
+typedef xercesc::DOM_EntityReference  DOM_EntityReferenceType;
+typedef xercesc::DOM_Node             DOM_NodeType;
+typedef xercesc::DOM_Text             DOM_TextType;
+typedef xercesc::DOM_NamedNodeMap     DOM_NamedNodeMapType;
+typedef xercesc::DOM_NodeList         DOM_NodeListType;
+typedef xercesc::DOM_Notation         DOM_NotationType;
+typedef xercesc::DOM_ProcessingInstruction    DOM_ProcessingInstructionType;
+typedef xercesc::DOM_Text             DOM_TextType;
+typedef xercesc::DOM_DOMException     DOM_DOMExceptionType;
+typedef xercesc::AttrImpl             AttrImplType;
+typedef xercesc::ElementImpl          ElementImplType;
+typedef xercesc::NodeImpl             NodeImplType;
+typedef xercesc::TextImpl             TextImplType;
+typedef xercesc::DOMString            DOMStringType;
 
 
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesCDATASectionBridge.cpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesCDATASectionBridge.cpp
index 59a51fe..643c337 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesCDATASectionBridge.cpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesCDATASectionBridge.cpp
@@ -38,7 +38,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -147,21 +147,13 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-XalanNode*
-#else
 XercesCDATASectionBridge*
-#endif
 XercesCDATASectionBridge::cloneNode(bool    deep) const
 {
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    return m_navigator.cloneNode(this, m_xercesNode, deep);
-#else
     XercesCDATASectionBridge* const theBridge =
         static_cast<XercesCDATASectionBridge*>(m_navigator.cloneNode(this, m_xercesNode, deep));
 
     return theBridge;
-#endif
 }
 
 
@@ -376,7 +368,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 #endif //XALAN_BUILD_DEPRECATED_DOM_BRIDGE 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesCDATASectionBridge.hpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesCDATASectionBridge.hpp
index e1b8c7f..48572db 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesCDATASectionBridge.hpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesCDATASectionBridge.hpp
@@ -40,7 +40,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -183,11 +183,7 @@
      *   its attributes, if it is an <code>Element</code>).
      * @return The duplicate node.
      */
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual XalanNode*
-#else
     virtual XercesCDATASectionBridge*
-#endif
     cloneNode(bool deep) const;
 
     //@}
@@ -596,7 +592,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesCommentBridge.cpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesCommentBridge.cpp
index 59a1c3c..c50a72f 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesCommentBridge.cpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesCommentBridge.cpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -143,21 +143,13 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-XalanNode*
-#else
 XercesCommentBridge*
-#endif
 XercesCommentBridge::cloneNode(bool deep) const
 {
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    return m_navigator.cloneNode(this, m_xercesNode, deep);
-#else
     XercesCommentBridge* const  theBridge =
         static_cast<XercesCommentBridge*>(m_navigator.cloneNode(this, m_xercesNode, deep));
 
     return theBridge;
-#endif
 }
 
 
@@ -354,7 +346,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 #endif //XALAN_BUILD_DEPRECATED_DOM_BRIDGE 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesCommentBridge.hpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesCommentBridge.hpp
index c3ace3b..6b52505 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesCommentBridge.hpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesCommentBridge.hpp
@@ -40,7 +40,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -183,11 +183,7 @@
      *   its attributes, if it is an <code>Element</code>).
      * @return The duplicate node.
      */
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual XalanNode*
-#else
     virtual XercesCommentBridge*
-#endif
     cloneNode(bool deep) const;
 
     //@}
@@ -566,7 +562,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesDOMImplementationBridge.cpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesDOMImplementationBridge.cpp
index bbf1c72..aa39762 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesDOMImplementationBridge.cpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesDOMImplementationBridge.cpp
@@ -40,7 +40,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -102,7 +102,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 #endif //XALAN_BUILD_DEPRECATED_DOM_BRIDGE 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesDOMImplementationBridge.hpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesDOMImplementationBridge.hpp
index 20b961c..f6b0185 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesDOMImplementationBridge.hpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesDOMImplementationBridge.hpp
@@ -32,7 +32,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -151,7 +151,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesDOM_NodeHack.cpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesDOM_NodeHack.cpp
index 02e0f8b..038bc75 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesDOM_NodeHack.cpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesDOM_NodeHack.cpp
@@ -32,7 +32,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -279,7 +279,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 #endif //XALAN_BUILD_DEPRECATED_DOM_BRIDGE 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesDOM_NodeHack.hpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesDOM_NodeHack.hpp
index 2c10e64..9c8650d 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesDOM_NodeHack.hpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesDOM_NodeHack.hpp
@@ -43,7 +43,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 /**
@@ -54,11 +54,11 @@
  * 
  * @deprecated This class is part of the deprecated Xerces DOM bridge.
  */
-class XALAN_XERCESPARSERLIAISON_EXPORT XercesDOM_NodeHack : public XERCES_CPP_NAMESPACE_QUALIFIER DOM_Node
+class XALAN_XERCESPARSERLIAISON_EXPORT XercesDOM_NodeHack : public xercesc::DOM_Node
 {
 public:
 
-    typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_Node     ParentType;
+    typedef xercesc::DOM_Node     ParentType;
 
     XercesDOM_NodeHack(NodeImplType*    theImpl = 0);
 
@@ -79,11 +79,11 @@
 
 
 
-class XALAN_XERCESPARSERLIAISON_EXPORT XercesDOM_AttrHack : public XERCES_CPP_NAMESPACE_QUALIFIER DOM_Attr
+class XALAN_XERCESPARSERLIAISON_EXPORT XercesDOM_AttrHack : public xercesc::DOM_Attr
 {
 public:
 
-    typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_Attr     ParentType;
+    typedef xercesc::DOM_Attr     ParentType;
 
     XercesDOM_AttrHack(AttrImplType*    theImpl = 0);
 
@@ -94,11 +94,11 @@
 
 
 
-class XALAN_XERCESPARSERLIAISON_EXPORT XercesDOM_ElementHack : public XERCES_CPP_NAMESPACE_QUALIFIER DOM_Element
+class XALAN_XERCESPARSERLIAISON_EXPORT XercesDOM_ElementHack : public xercesc::DOM_Element
 {
 public:
 
-    typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_Element  ParentType;
+    typedef xercesc::DOM_Element  ParentType;
 
     XercesDOM_ElementHack(ElementImplType*  theImpl = 0);
 
@@ -148,11 +148,11 @@
 
 
 
-class XALAN_XERCESPARSERLIAISON_EXPORT XercesDOM_TextHack : public XERCES_CPP_NAMESPACE_QUALIFIER DOM_Text
+class XALAN_XERCESPARSERLIAISON_EXPORT XercesDOM_TextHack : public xercesc::DOM_Text
 {
 public:
 
-    typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_Text     ParentType;
+    typedef xercesc::DOM_Text     ParentType;
 
     XercesDOM_TextHack(TextImplType*    theImpl = 0);
 
@@ -194,7 +194,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentBridge.cpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentBridge.cpp
index 1071e76..1e7abe0 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentBridge.cpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentBridge.cpp
@@ -62,7 +62,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -224,7 +224,7 @@
 void
 XercesDocumentBridge::destroyBridge()
 {
-    XALAN_USING_STD(for_each)
+    using std::for_each;
 
     // Set this to null, since it will be deleted
     // by the next for_each...
@@ -714,7 +714,7 @@
 void
 XercesDocumentBridge::destroyNode(XalanNode*    theNode)
 {
-    XALAN_USING_STD(find)
+    using std::find;
 
     const NodeVectorType::iterator  i =
         find(m_nodes.begin(), m_nodes.end(), theNode);
@@ -862,11 +862,7 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-XalanNode*
-#else
 XercesDocumentBridge*
-#endif
 XercesDocumentBridge::cloneNode(bool    deep) const
 {
     XercesDocumentBridge*   theBridge = 0;
@@ -1592,7 +1588,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 #endif //XALAN_BUILD_DEPRECATED_DOM_BRIDGE 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentBridge.hpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentBridge.hpp
index 3e4c862..a94d72d 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentBridge.hpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentBridge.hpp
@@ -66,7 +66,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -153,11 +153,7 @@
     virtual XalanDocument*
     getOwnerDocument() const;
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual XalanNode*
-#else
     virtual XercesDocumentBridge*
-#endif
     cloneNode(bool deep) const;
 
     virtual XalanNode*
@@ -559,7 +555,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentFragmentBridge.cpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentFragmentBridge.cpp
index f6bac4f..0743ea8 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentFragmentBridge.cpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentFragmentBridge.cpp
@@ -37,7 +37,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -148,21 +148,13 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-XalanNode*
-#else
 XercesDocumentFragmentBridge*
-#endif
 XercesDocumentFragmentBridge::cloneNode(bool    deep) const
 {
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    return m_navigator.cloneNode(this, m_xercesNode, deep);
-#else
     XercesDocumentFragmentBridge* const theBridge =
         static_cast<XercesDocumentFragmentBridge*>(m_navigator.cloneNode(this, m_xercesNode, deep));
 
     return theBridge;
-#endif
 }
 
 
@@ -288,7 +280,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 #endif //XALAN_BUILD_DEPRECATED_DOM_BRIDGE 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentFragmentBridge.hpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentFragmentBridge.hpp
index 94ca01d..516bc07 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentFragmentBridge.hpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentFragmentBridge.hpp
@@ -40,7 +40,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -56,7 +56,7 @@
 {
 public:
 
-    typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_DocumentFragment     DOM_DocumentFragmentType;
+    typedef xercesc::DOM_DocumentFragment     DOM_DocumentFragmentType;
 
     XercesDocumentFragmentBridge(
             const DOM_DocumentFragmentType&     theXercesDOMDocumentFragment,
@@ -184,11 +184,7 @@
      *   its attributes, if it is an <code>Element</code>).
      * @return The duplicate node.
      */
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual XalanNode*
-#else
     virtual XercesDocumentFragmentBridge*
-#endif
     cloneNode(bool deep) const;
 
     //@}
@@ -440,7 +436,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentTypeBridge.cpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentTypeBridge.cpp
index 70dfd73..085fcf2 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentTypeBridge.cpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentTypeBridge.cpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -147,24 +147,16 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-XalanNode*
-#else
 XercesDocumentTypeBridge*
-#endif
 XercesDocumentTypeBridge::cloneNode(bool    deep) const
 {
     // $$$ ToDo: Fix this!! XercesDocumentType nodes can't be cloned yet...
     assert(false);
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    return m_navigator.cloneNode(this, m_xercesNode, deep);
-#else
     XercesDocumentTypeBridge* const     theBridge =
         static_cast<XercesDocumentTypeBridge*>(m_navigator.cloneNode(this, m_xercesNode, deep));
 
     return theBridge;
-#endif
 }
 
 
@@ -345,7 +337,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 #endif //XALAN_BUILD_DEPRECATED_DOM_BRIDGE 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentTypeBridge.hpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentTypeBridge.hpp
index fad5631..fc5a577 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentTypeBridge.hpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesDocumentTypeBridge.hpp
@@ -41,7 +41,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -184,11 +184,7 @@
      *   its attributes, if it is an <code>Element</code>).
      * @return The duplicate node.
      */
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual XalanNode*
-#else
     virtual XercesDocumentTypeBridge*
-#endif
     cloneNode(bool deep) const;
 
     //@}
@@ -495,7 +491,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesElementBridge.cpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesElementBridge.cpp
index 5408547..504c33e 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesElementBridge.cpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesElementBridge.cpp
@@ -39,7 +39,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -152,21 +152,13 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-XalanNode*
-#else
 XercesElementBridge*
-#endif
 XercesElementBridge::cloneNode(bool deep) const
 {
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    return m_navigator.cloneNode(this, m_xercesNode, deep);
-#else
     XercesElementBridge* const  theBridge =
         static_cast<XercesElementBridge*>(m_navigator.cloneNode(this, m_xercesNode, deep));
 
     return theBridge;
-#endif
 }
 
 
@@ -516,7 +508,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 #endif //XALAN_BUILD_DEPRECATED_DOM_BRIDGE 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesElementBridge.hpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesElementBridge.hpp
index f8cce5a..aa3dcc8 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesElementBridge.hpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesElementBridge.hpp
@@ -46,7 +46,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -62,7 +62,7 @@
 {
 public:
 
-    typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_Element  DOM_ElementType;
+    typedef xercesc::DOM_Element  DOM_ElementType;
 
     XercesElementBridge(
             const DOM_ElementType&          theXercesElement,
@@ -191,11 +191,7 @@
      *   its attributes, if it is an <code>Element</code>).
      * @return The duplicate node.
      */
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual XalanNode*
-#else
     virtual XercesElementBridge*
-#endif
     cloneNode(bool deep) const;
 
     //@}
@@ -727,7 +723,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesElementBridgeAllocator.cpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesElementBridgeAllocator.cpp
index 679b285..cd67e10 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesElementBridgeAllocator.cpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesElementBridgeAllocator.cpp
@@ -26,7 +26,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -68,7 +68,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 #endif //XALAN_BUILD_DEPRECATED_DOM_BRIDGE 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesElementBridgeAllocator.hpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesElementBridgeAllocator.hpp
index 79e5326..effe8bb 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesElementBridgeAllocator.hpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesElementBridgeAllocator.hpp
@@ -33,7 +33,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 /**
@@ -125,7 +125,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesEntityBridge.cpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesEntityBridge.cpp
index 08a5626..6a44d5e 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesEntityBridge.cpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesEntityBridge.cpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -145,21 +145,13 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-XalanNode*
-#else
 XercesEntityBridge*
-#endif
 XercesEntityBridge::cloneNode(bool  deep) const
 {
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    return m_navigator.cloneNode(this, m_xercesNode, deep);
-#else
     XercesEntityBridge* const   theBridge =
         static_cast<XercesEntityBridge*>(m_navigator.cloneNode(this, m_xercesNode, deep));
 
     return theBridge;
-#endif
 }
 
 
@@ -307,7 +299,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 #endif //XALAN_BUILD_DEPRECATED_DOM_BRIDGE 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesEntityBridge.hpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesEntityBridge.hpp
index e3a6588..465c613 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesEntityBridge.hpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesEntityBridge.hpp
@@ -40,7 +40,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -56,7 +56,7 @@
 {
 public:
 
-    typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_Entity           DOM_EntityType;
+    typedef xercesc::DOM_Entity           DOM_EntityType;
 
     XercesEntityBridge(
             const DOM_EntityType&           theXercesDOMEntity,
@@ -184,11 +184,7 @@
      *   its attributes, if it is an <code>Element</code>).
      * @return The duplicate node.
      */
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual XalanNode*
-#else
     virtual XercesEntityBridge*
-#endif
     cloneNode(bool deep) const;
 
     //@}
@@ -477,7 +473,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesEntityReferenceBridge.cpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesEntityReferenceBridge.cpp
index 624e607a8..73b8277 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesEntityReferenceBridge.cpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesEntityReferenceBridge.cpp
@@ -33,7 +33,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -144,21 +144,13 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-XalanNode*
-#else
 XercesEntityReferenceBridge*
-#endif
 XercesEntityReferenceBridge::cloneNode(bool     deep) const
 {
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    return m_navigator.cloneNode(this, m_xercesNode, deep);
-#else
     XercesEntityReferenceBridge* const  theBridge =
         static_cast<XercesEntityReferenceBridge*>(m_navigator.cloneNode(this, m_xercesNode, deep));
 
     return theBridge;
-#endif
 }
 
 
@@ -283,7 +275,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 #endif //XALAN_BUILD_DEPRECATED_DOM_BRIDGE 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesEntityReferenceBridge.hpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesEntityReferenceBridge.hpp
index a65cb6f..e2ff74f 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesEntityReferenceBridge.hpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesEntityReferenceBridge.hpp
@@ -41,7 +41,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -183,11 +183,7 @@
      *   its attributes, if it is an <code>Element</code>).
      * @return The duplicate node.
      */
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual XalanNode*
-#else
     virtual XercesEntityReferenceBridge*
-#endif
     cloneNode(bool deep) const;
 
     //@}
@@ -439,7 +435,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesNamedNodeMapBridge.cpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesNamedNodeMapBridge.cpp
index f193e63..fe282aa 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesNamedNodeMapBridge.cpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesNamedNodeMapBridge.cpp
@@ -43,7 +43,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -53,7 +53,7 @@
     m_xercesNamedNodeMap(theXercesNamedNodeMap),
     m_navigator(theNavigator)
 {
-    assert(m_xercesNamedNodeMap != (const XERCES_CPP_NAMESPACE_QUALIFIER DOM_NullPtr*)0);
+    assert(m_xercesNamedNodeMap != (const xercesc::DOM_NullPtr*)0);
 }
 
 
@@ -224,7 +224,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 #endif //XALAN_BUILD_DEPRECATED_DOM_BRIDGE 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesNamedNodeMapBridge.hpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesNamedNodeMapBridge.hpp
index 22f40e6..7b3e26c 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesNamedNodeMapBridge.hpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesNamedNodeMapBridge.hpp
@@ -36,7 +36,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -53,7 +53,7 @@
 {
 public:
 
-    typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_NamedNodeMap     DOM_NamedNodeMapType;
+    typedef xercesc::DOM_NamedNodeMap     DOM_NamedNodeMapType;
 
     XercesNamedNodeMapBridge(
             const DOM_NamedNodeMapType&     theXercesNamedNodeMap,
@@ -244,7 +244,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesNodeListBridge.cpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesNodeListBridge.cpp
index eb957b7..66665cf 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesNodeListBridge.cpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesNodeListBridge.cpp
@@ -32,7 +32,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -78,7 +78,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 #endif //XALAN_BUILD_DEPRECATED_DOM_BRIDGE 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesNodeListBridge.hpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesNodeListBridge.hpp
index e5c05eb..8ca94d1 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesNodeListBridge.hpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesNodeListBridge.hpp
@@ -40,7 +40,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -110,7 +110,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesNotationBridge.cpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesNotationBridge.cpp
index f37f719..a04e011 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesNotationBridge.cpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesNotationBridge.cpp
@@ -33,7 +33,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -142,21 +142,13 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-XalanNode*
-#else
 XercesNotationBridge*
-#endif
 XercesNotationBridge::cloneNode(bool    deep) const
 {
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    return m_navigator.cloneNode(this, m_xercesNode, deep);
-#else
     XercesNotationBridge* const     theBridge =
         static_cast<XercesNotationBridge*>(m_navigator.cloneNode(this, m_xercesNode, deep));
 
     return theBridge;
-#endif
 }
 
 
@@ -296,7 +288,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 #endif //XALAN_BUILD_DEPRECATED_DOM_BRIDGE 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesNotationBridge.hpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesNotationBridge.hpp
index 1f2ed6c..3f053ed 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesNotationBridge.hpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesNotationBridge.hpp
@@ -40,7 +40,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -182,11 +182,7 @@
      *   its attributes, if it is an <code>Element</code>).
      * @return The duplicate node.
      */
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual XalanNode*
-#else
     virtual XercesNotationBridge*
-#endif
     cloneNode(bool deep) const;
 
     //@}
@@ -458,7 +454,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesProcessingInstructionBridge.cpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesProcessingInstructionBridge.cpp
index 262c79e..06db988 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesProcessingInstructionBridge.cpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesProcessingInstructionBridge.cpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -143,21 +143,13 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-XalanNode*
-#else
 XercesProcessingInstructionBridge*
-#endif
 XercesProcessingInstructionBridge::cloneNode(bool   deep) const
 {
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    return m_navigator.cloneNode(this, m_xercesNode, deep);
-#else
     XercesProcessingInstructionBridge* const    theBridge =
         static_cast<XercesProcessingInstructionBridge*>(m_navigator.cloneNode(this, m_xercesNode, deep));
 
     return theBridge;
-#endif
 }
 
 
@@ -313,7 +305,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 #endif //XALAN_BUILD_DEPRECATED_DOM_BRIDGE 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesProcessingInstructionBridge.hpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesProcessingInstructionBridge.hpp
index c0d3418..4a8f8ac 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesProcessingInstructionBridge.hpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesProcessingInstructionBridge.hpp
@@ -40,7 +40,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -182,11 +182,7 @@
      *   its attributes, if it is an <code>Element</code>).
      * @return The duplicate node.
      */
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual XalanNode*
-#else
     virtual XercesProcessingInstructionBridge*
-#endif
     cloneNode(bool deep) const;
 
     //@}
@@ -477,7 +473,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesTextBridge.cpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesTextBridge.cpp
index 3de1912..6d1ea48 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesTextBridge.cpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesTextBridge.cpp
@@ -39,7 +39,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -149,21 +149,13 @@
 
 
 
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-XalanNode*
-#else
 XercesTextBridge*
-#endif
 XercesTextBridge::cloneNode(bool    deep) const
 {
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    return m_navigator.cloneNode(this, m_xercesNode, deep);
-#else
     XercesTextBridge* const theBridge =
         static_cast<XercesTextBridge*>(m_navigator.cloneNode(this, m_xercesNode, deep));
 
     return theBridge;
-#endif
 }
 
 
@@ -376,7 +368,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 #endif //XALAN_BUILD_DEPRECATED_DOM_BRIDGE 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesTextBridge.hpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesTextBridge.hpp
index 4e40ae3..4fab5b8 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesTextBridge.hpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesTextBridge.hpp
@@ -39,7 +39,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -55,7 +55,7 @@
 {
 public:
 
-    typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_Text     DOM_TextType;
+    typedef xercesc::DOM_Text     DOM_TextType;
 
     XercesTextBridge(
             const DOM_TextType&             theXercesText,
@@ -184,11 +184,7 @@
      *   its attributes, if it is an <code>Element</code>).
      * @return The duplicate node.
      */
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-    virtual XalanNode*
-#else
     virtual XercesTextBridge*
-#endif
     cloneNode(bool deep) const;
 
     //@}
@@ -597,7 +593,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesTextBridgeAllocator.cpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesTextBridgeAllocator.cpp
index 067d9cb..816ba6a 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesTextBridgeAllocator.cpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesTextBridgeAllocator.cpp
@@ -26,7 +26,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -68,7 +68,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 #endif //XALAN_BUILD_DEPRECATED_DOM_BRIDGE 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesTextBridgeAllocator.hpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesTextBridgeAllocator.hpp
index 5ef61aa..bdc3b22 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesTextBridgeAllocator.hpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesTextBridgeAllocator.hpp
@@ -33,7 +33,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 /**
@@ -124,7 +124,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesToXalanNodeMap.cpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesToXalanNodeMap.cpp
index ee288ca..ee36d62 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesToXalanNodeMap.cpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesToXalanNodeMap.cpp
@@ -43,7 +43,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -85,7 +85,7 @@
 XercesToXalanNodeMap::NodeImplType*
 XercesToXalanNodeMap::getNodeImpl(const XalanNode*  theXalanNode) const
 {
-    XALAN_USING_STD(find_if)
+    using std::find_if;
 
     const XercesNodeMapType::const_iterator     i =
         find_if(
@@ -105,7 +105,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 #endif //XALAN_BUILD_DEPRECATED_DOM_BRIDGE 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesToXalanNodeMap.hpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesToXalanNodeMap.hpp
index 99f8881..0230eda 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesToXalanNodeMap.hpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesToXalanNodeMap.hpp
@@ -40,11 +40,14 @@
 
 
 
-XALAN_DECLARE_XERCES_CLASS(NodeImpl)
+namespace XERCES_CPP_NAMESPACE
+{
+    class NodeImpl;
+}
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -60,18 +63,12 @@
 {
 public:
 
-    typedef XERCES_CPP_NAMESPACE_QUALIFIER DOM_Node     DOM_NodeType;
-    typedef XERCES_CPP_NAMESPACE_QUALIFIER NodeImpl     NodeImplType;
+    typedef xercesc::DOM_Node     DOM_NodeType;
+    typedef xercesc::NodeImpl     NodeImplType;
 
-#if defined(XALAN_NO_STD_NAMESPACE)
-    typedef map<XalanNode*, NodeImplType*, less<XalanNode*> >   XalanNodeMapType;
-
-    typedef map<NodeImplType*, XalanNode*, less<NodeImplType*> >    XercesNodeMapType;
-#else
     typedef std::map<XalanNode*, NodeImplType*>     XalanNodeMapType;
 
     typedef std::map<NodeImplType*, XalanNode*>     XercesNodeMapType;
-#endif
 
     XercesToXalanNodeMap();
 
@@ -151,7 +148,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesTreeWalker.cpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesTreeWalker.cpp
index 9f6af5a..69f23bf 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesTreeWalker.cpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesTreeWalker.cpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -124,7 +124,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 #endif //XALAN_BUILD_DEPRECATED_DOM_BRIDGE 
diff --git a/src/xalanc/XercesParserLiaison/Deprecated/XercesTreeWalker.hpp b/src/xalanc/XercesParserLiaison/Deprecated/XercesTreeWalker.hpp
index 4b8e7e8..5357a6c 100644
--- a/src/xalanc/XercesParserLiaison/Deprecated/XercesTreeWalker.hpp
+++ b/src/xalanc/XercesParserLiaison/Deprecated/XercesTreeWalker.hpp
@@ -28,7 +28,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 /**
  * This class is deprecated.
@@ -72,7 +72,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/FormatterToXercesDOM.cpp b/src/xalanc/XercesParserLiaison/FormatterToXercesDOM.cpp
index b6e4c08..544f48d 100644
--- a/src/xalanc/XercesParserLiaison/FormatterToXercesDOM.cpp
+++ b/src/xalanc/XercesParserLiaison/FormatterToXercesDOM.cpp
@@ -56,7 +56,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -130,7 +130,7 @@
         // appending to a DOMDocumentFragment.
         processAccumulatedText();
     }
-    catch(const XERCES_CPP_NAMESPACE_QUALIFIER DOMException&    theException)
+    catch(const xercesc::DOMException&    theException)
     {
         throw XercesDOMException(theException);
     }
@@ -156,7 +156,7 @@
 
         m_currentElem = elem;
     }
-    catch(const XERCES_CPP_NAMESPACE_QUALIFIER DOMException&    theException)
+    catch(const xercesc::DOMException&    theException)
     {
         throw XercesDOMException(theException);
     }
@@ -182,7 +182,7 @@
             m_currentElem = 0;
         }
     }
-    catch(const XERCES_CPP_NAMESPACE_QUALIFIER DOMException&    theException)
+    catch(const xercesc::DOMException&    theException)
     {
         throw XercesDOMException(theException);
     }
@@ -211,7 +211,7 @@
 
         cdata(chars, length);
     }
-    catch(const XERCES_CPP_NAMESPACE_QUALIFIER DOMException&    theException)
+    catch(const xercesc::DOMException&    theException)
     {
         throw XercesDOMException(theException);
     }
@@ -228,7 +228,7 @@
 
         append(m_doc->createEntityReference(name));
     }
-    catch(const XERCES_CPP_NAMESPACE_QUALIFIER DOMException&    theException)
+    catch(const xercesc::DOMException&    theException)
     {
         throw XercesDOMException(theException);
     }
@@ -249,7 +249,7 @@
 
         append(m_doc->createTextNode(m_buffer.c_str()));
     }
-    catch(const XERCES_CPP_NAMESPACE_QUALIFIER DOMException&    theException)
+    catch(const xercesc::DOMException&    theException)
     {
         throw XercesDOMException(theException);
     }
@@ -268,7 +268,7 @@
 
         append(m_doc->createProcessingInstruction(target, data));
     }
-    catch(const XERCES_CPP_NAMESPACE_QUALIFIER DOMException&    theException)
+    catch(const xercesc::DOMException&    theException)
     {
         throw XercesDOMException(theException);
     }
@@ -292,7 +292,7 @@
 
         append(m_doc->createComment(data));
     }
-    catch(const XERCES_CPP_NAMESPACE_QUALIFIER DOMException&    theException)
+    catch(const xercesc::DOMException&    theException)
     {
         throw XercesDOMException(theException);
     }
@@ -313,7 +313,7 @@
 
         append(m_doc->createCDATASection(m_buffer.c_str()));
     }
-    catch(const XERCES_CPP_NAMESPACE_QUALIFIER DOMException&    theException)
+    catch(const xercesc::DOMException&    theException)
     {
         throw XercesDOMException(theException);
     }
@@ -430,4 +430,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XercesParserLiaison/FormatterToXercesDOM.hpp b/src/xalanc/XercesParserLiaison/FormatterToXercesDOM.hpp
index 4eda12c..522a11c 100644
--- a/src/xalanc/XercesParserLiaison/FormatterToXercesDOM.hpp
+++ b/src/xalanc/XercesParserLiaison/FormatterToXercesDOM.hpp
@@ -42,7 +42,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -225,7 +225,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/XercesAttrWrapper.cpp b/src/xalanc/XercesParserLiaison/XercesAttrWrapper.cpp
index 6e0c2fd..9d2b8dd 100644
--- a/src/xalanc/XercesParserLiaison/XercesAttrWrapper.cpp
+++ b/src/xalanc/XercesParserLiaison/XercesAttrWrapper.cpp
@@ -38,7 +38,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -222,4 +222,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XercesParserLiaison/XercesAttrWrapper.hpp b/src/xalanc/XercesParserLiaison/XercesAttrWrapper.hpp
index 6b5a930..eb9062f 100644
--- a/src/xalanc/XercesParserLiaison/XercesAttrWrapper.hpp
+++ b/src/xalanc/XercesParserLiaison/XercesAttrWrapper.hpp
@@ -37,7 +37,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -152,7 +152,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/XercesAttrWrapperAllocator.cpp b/src/xalanc/XercesParserLiaison/XercesAttrWrapperAllocator.cpp
index 8c8c413..a35b124 100644
--- a/src/xalanc/XercesParserLiaison/XercesAttrWrapperAllocator.cpp
+++ b/src/xalanc/XercesParserLiaison/XercesAttrWrapperAllocator.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -63,4 +63,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XercesParserLiaison/XercesAttrWrapperAllocator.hpp b/src/xalanc/XercesParserLiaison/XercesAttrWrapperAllocator.hpp
index 2ab7917..fe86406 100644
--- a/src/xalanc/XercesParserLiaison/XercesAttrWrapperAllocator.hpp
+++ b/src/xalanc/XercesParserLiaison/XercesAttrWrapperAllocator.hpp
@@ -33,7 +33,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -119,7 +119,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/XercesCDATASectionWrapper.cpp b/src/xalanc/XercesParserLiaison/XercesCDATASectionWrapper.cpp
index 9cc32b5..7c8807e 100644
--- a/src/xalanc/XercesParserLiaison/XercesCDATASectionWrapper.cpp
+++ b/src/xalanc/XercesParserLiaison/XercesCDATASectionWrapper.cpp
@@ -38,7 +38,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -227,4 +227,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XercesParserLiaison/XercesCDATASectionWrapper.hpp b/src/xalanc/XercesParserLiaison/XercesCDATASectionWrapper.hpp
index c0f5720..afa1f33 100644
--- a/src/xalanc/XercesParserLiaison/XercesCDATASectionWrapper.hpp
+++ b/src/xalanc/XercesParserLiaison/XercesCDATASectionWrapper.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -145,7 +145,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/XercesCommentWrapper.cpp b/src/xalanc/XercesParserLiaison/XercesCommentWrapper.cpp
index 9797a84..c4c45ee 100644
--- a/src/xalanc/XercesParserLiaison/XercesCommentWrapper.cpp
+++ b/src/xalanc/XercesParserLiaison/XercesCommentWrapper.cpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -215,4 +215,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XercesParserLiaison/XercesCommentWrapper.hpp b/src/xalanc/XercesParserLiaison/XercesCommentWrapper.hpp
index 8e11b07..bc8308a 100644
--- a/src/xalanc/XercesParserLiaison/XercesCommentWrapper.hpp
+++ b/src/xalanc/XercesParserLiaison/XercesCommentWrapper.hpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -142,7 +142,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 #endif  // !defined(XERCESCOMMENTWRAPPER_HEADER_GUARD_1357924680)
diff --git a/src/xalanc/XercesParserLiaison/XercesDOMException.cpp b/src/xalanc/XercesParserLiaison/XercesDOMException.cpp
index 3e989d3..a20e547 100644
--- a/src/xalanc/XercesParserLiaison/XercesDOMException.cpp
+++ b/src/xalanc/XercesParserLiaison/XercesDOMException.cpp
@@ -23,7 +23,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -143,4 +143,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XercesParserLiaison/XercesDOMException.hpp b/src/xalanc/XercesParserLiaison/XercesDOMException.hpp
index ceb8561..6829eb9 100644
--- a/src/xalanc/XercesParserLiaison/XercesDOMException.hpp
+++ b/src/xalanc/XercesParserLiaison/XercesDOMException.hpp
@@ -42,7 +42,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -108,7 +108,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/XercesDOMFormatterWalker.cpp b/src/xalanc/XercesParserLiaison/XercesDOMFormatterWalker.cpp
index ff4f6be..2106566 100644
--- a/src/xalanc/XercesParserLiaison/XercesDOMFormatterWalker.cpp
+++ b/src/xalanc/XercesParserLiaison/XercesDOMFormatterWalker.cpp
@@ -35,7 +35,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -157,4 +157,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XercesParserLiaison/XercesDOMFormatterWalker.hpp b/src/xalanc/XercesParserLiaison/XercesDOMFormatterWalker.hpp
index 5af176f..63ae74c 100644
--- a/src/xalanc/XercesParserLiaison/XercesDOMFormatterWalker.hpp
+++ b/src/xalanc/XercesParserLiaison/XercesDOMFormatterWalker.hpp
@@ -28,7 +28,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -70,7 +70,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/XercesDOMImplementationWrapper.cpp b/src/xalanc/XercesParserLiaison/XercesDOMImplementationWrapper.cpp
index 3f95616..d4208e6 100644
--- a/src/xalanc/XercesParserLiaison/XercesDOMImplementationWrapper.cpp
+++ b/src/xalanc/XercesParserLiaison/XercesDOMImplementationWrapper.cpp
@@ -31,7 +31,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -113,4 +113,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XercesParserLiaison/XercesDOMImplementationWrapper.hpp b/src/xalanc/XercesParserLiaison/XercesDOMImplementationWrapper.hpp
index 4f21bba..bcf6b3f 100644
--- a/src/xalanc/XercesParserLiaison/XercesDOMImplementationWrapper.hpp
+++ b/src/xalanc/XercesParserLiaison/XercesDOMImplementationWrapper.hpp
@@ -32,7 +32,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -151,7 +151,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/XercesDOMSupport.cpp b/src/xalanc/XercesParserLiaison/XercesDOMSupport.cpp
index a5b2792..c2005e6 100644
--- a/src/xalanc/XercesParserLiaison/XercesDOMSupport.cpp
+++ b/src/xalanc/XercesParserLiaison/XercesDOMSupport.cpp
@@ -35,7 +35,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -74,11 +74,11 @@
 
     if (theWrapper != 0)
     {
-        XALAN_USING_XERCES(DOMDocument)
-        XALAN_USING_XERCES(DOMDocumentType)
-        XALAN_USING_XERCES(DOMEntity)
-        XALAN_USING_XERCES(DOMNamedNodeMap)
-        XALAN_USING_XERCES(DOMNode)
+        using xercesc::DOMDocument;
+        using xercesc::DOMDocumentType;
+        using xercesc::DOMEntity;
+        using xercesc::DOMNamedNodeMap;
+        using xercesc::DOMNode;
 
         const DOMDocument* const    theDOMDocument =
             theWrapper->getXercesDocument();
@@ -145,4 +145,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XercesParserLiaison/XercesDOMSupport.hpp b/src/xalanc/XercesParserLiaison/XercesDOMSupport.hpp
index 4c68646..e25125e 100644
--- a/src/xalanc/XercesParserLiaison/XercesDOMSupport.hpp
+++ b/src/xalanc/XercesParserLiaison/XercesDOMSupport.hpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -68,7 +68,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/XercesDOMWalker.cpp b/src/xalanc/XercesParserLiaison/XercesDOMWalker.cpp
index 045065b..43a6dd7 100644
--- a/src/xalanc/XercesParserLiaison/XercesDOMWalker.cpp
+++ b/src/xalanc/XercesParserLiaison/XercesDOMWalker.cpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -303,4 +303,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XercesParserLiaison/XercesDOMWalker.hpp b/src/xalanc/XercesParserLiaison/XercesDOMWalker.hpp
index 3064b9d..60c0eaa 100644
--- a/src/xalanc/XercesParserLiaison/XercesDOMWalker.hpp
+++ b/src/xalanc/XercesParserLiaison/XercesDOMWalker.hpp
@@ -25,7 +25,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -182,7 +182,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/XercesDOMWrapperException.cpp b/src/xalanc/XercesParserLiaison/XercesDOMWrapperException.cpp
index da47ecf..894529b 100644
--- a/src/xalanc/XercesParserLiaison/XercesDOMWrapperException.cpp
+++ b/src/xalanc/XercesParserLiaison/XercesDOMWrapperException.cpp
@@ -23,7 +23,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -131,4 +131,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XercesParserLiaison/XercesDOMWrapperException.hpp b/src/xalanc/XercesParserLiaison/XercesDOMWrapperException.hpp
index 6cbeb34..3a70d0f 100644
--- a/src/xalanc/XercesParserLiaison/XercesDOMWrapperException.hpp
+++ b/src/xalanc/XercesParserLiaison/XercesDOMWrapperException.hpp
@@ -36,7 +36,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -95,7 +95,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/XercesDocumentTypeWrapper.cpp b/src/xalanc/XercesParserLiaison/XercesDocumentTypeWrapper.cpp
index b7d512f..08521d3 100644
--- a/src/xalanc/XercesParserLiaison/XercesDocumentTypeWrapper.cpp
+++ b/src/xalanc/XercesParserLiaison/XercesDocumentTypeWrapper.cpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -258,4 +258,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XercesParserLiaison/XercesDocumentTypeWrapper.hpp b/src/xalanc/XercesParserLiaison/XercesDocumentTypeWrapper.hpp
index 8990157..91b32bc 100644
--- a/src/xalanc/XercesParserLiaison/XercesDocumentTypeWrapper.hpp
+++ b/src/xalanc/XercesParserLiaison/XercesDocumentTypeWrapper.hpp
@@ -33,7 +33,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -163,7 +163,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/XercesDocumentWrapper.cpp b/src/xalanc/XercesParserLiaison/XercesDocumentWrapper.cpp
index d3775b2..0f00c98 100644
--- a/src/xalanc/XercesParserLiaison/XercesDocumentWrapper.cpp
+++ b/src/xalanc/XercesParserLiaison/XercesDocumentWrapper.cpp
@@ -70,7 +70,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -275,7 +275,7 @@
 void
 XercesDocumentWrapper::destroyWrapper()
 {
-    XALAN_USING_STD(for_each)
+    using std::for_each;
 
     // Set this to null, since it will be deleted
     // by the next for_each...
@@ -800,7 +800,7 @@
 void
 XercesDocumentWrapper::destroyNode(XalanNode*   theNode)
 {
-    XALAN_USING_STD(find)
+    using std::find;
 
     const NodeVectorType::iterator  i =
         find(m_nodes.begin(), m_nodes.end(), theNode);
@@ -1253,4 +1253,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XercesParserLiaison/XercesDocumentWrapper.hpp b/src/xalanc/XercesParserLiaison/XercesDocumentWrapper.hpp
index d5e8798..bb88409 100644
--- a/src/xalanc/XercesParserLiaison/XercesDocumentWrapper.hpp
+++ b/src/xalanc/XercesParserLiaison/XercesDocumentWrapper.hpp
@@ -58,7 +58,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -500,7 +500,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/XercesElementWrapper.cpp b/src/xalanc/XercesParserLiaison/XercesElementWrapper.cpp
index 7e65322..84ee8bd 100644
--- a/src/xalanc/XercesParserLiaison/XercesElementWrapper.cpp
+++ b/src/xalanc/XercesParserLiaison/XercesElementWrapper.cpp
@@ -38,7 +38,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -234,4 +234,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XercesParserLiaison/XercesElementWrapper.hpp b/src/xalanc/XercesParserLiaison/XercesElementWrapper.hpp
index 68f6713..eb4e3df 100644
--- a/src/xalanc/XercesParserLiaison/XercesElementWrapper.hpp
+++ b/src/xalanc/XercesParserLiaison/XercesElementWrapper.hpp
@@ -38,7 +38,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -153,7 +153,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/XercesElementWrapperAllocator.cpp b/src/xalanc/XercesParserLiaison/XercesElementWrapperAllocator.cpp
index 57af1c6..6984f4b 100644
--- a/src/xalanc/XercesParserLiaison/XercesElementWrapperAllocator.cpp
+++ b/src/xalanc/XercesParserLiaison/XercesElementWrapperAllocator.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -63,4 +63,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XercesParserLiaison/XercesElementWrapperAllocator.hpp b/src/xalanc/XercesParserLiaison/XercesElementWrapperAllocator.hpp
index 8a653c3..439ef71 100644
--- a/src/xalanc/XercesParserLiaison/XercesElementWrapperAllocator.hpp
+++ b/src/xalanc/XercesParserLiaison/XercesElementWrapperAllocator.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -121,7 +121,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/XercesEntityReferenceWrapper.cpp b/src/xalanc/XercesParserLiaison/XercesEntityReferenceWrapper.cpp
index b3008a0..102435b 100644
--- a/src/xalanc/XercesParserLiaison/XercesEntityReferenceWrapper.cpp
+++ b/src/xalanc/XercesParserLiaison/XercesEntityReferenceWrapper.cpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -209,4 +209,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XercesParserLiaison/XercesEntityReferenceWrapper.hpp b/src/xalanc/XercesParserLiaison/XercesEntityReferenceWrapper.hpp
index c47cbba..9361402 100644
--- a/src/xalanc/XercesParserLiaison/XercesEntityReferenceWrapper.hpp
+++ b/src/xalanc/XercesParserLiaison/XercesEntityReferenceWrapper.hpp
@@ -35,7 +35,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -144,7 +144,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/XercesEntityWrapper.cpp b/src/xalanc/XercesParserLiaison/XercesEntityWrapper.cpp
index f12eb1b..4789b4f 100644
--- a/src/xalanc/XercesParserLiaison/XercesEntityWrapper.cpp
+++ b/src/xalanc/XercesParserLiaison/XercesEntityWrapper.cpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -233,4 +233,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XercesParserLiaison/XercesEntityWrapper.hpp b/src/xalanc/XercesParserLiaison/XercesEntityWrapper.hpp
index 43e522c..9ca133b 100644
--- a/src/xalanc/XercesParserLiaison/XercesEntityWrapper.hpp
+++ b/src/xalanc/XercesParserLiaison/XercesEntityWrapper.hpp
@@ -35,7 +35,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -146,7 +146,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/XercesLiaisonXalanDOMStringPool.cpp b/src/xalanc/XercesParserLiaison/XercesLiaisonXalanDOMStringPool.cpp
index 897e1a4..de92622 100644
--- a/src/xalanc/XercesParserLiaison/XercesLiaisonXalanDOMStringPool.cpp
+++ b/src/xalanc/XercesParserLiaison/XercesLiaisonXalanDOMStringPool.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -98,4 +98,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XercesParserLiaison/XercesLiaisonXalanDOMStringPool.hpp b/src/xalanc/XercesParserLiaison/XercesLiaisonXalanDOMStringPool.hpp
index 9d48ecb..535a861 100644
--- a/src/xalanc/XercesParserLiaison/XercesLiaisonXalanDOMStringPool.hpp
+++ b/src/xalanc/XercesParserLiaison/XercesLiaisonXalanDOMStringPool.hpp
@@ -33,7 +33,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -43,8 +43,8 @@
 public:
 
     typedef XalanDOMStringPool  ParentType;
-    typedef XERCES_CPP_NAMESPACE_QUALIFIER XMLMutex         XMLMutexType;
-    typedef XERCES_CPP_NAMESPACE_QUALIFIER XMLMutexLock     XMLMutexLockType;
+    typedef xercesc::XMLMutex         XMLMutexType;
+    typedef xercesc::XMLMutexLock     XMLMutexLockType;
 
     explicit
     XercesLiaisonXalanDOMStringPool(MemoryManager& theManager);
@@ -88,7 +88,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/XercesNamedNodeMapAttributeList.cpp b/src/xalanc/XercesParserLiaison/XercesNamedNodeMapAttributeList.cpp
index 64718bf..d3c6d51 100644
--- a/src/xalanc/XercesParserLiaison/XercesNamedNodeMapAttributeList.cpp
+++ b/src/xalanc/XercesParserLiaison/XercesNamedNodeMapAttributeList.cpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -145,4 +145,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XercesParserLiaison/XercesNamedNodeMapAttributeList.hpp b/src/xalanc/XercesParserLiaison/XercesNamedNodeMapAttributeList.hpp
index fad2d45..4205093 100644
--- a/src/xalanc/XercesParserLiaison/XercesNamedNodeMapAttributeList.hpp
+++ b/src/xalanc/XercesParserLiaison/XercesNamedNodeMapAttributeList.hpp
@@ -33,15 +33,15 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
-class XALAN_XERCESPARSERLIAISON_EXPORT XercesNamedNodeMapAttributeList : public XERCES_CPP_NAMESPACE_QUALIFIER AttributeList
+class XALAN_XERCESPARSERLIAISON_EXPORT XercesNamedNodeMapAttributeList : public xercesc::AttributeList
 {
 public:
 
-    typedef XERCES_CPP_NAMESPACE_QUALIFIER AttributeList    ParentType;
+    typedef xercesc::AttributeList    ParentType;
 
     explicit
     XercesNamedNodeMapAttributeList(const DOMNamedNodeMapType*  theMap);
@@ -90,7 +90,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/XercesNamedNodeMapWrapper.cpp b/src/xalanc/XercesParserLiaison/XercesNamedNodeMapWrapper.cpp
index eccd05c..2ccf5bf 100644
--- a/src/xalanc/XercesParserLiaison/XercesNamedNodeMapWrapper.cpp
+++ b/src/xalanc/XercesParserLiaison/XercesNamedNodeMapWrapper.cpp
@@ -33,7 +33,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -91,4 +91,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XercesParserLiaison/XercesNamedNodeMapWrapper.hpp b/src/xalanc/XercesParserLiaison/XercesNamedNodeMapWrapper.hpp
index 8f4e39f..7b0a967 100644
--- a/src/xalanc/XercesParserLiaison/XercesNamedNodeMapWrapper.hpp
+++ b/src/xalanc/XercesParserLiaison/XercesNamedNodeMapWrapper.hpp
@@ -32,7 +32,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -86,7 +86,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/XercesNodeListWrapper.cpp b/src/xalanc/XercesParserLiaison/XercesNodeListWrapper.cpp
index c0479b2..ac51c7a 100644
--- a/src/xalanc/XercesParserLiaison/XercesNodeListWrapper.cpp
+++ b/src/xalanc/XercesParserLiaison/XercesNodeListWrapper.cpp
@@ -31,7 +31,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -82,4 +82,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XercesParserLiaison/XercesNodeListWrapper.hpp b/src/xalanc/XercesParserLiaison/XercesNodeListWrapper.hpp
index 566abe3..fe7bdcd 100644
--- a/src/xalanc/XercesParserLiaison/XercesNodeListWrapper.hpp
+++ b/src/xalanc/XercesParserLiaison/XercesNodeListWrapper.hpp
@@ -32,7 +32,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -82,7 +82,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/XercesNotationWrapper.cpp b/src/xalanc/XercesParserLiaison/XercesNotationWrapper.cpp
index 6434d54..26f894a 100644
--- a/src/xalanc/XercesParserLiaison/XercesNotationWrapper.cpp
+++ b/src/xalanc/XercesParserLiaison/XercesNotationWrapper.cpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -223,4 +223,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XercesParserLiaison/XercesNotationWrapper.hpp b/src/xalanc/XercesParserLiaison/XercesNotationWrapper.hpp
index b2eb280..ae0ddf3 100644
--- a/src/xalanc/XercesParserLiaison/XercesNotationWrapper.hpp
+++ b/src/xalanc/XercesParserLiaison/XercesNotationWrapper.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -145,7 +145,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/XercesParserLiaison.cpp b/src/xalanc/XercesParserLiaison/XercesParserLiaison.cpp
index 79b73a4..9ba996e 100644
--- a/src/xalanc/XercesParserLiaison/XercesParserLiaison.cpp
+++ b/src/xalanc/XercesParserLiaison/XercesParserLiaison.cpp
@@ -19,11 +19,7 @@
 
 
 
-#if defined(XALAN_CLASSIC_IOSTREAMS)
-#include <iostream.h>
-#else
 #include <iostream>
-#endif
 
 
 
@@ -60,7 +56,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 XercesParserLiaison::XercesParserLiaison(
@@ -602,8 +598,8 @@
     }
     else
     {
-        XALAN_USING_STD(cerr)
-        XALAN_USING_STD(endl)
+        using std::cerr;
+        using std::endl;
 
         cerr << endl << theMessage << endl;
     }
@@ -636,8 +632,8 @@
     }
     else
     {
-        XALAN_USING_STD(cerr)
-        XALAN_USING_STD(endl)
+        using std::cerr;
+        using std::endl;
 
         cerr << endl << theMessage << endl;
     }
@@ -671,8 +667,8 @@
     }
     else
     {
-        XALAN_USING_STD(cerr)
-        XALAN_USING_STD(endl)
+        using std::cerr;
+        using std::endl;
 
         cerr << endl << theMessage << endl;
     }
@@ -796,4 +792,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XercesParserLiaison/XercesParserLiaison.hpp b/src/xalanc/XercesParserLiaison/XercesParserLiaison.hpp
index 7dcc51d..38a5d00 100644
--- a/src/xalanc/XercesParserLiaison/XercesParserLiaison.hpp
+++ b/src/xalanc/XercesParserLiaison/XercesParserLiaison.hpp
@@ -46,16 +46,18 @@
 
 
 
+namespace XERCES_CPP_NAMESPACE
+{
 #if XERCES_VERSION_MAJOR >= 2
-XALAN_DECLARE_XERCES_CLASS(XercesDOMParser)
+    class XercesDOMParser;
 #else
-XALAN_DECLARE_XERCES_CLASS(DOMParser)
+    class DOMParser;
 #endif
-XALAN_DECLARE_XERCES_CLASS(SAXParser)
+    class SAXParser;
+}
 
 
-
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -66,7 +68,7 @@
 class XercesDocumentWrapper;
 
 
-typedef XERCES_CPP_NAMESPACE_QUALIFIER SAXParseException    SAXParseExceptionType;
+typedef xercesc::SAXParseException    SAXParseExceptionType;
 
 
 class XALAN_XERCESPARSERLIAISON_EXPORT XercesParserLiaison :
@@ -76,7 +78,7 @@
     
 public:
 
-    typedef XERCES_CPP_NAMESPACE_QUALIFIER SAXParser            SAXParserType;
+    typedef xercesc::SAXParser            SAXParserType;
 
     /**
      * Construct a XercesParserLiaison instance.
@@ -673,7 +675,7 @@
         m_buildMaps = newState;
     }
 
-    typedef XERCES_CPP_NAMESPACE_QUALIFIER XercesDOMParser  DOMParserType;
+    typedef xercesc::XercesDOMParser  DOMParserType;
 
 protected:
 
@@ -768,7 +770,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/XercesProcessingInstructionWrapper.cpp b/src/xalanc/XercesParserLiaison/XercesProcessingInstructionWrapper.cpp
index 6d88a81..d9357e2 100644
--- a/src/xalanc/XercesParserLiaison/XercesProcessingInstructionWrapper.cpp
+++ b/src/xalanc/XercesParserLiaison/XercesProcessingInstructionWrapper.cpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -223,4 +223,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XercesParserLiaison/XercesProcessingInstructionWrapper.hpp b/src/xalanc/XercesParserLiaison/XercesProcessingInstructionWrapper.hpp
index 9451c46..3cf3ff9 100644
--- a/src/xalanc/XercesParserLiaison/XercesProcessingInstructionWrapper.hpp
+++ b/src/xalanc/XercesParserLiaison/XercesProcessingInstructionWrapper.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -141,7 +141,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/XercesTextWrapper.cpp b/src/xalanc/XercesParserLiaison/XercesTextWrapper.cpp
index a871659..383775e 100644
--- a/src/xalanc/XercesParserLiaison/XercesTextWrapper.cpp
+++ b/src/xalanc/XercesParserLiaison/XercesTextWrapper.cpp
@@ -38,7 +38,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -204,4 +204,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XercesParserLiaison/XercesTextWrapper.hpp b/src/xalanc/XercesParserLiaison/XercesTextWrapper.hpp
index dbf4245..9ab6d98 100644
--- a/src/xalanc/XercesParserLiaison/XercesTextWrapper.hpp
+++ b/src/xalanc/XercesParserLiaison/XercesTextWrapper.hpp
@@ -32,7 +32,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -138,7 +138,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/XercesTextWrapperAllocator.cpp b/src/xalanc/XercesParserLiaison/XercesTextWrapperAllocator.cpp
index 1186f7c..4956893 100644
--- a/src/xalanc/XercesParserLiaison/XercesTextWrapperAllocator.cpp
+++ b/src/xalanc/XercesParserLiaison/XercesTextWrapperAllocator.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -63,4 +63,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XercesParserLiaison/XercesTextWrapperAllocator.hpp b/src/xalanc/XercesParserLiaison/XercesTextWrapperAllocator.hpp
index 1c9442f..f155c41 100644
--- a/src/xalanc/XercesParserLiaison/XercesTextWrapperAllocator.hpp
+++ b/src/xalanc/XercesParserLiaison/XercesTextWrapperAllocator.hpp
@@ -34,7 +34,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -120,7 +120,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/XercesWrapperHelper.cpp b/src/xalanc/XercesParserLiaison/XercesWrapperHelper.cpp
index f13830a..c9af766 100644
--- a/src/xalanc/XercesParserLiaison/XercesWrapperHelper.cpp
+++ b/src/xalanc/XercesParserLiaison/XercesWrapperHelper.cpp
@@ -29,7 +29,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 XercesWrapperHelper&
@@ -39,4 +39,4 @@
 }
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XercesParserLiaison/XercesWrapperHelper.hpp b/src/xalanc/XercesParserLiaison/XercesWrapperHelper.hpp
index 30a8dee..f64ad20 100644
--- a/src/xalanc/XercesParserLiaison/XercesWrapperHelper.hpp
+++ b/src/xalanc/XercesParserLiaison/XercesWrapperHelper.hpp
@@ -40,7 +40,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -71,7 +71,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/XercesWrapperNavigator.cpp b/src/xalanc/XercesParserLiaison/XercesWrapperNavigator.cpp
index e18587f..e22292d 100644
--- a/src/xalanc/XercesParserLiaison/XercesWrapperNavigator.cpp
+++ b/src/xalanc/XercesParserLiaison/XercesWrapperNavigator.cpp
@@ -31,7 +31,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -206,4 +206,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XercesParserLiaison/XercesWrapperNavigator.hpp b/src/xalanc/XercesParserLiaison/XercesWrapperNavigator.hpp
index 004ae5b..5ad174e 100644
--- a/src/xalanc/XercesParserLiaison/XercesWrapperNavigator.hpp
+++ b/src/xalanc/XercesParserLiaison/XercesWrapperNavigator.hpp
@@ -41,7 +41,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -214,7 +214,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/XercesWrapperNavigatorAllocator.cpp b/src/xalanc/XercesParserLiaison/XercesWrapperNavigatorAllocator.cpp
index 71a55b7..c5f23c1 100644
--- a/src/xalanc/XercesParserLiaison/XercesWrapperNavigatorAllocator.cpp
+++ b/src/xalanc/XercesParserLiaison/XercesWrapperNavigatorAllocator.cpp
@@ -21,7 +21,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -61,4 +61,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XercesParserLiaison/XercesWrapperNavigatorAllocator.hpp b/src/xalanc/XercesParserLiaison/XercesWrapperNavigatorAllocator.hpp
index ccf492c..f9532ae 100644
--- a/src/xalanc/XercesParserLiaison/XercesWrapperNavigatorAllocator.hpp
+++ b/src/xalanc/XercesParserLiaison/XercesWrapperNavigatorAllocator.hpp
@@ -33,7 +33,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -117,7 +117,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/XercesWrapperToXalanNodeMap.cpp b/src/xalanc/XercesParserLiaison/XercesWrapperToXalanNodeMap.cpp
index 6790658..81f62a6 100644
--- a/src/xalanc/XercesParserLiaison/XercesWrapperToXalanNodeMap.cpp
+++ b/src/xalanc/XercesParserLiaison/XercesWrapperToXalanNodeMap.cpp
@@ -32,7 +32,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -85,4 +85,4 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
diff --git a/src/xalanc/XercesParserLiaison/XercesWrapperToXalanNodeMap.hpp b/src/xalanc/XercesParserLiaison/XercesWrapperToXalanNodeMap.hpp
index 72333e7..17eed73 100644
--- a/src/xalanc/XercesParserLiaison/XercesWrapperToXalanNodeMap.hpp
+++ b/src/xalanc/XercesParserLiaison/XercesWrapperToXalanNodeMap.hpp
@@ -32,7 +32,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
@@ -76,7 +76,7 @@
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/src/xalanc/XercesParserLiaison/XercesWrapperTypes.hpp b/src/xalanc/XercesParserLiaison/XercesWrapperTypes.hpp
index d568d02..de76664 100644
--- a/src/xalanc/XercesParserLiaison/XercesWrapperTypes.hpp
+++ b/src/xalanc/XercesParserLiaison/XercesWrapperTypes.hpp
@@ -24,57 +24,60 @@
 
 
 
-XALAN_DECLARE_XERCES_CLASS(DOMAttr)
-XALAN_DECLARE_XERCES_CLASS(DOMCharacterData)
-XALAN_DECLARE_XERCES_CLASS(DOMComment)
-XALAN_DECLARE_XERCES_CLASS(DOMCDATASection)
-XALAN_DECLARE_XERCES_CLASS(DOMDocument)
-XALAN_DECLARE_XERCES_CLASS(DOMDocumentFragment)
-XALAN_DECLARE_XERCES_CLASS(DOMImplementation)
-XALAN_DECLARE_XERCES_CLASS(DOMElement)
-XALAN_DECLARE_XERCES_CLASS(DOMEntity)
-XALAN_DECLARE_XERCES_CLASS(DOMEntityReference)
-XALAN_DECLARE_XERCES_CLASS(DOMNode)
-XALAN_DECLARE_XERCES_CLASS(DOMText)
-XALAN_DECLARE_XERCES_CLASS(DOMNamedNodeMap)
-XALAN_DECLARE_XERCES_CLASS(DOMNodeList)
-XALAN_DECLARE_XERCES_CLASS(DOMNotation)
-XALAN_DECLARE_XERCES_CLASS(DOMProcessingInstruction)
-XALAN_DECLARE_XERCES_CLASS(DOMText)
-XALAN_DECLARE_XERCES_CLASS(DOMDocumentType)
-XALAN_DECLARE_XERCES_CLASS(DOMException)
+namespace XERCES_CPP_NAMESPACE
+{
+    class DOMAttr;
+    class DOMCharacterData;
+    class DOMComment;
+    class DOMCDATASection;
+    class DOMDocument;
+    class DOMDocumentFragment;
+    class DOMImplementation;
+    class DOMElement;
+    class DOMEntity;
+    class DOMEntityReference;
+    class DOMNode;
+    class DOMText;
+    class DOMNamedNodeMap;
+    class DOMNodeList;
+    class DOMNotation;
+    class DOMProcessingInstruction;
+    class DOMText;
+    class DOMDocumentType;
+    class DOMException;
+}
 
 
 
-XALAN_CPP_NAMESPACE_BEGIN
+namespace XALAN_CPP_NAMESPACE {
 
 
 
-typedef XERCES_CPP_NAMESPACE_QUALIFIER DOMAttr              DOMAttrType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER DOMCharacterData DOMCharacterDataType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER DOMComment           DOMCommentType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER DOMCDATASection      DOMCDATASectionType;
+typedef xercesc::DOMAttr              DOMAttrType;
+typedef xercesc::DOMCharacterData DOMCharacterDataType;
+typedef xercesc::DOMComment           DOMCommentType;
+typedef xercesc::DOMCDATASection      DOMCDATASectionType;
 // These next two have an extra '_' because they collide without it...
-typedef XERCES_CPP_NAMESPACE_QUALIFIER DOMDocumentType      DOMDocumentType_Type;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument          DOMDocument_Type;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER DOMDocumentFragment  DOMDocumentFragmentType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER DOMImplementation    DOMImplementationType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER DOMElement           DOMElementType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER DOMEntity            DOMEntityType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER DOMEntityReference   DOMEntityReferenceType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER DOMNode              DOMNodeType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER DOMText              DOMTextType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER DOMNamedNodeMap      DOMNamedNodeMapType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER DOMNodeList          DOMNodeListType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER DOMNotation          DOMNotationType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER DOMProcessingInstruction DOMProcessingInstructionType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER DOMText              DOMTextType;
-typedef XERCES_CPP_NAMESPACE_QUALIFIER DOMException         DOMExceptionType;
+typedef xercesc::DOMDocumentType      DOMDocumentType_Type;
+typedef xercesc::DOMDocument          DOMDocument_Type;
+typedef xercesc::DOMDocumentFragment  DOMDocumentFragmentType;
+typedef xercesc::DOMImplementation    DOMImplementationType;
+typedef xercesc::DOMElement           DOMElementType;
+typedef xercesc::DOMEntity            DOMEntityType;
+typedef xercesc::DOMEntityReference   DOMEntityReferenceType;
+typedef xercesc::DOMNode              DOMNodeType;
+typedef xercesc::DOMText              DOMTextType;
+typedef xercesc::DOMNamedNodeMap      DOMNamedNodeMapType;
+typedef xercesc::DOMNodeList          DOMNodeListType;
+typedef xercesc::DOMNotation          DOMNotationType;
+typedef xercesc::DOMProcessingInstruction DOMProcessingInstructionType;
+typedef xercesc::DOMText              DOMTextType;
+typedef xercesc::DOMException         DOMExceptionType;
 typedef XMLSize_t                                           XMLSizeType;
 
 
 
-XALAN_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/xdocs/sources/xalan/extensions.xml b/xdocs/sources/xalan/extensions.xml
index 48e77d4..74991d1 100644
--- a/xdocs/sources/xalan/extensions.xml
+++ b/xdocs/sources/xalan/extensions.xml
@@ -64,7 +64,7 @@
 #include &lt;xalanc/XalanTransformer/XalanTransformer.hpp&gt;
 #include &lt;xalanc/XPath/XObjectFactory.hpp&gt;
 
-XALAN_CPP_NAMESPACE_USE
+using namespace xalanc;
 
 // This class defines a function that will return the square root
 // of its argument.
@@ -107,13 +107,7 @@
    *
    * @return pointer to the new object
    */
-// For compilers that do not support covariant return types,
-// clone() must be declared to return the base type.
-#if defined(XALAN_NO_COVARIANT_RETURN_TYPE)
-  virtual Function*
-#else
   virtual FunctionSquareRoot*
-#endif
   clone() const
   {
     return new FunctionSquareRoot(*this);
diff --git a/xdocs/sources/xalan/usagepatterns.xml b/xdocs/sources/xalan/usagepatterns.xml
index 4349ab4..e318038 100644
--- a/xdocs/sources/xalan/usagepatterns.xml
+++ b/xdocs/sources/xalan/usagepatterns.xml
@@ -79,8 +79,8 @@
 <p>In the following example, the <em>XALAN_USING_XERCES</em> and <em>XALAN_USING_XALAN</em> macros are used to declare that the 
    program is using <em>XMLPlatformUtils</em> and <em>XalanTransformer</em> from the &xml4c; and &xslt4c; namespaces respectively.</p>
 <source>
-XALAN_USING_XERCES(XMLPlatformUtils)
-XALAN_USING_XALAN(XalanTransformer)
+using xercesc::XMLPlatformUtils;
+using xalanc::XalanTransformer;
 </source>
 
 <p>These macros can be used immediately after the included header files (for global applicability in a given source file) or within 
@@ -274,11 +274,11 @@
 #include &lt;xalanc/XMLSupport/FormatterToXML.hpp&gt;
 #include &lt;xalanc/XMLSupport/XalanTransformer.hpp&gt;
 
-XALAN_USING_XERCES(DOMDocument)
-XALAN_USING_XERCES(DOMImplementation)
+using xercesc::DOMDocument;
+using xercesc::DOMImplementation;
 
-XALAN_USING_XALAN(FormatterToXML)
-XALAN_USING_XALAN(XalanTransformer)
+using xalanc::FormatterToXML;
+using xalanc::XalanTransformer;
 
 
     // If you want to produce DOM output, create an empty Xerces Document
