diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4254f89..d511963 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -126,15 +126,8 @@
 include(XercesFileMgrSelection)
 include(XercesXMLCh)
 include(XercesOperatorDelete)
-include(XercesBool)
-include(XercesConst)
-include(XercesInline)
-include(XercesVolatile)
 include(XercesLString)
 include(XercesMFC)
-include(XercesNamespaces)
-include(XercesStdLibs)
-include(XercesStdNamespace)
 include(XercesSSE2)
 include(XercesPathMax)
 include(XercesWChar)
diff --git a/cmake/XercesBool.cmake b/cmake/XercesBool.cmake
deleted file mode 100644
index 3cc49d2..0000000
--- a/cmake/XercesBool.cmake
+++ /dev/null
@@ -1,38 +0,0 @@
-# CMake build for xerces-c
-#
-# Written by Roger Leigh <rleigh@codelibre.net>
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# bool type
-
-include(CheckCXXSourceCompiles)
-
-check_cxx_source_compiles("
-int f(int  x){return 1;}
-int f(char x){return 1;}
-int f(bool x){return 1;}
-
-int main() {
-  bool b = true;
-  return f(b);
-}"
-  HAVE_BOOL)
-
-set(XERCES_NO_NATIVE_BOOL 0)
-if(NOT HAVE_BOOL)
-  set(XERCES_NO_NATIVE_BOOL 1)
-endif()
diff --git a/cmake/XercesConst.cmake b/cmake/XercesConst.cmake
deleted file mode 100644
index fa78435..0000000
--- a/cmake/XercesConst.cmake
+++ /dev/null
@@ -1,29 +0,0 @@
-# CMake build for xerces-c
-#
-# Written by Roger Leigh <rleigh@codelibre.net>
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# const keyword
-
-include(CheckCXXSourceCompiles)
-
-check_cxx_source_compiles("
-int main() {
-  const char *s = \"Test\";
-  return 0;
-}"
-  HAVE_CONST)
diff --git a/cmake/XercesIncludes.cmake b/cmake/XercesIncludes.cmake
index 88ba63a..75dc09c 100644
--- a/cmake/XercesIncludes.cmake
+++ b/cmake/XercesIncludes.cmake
@@ -34,9 +34,6 @@
 check_include_file_cxx(nl_types.h                  HAVE_NL_TYPES_H)
 check_include_file_cxx(stdbool.h                   HAVE_STDBOOL_H)
 check_include_file_cxx(stddef.h                    HAVE_STDDEF_H)
-check_include_file_cxx(stdlib.h                    HAVE_STDLIB_H)
-check_include_file_cxx(string.h                    HAVE_STRING_H)
-check_include_file_cxx(strings.h                   HAVE_STRINGS_H)
 check_include_file_cxx(sys/param.h                 HAVE_SYS_PARAM_H)
 check_include_file_cxx(sys/socket.h                HAVE_SYS_SOCKET_H)
 check_include_file_cxx(sys/stat.h                  HAVE_SYS_STAT_H)
diff --git a/cmake/XercesInline.cmake b/cmake/XercesInline.cmake
deleted file mode 100644
index 2ea6597..0000000
--- a/cmake/XercesInline.cmake
+++ /dev/null
@@ -1,48 +0,0 @@
-# CMake build for xerces-c
-#
-# Written by Roger Leigh <rleigh@codelibre.net>
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# inline keyword
-
-include(CheckCXXSourceCompiles)
-
-unset(inline_keyword)
-set(NEED_INLINE "0")
-
-# Inspired from /usr/share/autoconf/autoconf/c.m4
-foreach(test_keyword "inline" "__inline__" "__inline")
-  set(CMAKE_REQUIRED_DEFINITIONS_SAVE ${CMAKE_REQUIRED_DEFINITIONS})
-  set(CMAKE_REQUIRED_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
-    "-Dinline=${test_keyword}")
-  check_cxx_source_compiles("
-        typedef int foo_t;
-        static inline foo_t static_foo() {return 0;}
-        foo_t foo(){return 0;}
-        int main(int argc, char *argv[]) {return 0;}"
-    CXX_HAS_${test_keyword})
-  set(CMAKE_REQUIRED_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS_SAVE})
-  if(CXX_HAS_${test_keyword})
-    if(NOT test_keyword STREQUAL "inline")
-      set(NEED_INLINE 1)
-    else()
-      set(HAVE_INLINE 1)
-    endif()
-    set(inline_keyword "${test_keyword}")
-    break()
-  endif()
-endforeach()
diff --git a/cmake/XercesNamespaces.cmake b/cmake/XercesNamespaces.cmake
deleted file mode 100644
index 1acbd79..0000000
--- a/cmake/XercesNamespaces.cmake
+++ /dev/null
@@ -1,37 +0,0 @@
-# CMake build for xerces-c
-#
-# Written by Roger Leigh <rleigh@codelibre.net>
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# namespace keyword
-
-include(CheckCXXSourceCompiles)
-
-check_cxx_source_compiles("
-namespace Outer {
-  namespace Inner {
-    int i = 0;
-  }
-}
-
-int main() {
-  using namespace Outer::Inner;
-  return i;
-}"
-  HAVE_NAMESPACES)
-
-set(XERCES_HAS_CPP_NAMESPACE ${HAVE_NAMESPACES})
diff --git a/cmake/XercesOperatorDelete.cmake b/cmake/XercesOperatorDelete.cmake
index 0ab9d1f..ff942ab 100644
--- a/cmake/XercesOperatorDelete.cmake
+++ b/cmake/XercesOperatorDelete.cmake
@@ -22,7 +22,7 @@
 include(CheckCXXSourceCompiles)
 
 check_cxx_source_compiles("
-#include <stdlib.h>
+#include <cstdlib>
 
 class XMemory {
 public:
diff --git a/cmake/XercesStdLibs.cmake b/cmake/XercesStdLibs.cmake
deleted file mode 100644
index c898d03..0000000
--- a/cmake/XercesStdLibs.cmake
+++ /dev/null
@@ -1,45 +0,0 @@
-# CMake build for xerces-c
-#
-# Written by Roger Leigh <rleigh@codelibre.net>
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# C++ standard library includes
-
-include(CheckCXXSourceCompiles)
-include(XercesNamespaces)
-
-set(CMAKE_REQUIRED_DEFINITIONS_SAVE ${CMAKE_REQUIRED_DEFINITIONS})
-if(HAVE_NAMESPACES)
-  set(CMAKE_REQUIRED_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS} -DHAVE_NAMESPACES)
-endif()
-
-check_cxx_source_compiles("
-#include <map>
-#include <iomanip>
-#include <cmath>
-#ifdef HAVE_NAMESPACES
-using namespace std;
-#endif
-
-int main() {
-  return 0;
-}"
-  HAVE_STD_LIBS)
-
-set(CMAKE_REQUIRED_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS_SAVE})
-
-set(XERCES_NEW_IOSTREAMS ${HAVE_STD_LIBS})
diff --git a/cmake/XercesStdNamespace.cmake b/cmake/XercesStdNamespace.cmake
deleted file mode 100644
index fc68fb3..0000000
--- a/cmake/XercesStdNamespace.cmake
+++ /dev/null
@@ -1,33 +0,0 @@
-# CMake build for xerces-c
-#
-# Written by Roger Leigh <rleigh@codelibre.net>
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# C++ standard library std:: namespace
-
-include(CheckCXXSourceCompiles)
-
-check_cxx_source_compiles("
-#include <iostream>
-std::istream& is = std::cin;
-
-int main() {
-  return 0;
-}"
-  HAVE_STD_NAMESPACE)
-
-set(XERCES_STD_NAMESPACE ${HAVE_STD_NAMESPACE})
diff --git a/cmake/XercesTranscoderSelection.cmake b/cmake/XercesTranscoderSelection.cmake
index 4ff5b16..5dd7c62 100644
--- a/cmake/XercesTranscoderSelection.cmake
+++ b/cmake/XercesTranscoderSelection.cmake
@@ -43,9 +43,6 @@
 
 check_include_file_cxx(iconv.h HAVE_ICONV_H)
 check_include_file_cxx(wchar.h HAVE_WCHAR_H)
-check_include_file_cxx(string.h HAVE_STRING_H)
-check_include_file_cxx(stdlib.h HAVE_STDLIB_H)
-check_include_file_cxx(stdio.h HAVE_STDIO_H)
 check_include_file_cxx(ctype.h HAVE_CTYPE_H)
 check_include_file_cxx(locale.h HAVE_LOCALE_H)
 check_include_file_cxx(errno.h HAVE_ERRNO_H)
@@ -57,8 +54,8 @@
 check_function_exists(iconv HAVE_ICONV)
 
 set(gnuiconv_available 0)
-if(HAVE_ICONV_H AND HAVE_WCHAR_H AND HAVE_STRING_H AND HAVE_STDLIB_H AND
-    HAVE_STDIO_H AND HAVE_CTYPE_H AND HAVE_LOCALE_H AND HAVE_ERRNO_H)
+if(HAVE_ICONV_H AND HAVE_WCHAR_H AND
+   HAVE_CTYPE_H AND HAVE_LOCALE_H AND HAVE_ERRNO_H)
   if (HAVE_ENDIAN_H OR HAVE_MACHINE_ENDIAN_H OR HAVE_ARPA_NAMESER_COMPAT_H)
     if(HAVE_ICONV_OPEN AND HAVE_ICONV_CLOSE AND HAVE_ICONV)
       set(gnuiconv_available 1)
diff --git a/cmake/XercesVolatile.cmake b/cmake/XercesVolatile.cmake
deleted file mode 100644
index 6029fe6..0000000
--- a/cmake/XercesVolatile.cmake
+++ /dev/null
@@ -1,29 +0,0 @@
-# CMake build for xerces-c
-#
-# Written by Roger Leigh <rleigh@codelibre.net>
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# volatile keyword
-
-include(CheckCXXSourceCompiles)
-
-check_cxx_source_compiles("
-int main() {
-  volatile int i = 1;
-  return 0;
-}"
-  HAVE_VOLATILE)
diff --git a/config.h.cmake.in b/config.h.cmake.in
index 4972d29..64edf47 100644
--- a/config.h.cmake.in
+++ b/config.h.cmake.in
@@ -24,9 +24,6 @@
 /* Define to 1 if you have the <arpa/nameser_compat.h> header file. */
 #cmakedefine HAVE_ARPA_NAMESER_COMPAT_H 1
 
-/* define if bool is a built-in type */
-#cmakedefine HAVE_BOOL 1
-
 /* Define to 1 if you have the `catclose' function. */
 #cmakedefine HAVE_CATCLOSE 1
 
@@ -144,9 +141,6 @@
 /* Define to 1 if you have the `memset' function. */
 #cmakedefine HAVE_MEMSET 1
 
-/* define if the compiler implements namespaces */
-#cmakedefine HAVE_NAMESPACES 1
-
 /* Define to 1 if you have the <netdb.h> header file. */
 #cmakedefine HAVE_NETDB_H 1
 
@@ -186,18 +180,6 @@
 /* Define to 1 if you have the <stddef.h> header file. */
 #cmakedefine HAVE_STDDEF_H 1
 
-/* Define to 1 if you have the <stdio.h> header file. */
-#cmakedefine HAVE_STDIO_H 1
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#cmakedefine HAVE_STDLIB_H 1
-
-/* define if the compiler supports ISO C++ standard library */
-#cmakedefine HAVE_STD_LIBS 1
-
-/* define if the compiler supports the std namespace */
-#cmakedefine HAVE_STD_NAMESPACE 1
-
 /* Define to 1 if you have the `strcasecmp' function. */
 #cmakedefine HAVE_STRCASECMP 1
 
@@ -210,12 +192,6 @@
 /* Define to 1 if you have the `stricmp' function. */
 #cmakedefine HAVE_STRICMP 1
 
-/* Define to 1 if you have the <strings.h> header file. */
-#cmakedefine HAVE_STRINGS_H 1
-
-/* Define to 1 if you have the <string.h> header file. */
-#cmakedefine HAVE_STRING_H 1
-
 /* Define to 1 if you have the `strncasecmp' function. */
 #cmakedefine HAVE_STRNCASECMP 1
 
@@ -343,9 +319,6 @@
 /* Define if DLL symbols should be exported */
 #cmakedefine XERCES_DLL_EXPORT 1
 
-/* Define if namespaces is supported by the compiler */
-#cmakedefine XERCES_HAS_CPP_NAMESPACE 1
-
 /* Define to have SSE2 instruction support detected at runtime using __cpuid
    */
 #cmakedefine XERCES_HAVE_CPUID_INTRINSIC 1
@@ -375,16 +348,10 @@
 /* Define if there is support for L"widestring" */
 #cmakedefine XERCES_LSTRSUPPORT 1
 
-/* Define if the isstream library can be included as <iostream> */
-#cmakedefine XERCES_NEW_IOSTREAMS 1
-
 /* Define to have XMemory.hpp avoid declaring a matching operator delete for
    the placement operator new */
 #cmakedefine XERCES_NO_MATCHING_DELETE_OPERATOR 1
 
-/* Define if there is no native bool support in this environment */
-#cmakedefine XERCES_NO_NATIVE_BOOL 1
-
 /* Define to use backslash as an extra path delimiter character */
 #cmakedefine XERCES_PATH_DELIMITER_BACKSLASH 1
 
@@ -418,9 +385,6 @@
 /* Define if building a static library */
 #cmakedefine XERCES_STATIC_LIBRARY 1
 
-/* Define if the std namespace is supported */
-#cmakedefine XERCES_STD_NAMESPACE 1
-
 /* An appropriate unsigned 16 bit integer type */
 #define XERCES_U16BIT_INT @XERCES_U16BIT_INT@
 
@@ -486,26 +450,3 @@
 
 /* Define to the 16 bit type used to represent Xerces UTF-16 characters */
 #define XERCES_XMLCH_T @XERCES_XMLCH_T@
-
-/* Define to empty if `const' does not conform to ANSI C. */
-#if !@HAVE_CONST@
-#define const
-#endif
-
-/* Define to `__inline__' or `__inline' if that's what the C compiler
-   calls it, or to nothing if 'inline' is not supported under any name.  */
-#ifndef __cplusplus
-#if !@HAVE_INLINE@
-#if @NEED_INLINE@
-#define inline @inline_keyword@
-#else
-#define inline
-#endif
-#endif
-#endif
-
-/* Define to empty if the keyword `volatile' does not work. Warning: valid
-code using `volatile' can become incorrect without. Disable with care. */
-#if !@HAVE_VOLATILE@
-#define volatile
-#endif
diff --git a/configure.ac b/configure.ac
index a1dd367..0a4b162 100644
--- a/configure.ac
+++ b/configure.ac
@@ -129,8 +129,7 @@
 AC_HEADER_STDC
 AC_HEADER_TIME
 AC_CHECK_HEADERS([arpa/inet.h fcntl.h float.h inttypes.h langinfo.h limits.h locale.h \
-                  memory.h netdb.h netinet/in.h nl_types.h stddef.h stdint.h stdlib.h \
-                  string.h strings.h \
+                  memory.h netdb.h netinet/in.h nl_types.h stddef.h stdint.h \
                   sys/param.h sys/socket.h sys/time.h sys/timeb.h \
                   unistd.h wchar.h wctype.h \
                   CoreServices/CoreServices.h \
@@ -139,9 +138,6 @@
 
 # Checks for typedefs, structures, and compiler characteristics.
 AC_HEADER_STDBOOL
-AC_C_CONST
-AC_C_INLINE
-AC_C_VOLATILE
 
 AC_CHECK_SIZEOF(wchar_t)
 AC_CHECK_TYPE(size_t)
@@ -152,10 +148,6 @@
 
 XERCES_INT_TYPES
 
-AC_CXX_HAVE_BOOL
-AC_CXX_HAVE_NAMESPACES
-AC_CXX_HAVE_STD_NAMESPACE
-AC_CXX_HAVE_STD_LIBS
 AC_CXX_HAVE_LSTRING
 
 ACX_PTHREAD
@@ -229,7 +221,7 @@
                  )
 AC_MSG_CHECKING([for wcsrtombs])
 AC_RUN_IFELSE(  [AC_LANG_PROGRAM([[#include <wchar.h>
-#include <string.h>]],
+#include <cstring>]],
                                  [[
 mbstate_t st;
 memset(&st, 0, sizeof(st));
@@ -251,7 +243,7 @@
                  )
 AC_MSG_CHECKING([for mbsrtowcs])
 AC_RUN_IFELSE(  [AC_LANG_PROGRAM([[#include <wchar.h>
-#include <string.h>]],
+#include <cstring>]],
                                  [[
 mbstate_t st;
 memset(&st, 0, sizeof(st));
@@ -363,13 +355,10 @@
 AC_DEFINE_UNQUOTED([XERCES_PLATFORM_IMPORT], [$platform_import], [Define as the platform's import attribute])
 AC_DEFINE_UNQUOTED([XERCES_TEMPLATE_EXTERN], [$template_extern], [Define as the platform's template extern attribute])
 
-AS_IF([test ! $ac_cv_cxx_have_bool],
-	AC_DEFINE([XERCES_NO_NATIVE_BOOL], 1, [Define if there is no native bool support in this environment]))
-
 XERCES_XMLCH_SELECTION
 
 AC_MSG_CHECKING([whether the compiler chokes on a placement operator delete])
-AC_COMPILE_IFELSE(  [AC_LANG_PROGRAM([[#include <stdlib.h>
+AC_COMPILE_IFELSE(  [AC_LANG_PROGRAM([[#include <cstdlib>
 
                                         class XMemory
                                         {
@@ -523,16 +512,6 @@
 	AC_DEFINE([XERCES_SSIZE_T], [long], [Define as the appropriate ssize_t type])
 	AC_DEFINE([XERCES_SSIZE_MAX], [LONG_MAX], [Define as the appropriate SSIZE_MAX macro]))
 
-AS_IF([test x$ac_cv_cxx_have_namespaces = xyes],
-	AC_DEFINE([XERCES_HAS_CPP_NAMESPACE], 1, [Define if namespaces is supported by the compiler]))
-
-AS_IF([test x$ac_cv_cxx_have_std_namespace = xyes],
-	AC_DEFINE([XERCES_STD_NAMESPACE], 1, [Define if the std namespace is supported]))
-
-AS_IF([test x$ac_cv_cxx_have_std_libs = xyes],
-	AC_DEFINE([XERCES_NEW_IOSTREAMS], 1, [Define if the isstream library can be included as <iostream>]))
-
-
 AC_OUTPUT
 
 AC_MSG_NOTICE
diff --git a/doc/program-others.xml b/doc/program-others.xml
index d65af85..d2783e1 100644
--- a/doc/program-others.xml
+++ b/doc/program-others.xml
@@ -381,9 +381,9 @@
     </s2>
 
     <anchor name="CPPNamespace"/>
-    <s2 title="Using C++ Namespace">
+    <s2 title="Using C++ Namespaces">
 
-    <p>&XercesCName; makes use of C++ namespace to make sure its
+    <p>&XercesCName; makes use of C++ namespaces to make sure its
        definitions do not conflict with other libraries and
        applications. As a result applications must
        namespace-qualify all &XercesCName; classes, data and
@@ -395,23 +395,6 @@
        or <code>using namespace xercesc;</code>
        definition to make all &XercesCName; names visible in the
        current scope.</p>
-
-    <p>While the above information should be sufficient for the majority
-       of applications, for cases where several versions of the &XercesCName;
-       library must be used in the same application, namespace versioning is
-       provided. The following convenience macros can be used to access the
-       &XercesCName; namespace names with versions embedded
-       (see <code>src/xercesc/util/XercesDefs.hpp</code>):</p>
-
-<source>
-    #define XERCES_CPP_NAMESPACE_BEGIN    namespace &XercesC3NSVersion; {
-    #define XERCES_CPP_NAMESPACE_END    }
-    #define XERCES_CPP_NAMESPACE_USE    using namespace &XercesC3NSVersion;;
-    #define XERCES_CPP_NAMESPACE_QUALIFIER    &XercesC3NSVersion;::
-
-    namespace &XercesC3NSVersion; { }
-    namespace &XercesC3Namespace; = &XercesC3NSVersion;;
-</source>
     </s2>
 
 
diff --git a/m4/cxx_have_bool.m4 b/m4/cxx_have_bool.m4
deleted file mode 100644
index 53e6c6a..0000000
--- a/m4/cxx_have_bool.m4
+++ /dev/null
@@ -1,30 +0,0 @@
-dnl @synopsis AC_CXX_HAVE_BOOL
-dnl
-dnl If the compiler recognizes bool as a separate built-in type, define
-dnl HAVE_BOOL. Note that a typedef is not a separate type since you
-dnl cannot overload a function such that it accepts either the basic
-dnl type or the typedef.
-dnl
-dnl @category Cxx
-dnl @author Todd Veldhuizen
-dnl @author Luc Maisonobe <luc@spaceroots.org>
-dnl @version 2004-02-04
-dnl @license AllPermissive
-
-AC_DEFUN([AC_CXX_HAVE_BOOL],
-[AC_CACHE_CHECK(whether the compiler recognizes bool as a built-in type,
-ac_cv_cxx_have_bool,
-[AC_LANG_SAVE
- AC_LANG_CPLUSPLUS
- AC_TRY_COMPILE([
-int f(int  x){return 1;}
-int f(char x){return 1;}
-int f(bool x){return 1;}
-],[bool b = true; return f(b);],
- ac_cv_cxx_have_bool=yes, ac_cv_cxx_have_bool=no)
- AC_LANG_RESTORE
-])
-if test "$ac_cv_cxx_have_bool" = yes; then
-  AC_DEFINE(HAVE_BOOL,,[define if bool is a built-in type])
-fi
-])
diff --git a/m4/cxx_have_namespaces.m4 b/m4/cxx_have_namespaces.m4
deleted file mode 100644
index 70dcc14..0000000
--- a/m4/cxx_have_namespaces.m4
+++ /dev/null
@@ -1,25 +0,0 @@
-dnl @synopsis AC_CXX_HAVE_NAMESPACES
-dnl
-dnl If the compiler can prevent names clashes using namespaces, define
-dnl HAVE_NAMESPACES.
-dnl
-dnl @category Cxx
-dnl @author Todd Veldhuizen
-dnl @author Luc Maisonobe <luc@spaceroots.org>
-dnl @version 2004-02-04
-dnl @license AllPermissive
-
-AC_DEFUN([AC_CXX_HAVE_NAMESPACES],
-[AC_CACHE_CHECK(whether the compiler implements namespaces,
-ac_cv_cxx_have_namespaces,
-[AC_LANG_SAVE
- AC_LANG_CPLUSPLUS
- AC_TRY_COMPILE([namespace Outer { namespace Inner { int i = 0; }}],
-                [using namespace Outer::Inner; return i;],
- ac_cv_cxx_have_namespaces=yes, ac_cv_cxx_have_namespaces=no)
- AC_LANG_RESTORE
-])
-if test "$ac_cv_cxx_have_namespaces" = yes; then
-  AC_DEFINE(HAVE_NAMESPACES,,[define if the compiler implements namespaces])
-fi
-])
diff --git a/m4/cxx_have_std_libs.m4 b/m4/cxx_have_std_libs.m4
deleted file mode 100644
index 28a28b3..0000000
--- a/m4/cxx_have_std_libs.m4
+++ /dev/null
@@ -1,32 +0,0 @@
-dnl @synopsis AC_CXX_HAVE_STD_LIBS
-dnl
-dnl If the compiler supports ISO C++ standard library (i.e., can
-dnl include the files iostream, map, iomanip and cmath}), define
-dnl HAVE_STD_LIBS.
-dnl
-dnl @category Cxx
-dnl @author Todd Veldhuizen
-dnl @author Luc Maisonobe <luc@spaceroots.org>
-dnl @version 2004-02-04
-dnl @license AllPermissive
-
-AC_DEFUN([AC_CXX_HAVE_STD_LIBS],
-[AC_CACHE_CHECK(whether the compiler supports ISO C++ standard library,
-ac_cv_cxx_have_std_libs,
-[AC_REQUIRE([AC_CXX_HAVE_NAMESPACES])
- AC_LANG_SAVE
- AC_LANG_CPLUSPLUS
- AC_TRY_COMPILE([#include <iostream>
-#include <map>
-#include <iomanip>
-#include <cmath>
-#ifdef HAVE_NAMESPACES
-using namespace std;
-#endif],[return 0;],
- ac_cv_cxx_have_std_libs=yes, ac_cv_cxx_have_std_libs=no)
- AC_LANG_RESTORE
-])
-if test "$ac_cv_cxx_have_std_libs" = yes; then
-  AC_DEFINE(HAVE_STD_LIBS,,[define if the compiler supports ISO C++ standard library])
-fi
-])
diff --git a/m4/cxx_have_std_namespace.m4 b/m4/cxx_have_std_namespace.m4
deleted file mode 100644
index 35be1cd..0000000
--- a/m4/cxx_have_std_namespace.m4
+++ /dev/null
@@ -1,26 +0,0 @@
-dnl @synopsis AC_CXX_HAVE_STD_NAMESPACE
-dnl
-dnl If the compiler supports the std namespace, define
-dnl HAVE_STD_NAMESPACE.
-dnl
-dnl @category Cxx
-dnl @author Todd Veldhuizen
-dnl @author Luc Maisonobe <luc@spaceroots.org>
-dnl @version 2004-02-04
-dnl @license AllPermissive
-
-AC_DEFUN([AC_CXX_HAVE_STD_NAMESPACE],
-[AC_CACHE_CHECK(whether the compiler supports the std namespace,
-ac_cv_cxx_have_std_namespace,
-[AC_LANG_SAVE
- AC_LANG_CPLUSPLUS
- AC_TRY_COMPILE([#include <iostream>
-	std::istream& is = std::cin;
-	],[return 0;],
- ac_cv_cxx_have_std_namespace=yes, ac_cv_cxx_have_std_namespace=no)
- AC_LANG_RESTORE
-])
-if test "$ac_cv_cxx_have_std_namespace" = yes; then
-  AC_DEFINE(HAVE_STD_NAMESPACE,,[define if the compiler supports the std namespace])
-fi
-])
diff --git a/m4/cxx_have_std_thread.m4 b/m4/cxx_have_std_thread.m4
index 6caeca3..236eee8 100644
--- a/m4/cxx_have_std_thread.m4
+++ b/m4/cxx_have_std_thread.m4
@@ -12,8 +12,7 @@
 AC_DEFUN([AC_CXX_HAVE_STD_THREAD],
 [AC_CACHE_CHECK(whether the compiler supports ISO C++11 <thread> and <mutex>,
 ac_cv_cxx_have_std_thread,
-[AC_REQUIRE([AC_CXX_HAVE_NAMESPACES])
- AC_REQUIRE([ACX_PTHREAD])
+[AC_REQUIRE([ACX_PTHREAD])
  AC_LANG_SAVE
  AC_LANG_CPLUSPLUS
  save_CFLAGS="$CFLAGS"
diff --git a/m4/xerces_transcoder_selection.m4 b/m4/xerces_transcoder_selection.m4
index 80f432a..af5e979 100644
--- a/m4/xerces_transcoder_selection.m4
+++ b/m4/xerces_transcoder_selection.m4
@@ -23,7 +23,7 @@
 
 	# Check for GNU iconv support
 	no_GNUiconv=false
-	AC_CHECK_HEADERS([iconv.h wchar.h string.h stdlib.h stdio.h ctype.h locale.h errno.h], [], [no_GNUiconv=true])
+	AC_CHECK_HEADERS([iconv.h wchar.h ctype.h locale.h errno.h], [], [no_GNUiconv=true])
         # The code in iconv needs just on of these include files
 	AC_CHECK_HEADER([endian.h],
                         [],
diff --git a/samples/src/CreateDOMDocument/CreateDOMDocument.cpp b/samples/src/CreateDOMDocument/CreateDOMDocument.cpp
index 8acace7..e8d5620 100644
--- a/samples/src/CreateDOMDocument/CreateDOMDocument.cpp
+++ b/samples/src/CreateDOMDocument/CreateDOMDocument.cpp
@@ -33,14 +33,10 @@
 #include <xercesc/dom/DOM.hpp>
 #include <xercesc/util/OutOfMemoryException.hpp>
 
-#if defined(XERCES_NEW_IOSTREAMS)
 #include <iostream>
-#else
-#include <iostream.h>
-#endif
 
 
-XERCES_CPP_NAMESPACE_USE
+using namespace XERCES_CPP_NAMESPACE;
 
 // ---------------------------------------------------------------------------
 //  This is a simple class that lets us do easy (though not terribly efficient)
@@ -100,7 +96,7 @@
     catch(const XMLException& toCatch)
     {
         char *pMsg = XMLString::transcode(toCatch.getMessage());
-        XERCES_STD_QUALIFIER cerr << "Error during Xerces-c Initialization.\n"
+        std::cerr << "Error during Xerces-c Initialization.\n"
              << "  Exception message:"
              << pMsg;
         XMLString::release(&pMsg);
@@ -111,11 +107,11 @@
     int errorCode = 0;
     if (argC > 1)
     {
-        XERCES_STD_QUALIFIER cout << "\nUsage:\n"
+        std::cout << "\nUsage:\n"
                 "    CreateDOMDocument\n\n"
                 "This program creates a new DOM document from scratch in memory.\n"
                 "It then prints the count of elements in the tree.\n"
-             << XERCES_STD_QUALIFIER endl;
+             << std::endl;
         errorCode = 1;
     }
     if(errorCode) {
@@ -172,30 +168,30 @@
                //
 
                const XMLSize_t elementCount = doc->getElementsByTagName(X("*"))->getLength();
-               XERCES_STD_QUALIFIER cout << "The tree just created contains: " << elementCount
-                    << " elements." << XERCES_STD_QUALIFIER endl;
+               std::cout << "The tree just created contains: " << elementCount
+                    << " elements." << std::endl;
 
                doc->release();
            }
            catch (const OutOfMemoryException&)
            {
-               XERCES_STD_QUALIFIER cerr << "OutOfMemoryException" << XERCES_STD_QUALIFIER endl;
+               std::cerr << "OutOfMemoryException" << std::endl;
                errorCode = 5;
            }
            catch (const DOMException& e)
            {
-               XERCES_STD_QUALIFIER cerr << "DOMException code is:  " << e.code << XERCES_STD_QUALIFIER endl;
+               std::cerr << "DOMException code is:  " << e.code << std::endl;
                errorCode = 2;
            }
            catch (...)
            {
-               XERCES_STD_QUALIFIER cerr << "An error occurred creating the document" << XERCES_STD_QUALIFIER endl;
+               std::cerr << "An error occurred creating the document" << std::endl;
                errorCode = 3;
            }
        }  // (inpl != NULL)
        else
        {
-           XERCES_STD_QUALIFIER cerr << "Requested implementation is not supported" << XERCES_STD_QUALIFIER endl;
+           std::cerr << "Requested implementation is not supported" << std::endl;
            errorCode = 4;
        }
    }
diff --git a/samples/src/DOMCount/DOMCount.cpp b/samples/src/DOMCount/DOMCount.cpp
index d8c9a01..d13a80f 100644
--- a/samples/src/DOMCount/DOMCount.cpp
+++ b/samples/src/DOMCount/DOMCount.cpp
@@ -36,14 +36,10 @@
 #include <xercesc/dom/DOMNamedNodeMap.hpp>
 #include <xercesc/dom/DOMAttr.hpp>
 #include "DOMCount.hpp"
-#include <string.h>
-#include <stdlib.h>
+#include <cstring>
+#include <cstdlib>
 
-#if defined(XERCES_NEW_IOSTREAMS)
 #include <fstream>
-#else
-#include <fstream.h>
-#endif
 
 
 // ---------------------------------------------------------------------------
@@ -53,7 +49,7 @@
 // ---------------------------------------------------------------------------
 static void usage()
 {
-    XERCES_STD_QUALIFIER cout << "\nUsage:\n"
+    std::cout << "\nUsage:\n"
             "    DOMCount [options] <XML file | List file>\n\n"
             "This program invokes the DOMLSParser, builds the DOM tree,\n"
             "and then prints the number of elements found in each XML file.\n\n"
@@ -69,7 +65,7 @@
             "    -p          Print out names of elements and attributes encountered.\n"
 		    "    -?          Show this help.\n\n"
             "  * = Default if not provided explicitly.\n"
-         << XERCES_STD_QUALIFIER endl;
+         << std::endl;
 }
 
 
@@ -89,8 +85,8 @@
 		{
             if(printOutEncounteredEles) {
                 char *name = XMLString::transcode(n->getNodeName());
-                XERCES_STD_QUALIFIER cout <<"----------------------------------------------------------"<<XERCES_STD_QUALIFIER endl;
-                XERCES_STD_QUALIFIER cout <<"Encountered Element : "<< name << XERCES_STD_QUALIFIER endl;
+                std::cout <<"----------------------------------------------------------"<<std::endl;
+                std::cout <<"Encountered Element : "<< name << std::endl;
 
                 XMLString::release(&name);
 
@@ -98,19 +94,19 @@
                     // get all the attributes of the node
                     DOMNamedNodeMap *pAttributes = n->getAttributes();
                     const XMLSize_t nSize = pAttributes->getLength();
-                    XERCES_STD_QUALIFIER cout <<"\tAttributes" << XERCES_STD_QUALIFIER endl;
-                    XERCES_STD_QUALIFIER cout <<"\t----------" << XERCES_STD_QUALIFIER endl;
+                    std::cout <<"\tAttributes" << std::endl;
+                    std::cout <<"\t----------" << std::endl;
                     for(XMLSize_t i=0;i<nSize;++i) {
                         DOMAttr *pAttributeNode = (DOMAttr*) pAttributes->item(i);
                         // get attribute name
                         char *name = XMLString::transcode(pAttributeNode->getName());
 
-                        XERCES_STD_QUALIFIER cout << "\t" << name << "=";
+                        std::cout << "\t" << name << "=";
                         XMLString::release(&name);
 
                         // get attribute type
                         name = XMLString::transcode(pAttributeNode->getValue());
-                        XERCES_STD_QUALIFIER cout << name << XERCES_STD_QUALIFIER endl;
+                        std::cout << name << std::endl;
                         XMLString::release(&name);
                     }
                 }
@@ -177,7 +173,7 @@
                 valScheme = AbstractDOMParser::Val_Always;
             else
             {
-                XERCES_STD_QUALIFIER cerr << "Unknown -v= value: " << parm << XERCES_STD_QUALIFIER endl;
+                std::cerr << "Unknown -v= value: " << parm << std::endl;
                 return 2;
             }
         }
@@ -227,8 +223,8 @@
         }
          else
         {
-            XERCES_STD_QUALIFIER cerr << "Unknown option '" << argV[argInd]
-                 << "', ignoring it\n" << XERCES_STD_QUALIFIER endl;
+            std::cerr << "Unknown option '" << argV[argInd]
+                 << "', ignoring it\n" << std::endl;
         }
     }
 
@@ -262,8 +258,8 @@
 
     catch (const XMLException& toCatch)
     {
-         XERCES_STD_QUALIFIER cerr << "Error during initialization! :\n"
-              << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl;
+         std::cerr << "Error during initialization! :\n"
+              << StrX(toCatch.getMessage()) << std::endl;
          return 1;
     }
 
@@ -306,14 +302,14 @@
     unsigned long duration;
 
     bool more = true;
-    XERCES_STD_QUALIFIER ifstream fin;
+    std::ifstream fin;
 
     // the input is a list file
     if (doList)
         fin.open(argV[argInd]);
 
     if (fin.fail()) {
-        XERCES_STD_QUALIFIER cerr <<"Cannot open the list file: " << argV[argInd] << XERCES_STD_QUALIFIER endl;
+        std::cerr <<"Cannot open the list file: " << argV[argInd] << std::endl;
         return 2;
     }
 
@@ -330,7 +326,7 @@
                     continue;
                 else {
                     xmlFile = fURI;
-                    XERCES_STD_QUALIFIER cerr << "==Parsing== " << xmlFile << XERCES_STD_QUALIFIER endl;
+                    std::cerr << "==Parsing== " << xmlFile << std::endl;
                 }
             }
             else
@@ -344,7 +340,7 @@
         //reset error count first
         errorHandler.resetErrors();
 
-        XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *doc = 0;
+        xercesc::DOMDocument *doc = 0;
 
         try
         {
@@ -359,9 +355,9 @@
 
         catch (const XMLException& toCatch)
         {
-            XERCES_STD_QUALIFIER cerr << "\nError during parsing: '" << xmlFile << "'\n"
+            std::cerr << "\nError during parsing: '" << xmlFile << "'\n"
                  << "Exception message is:  \n"
-                 << StrX(toCatch.getMessage()) << "\n" << XERCES_STD_QUALIFIER endl;
+                 << StrX(toCatch.getMessage()) << "\n" << std::endl;
             errorOccurred = true;
             continue;
         }
@@ -370,18 +366,18 @@
             const unsigned int maxChars = 2047;
             XMLCh errText[maxChars + 1];
 
-            XERCES_STD_QUALIFIER cerr << "\nDOM Error during parsing: '" << xmlFile << "'\n"
-                 << "DOMException code is:  " << toCatch.code << XERCES_STD_QUALIFIER endl;
+            std::cerr << "\nDOM Error during parsing: '" << xmlFile << "'\n"
+                 << "DOMException code is:  " << toCatch.code << std::endl;
 
             if (DOMImplementation::loadDOMExceptionMsg(toCatch.code, errText, maxChars))
-                 XERCES_STD_QUALIFIER cerr << "Message is: " << StrX(errText) << XERCES_STD_QUALIFIER endl;
+                 std::cerr << "Message is: " << StrX(errText) << std::endl;
 
             errorOccurred = true;
             continue;
         }
         catch (...)
         {
-            XERCES_STD_QUALIFIER cerr << "\nUnexpected exception during parsing: '" << xmlFile << "'\n";
+            std::cerr << "\nUnexpected exception during parsing: '" << xmlFile << "'\n";
             errorOccurred = true;
             continue;
         }
@@ -392,7 +388,7 @@
         //
         if (errorHandler.getSawErrors())
         {
-            XERCES_STD_QUALIFIER cout << "\nErrors occurred, no output available\n" << XERCES_STD_QUALIFIER endl;
+            std::cout << "\nErrors occurred, no output available\n" << std::endl;
             errorOccurred = true;
         }
          else
@@ -403,14 +399,14 @@
                 // test getElementsByTagName and getLength
                 XMLCh xa[] = {chAsterisk, chNull};
                 if (elementCount != doc->getElementsByTagName(xa)->getLength()) {
-                    XERCES_STD_QUALIFIER cout << "\nErrors occurred, element count is wrong\n" << XERCES_STD_QUALIFIER endl;
+                    std::cout << "\nErrors occurred, element count is wrong\n" << std::endl;
                     errorOccurred = true;
                 }
             }
 
             // Print out the stats that we collected and time taken.
-            XERCES_STD_QUALIFIER cout << xmlFile << ": " << duration << " ms ("
-                 << elementCount << " elems)." << XERCES_STD_QUALIFIER endl;
+            std::cout << xmlFile << ": " << duration << " ms ("
+                 << elementCount << " elems)." << std::endl;
         }
     }
 
@@ -453,16 +449,16 @@
 {
     fSawErrors = true;
     if (domError.getSeverity() == DOMError::DOM_SEVERITY_WARNING)
-        XERCES_STD_QUALIFIER cerr << "\nWarning at file ";
+        std::cerr << "\nWarning at file ";
     else if (domError.getSeverity() == DOMError::DOM_SEVERITY_ERROR)
-        XERCES_STD_QUALIFIER cerr << "\nError at file ";
+        std::cerr << "\nError at file ";
     else
-        XERCES_STD_QUALIFIER cerr << "\nFatal Error at file ";
+        std::cerr << "\nFatal Error at file ";
 
-    XERCES_STD_QUALIFIER cerr << StrX(domError.getLocation()->getURI())
+    std::cerr << StrX(domError.getLocation()->getURI())
          << ", line " << domError.getLocation()->getLineNumber()
          << ", char " << domError.getLocation()->getColumnNumber()
-         << "\n  Message: " << StrX(domError.getMessage()) << XERCES_STD_QUALIFIER endl;
+         << "\n  Message: " << StrX(domError.getMessage()) << std::endl;
 
     return true;
 }
diff --git a/samples/src/DOMCount/DOMCount.hpp b/samples/src/DOMCount/DOMCount.hpp
index 2d9c8c1..0ea6d70 100644
--- a/samples/src/DOMCount/DOMCount.hpp
+++ b/samples/src/DOMCount/DOMCount.hpp
@@ -24,13 +24,9 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/dom/DOMErrorHandler.hpp>
 #include <xercesc/util/XMLString.hpp>
-#if defined(XERCES_NEW_IOSTREAMS)
 #include <iostream>
-#else
-#include <iostream.h>
-#endif
 
-XERCES_CPP_NAMESPACE_USE
+using namespace XERCES_CPP_NAMESPACE;
 
 // ---------------------------------------------------------------------------
 //  Simple error handler deriviative to install on parser
@@ -118,7 +114,7 @@
     char*   fLocalForm;
 };
 
-inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump)
+inline std::ostream& operator<<(std::ostream& target, const StrX& toDump)
 {
     target << toDump.localForm();
     return target;
diff --git a/samples/src/DOMPrint/DOMPrint.cpp b/samples/src/DOMPrint/DOMPrint.cpp
index 3c8ed42..5f113ea 100644
--- a/samples/src/DOMPrint/DOMPrint.cpp
+++ b/samples/src/DOMPrint/DOMPrint.cpp
@@ -80,8 +80,8 @@
 #include "DOMPrintErrorHandler.hpp"
 #include <xercesc/util/OutOfMemoryException.hpp>
 
-#include <string.h>
-#include <stdlib.h>
+#include <cstring>
+#include <cstdlib>
 
 // ---------------------------------------------------------------------------
 //  Local data
@@ -153,7 +153,7 @@
 // ---------------------------------------------------------------------------
 void usage()
 {
-    XERCES_STD_QUALIFIER cout << "\nUsage:\n"
+    std::cout << "\nUsage:\n"
             "    DOMPrint [options] <XML file>\n\n"
             "This program invokes the DOM parser, and builds the DOM tree.\n"
             "It then asks the DOMLSSerializer to serialize the DOM tree.\n"
@@ -179,7 +179,7 @@
             "The parser has intrinsic support for the following encodings:\n"
             "    UTF-8, US-ASCII, ISO8859-1, UTF-16[BL]E, UCS-4[BL]E,\n"
             "    WINDOWS-1252, IBM1140, IBM037, IBM1047.\n"
-          <<  XERCES_STD_QUALIFIER endl;
+          <<  std::endl;
 }
 
 // ---------------------------------------------------------------------------
@@ -199,9 +199,9 @@
 
     catch(const XMLException &toCatch)
     {
-        XERCES_STD_QUALIFIER cerr << "Error during Xerces-c Initialization.\n"
+        std::cerr << "Error during Xerces-c Initialization.\n"
              << "  Exception message:"
-             << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl;
+             << StrX(toCatch.getMessage()) << std::endl;
         return 1;
     }
 
@@ -241,7 +241,7 @@
                 gValScheme = XercesDOMParser::Val_Always;
             else
             {
-                XERCES_STD_QUALIFIER cerr << "Unknown -v= value: " << parm << XERCES_STD_QUALIFIER endl;
+                std::cerr << "Unknown -v= value: " << parm << std::endl;
                 XMLPlatformUtils::Terminate();
                 return 2;
             }
@@ -285,7 +285,7 @@
 				gDiscardDefaultContent = false;
             else
             {
-                XERCES_STD_QUALIFIER cerr << "Unknown -wddc= value: " << parm << XERCES_STD_QUALIFIER endl;
+                std::cerr << "Unknown -wddc= value: " << parm << std::endl;
                 XMLPlatformUtils::Terminate();
                 return 2;
             }
@@ -301,7 +301,7 @@
 				gSplitCdataSections = false;
             else
             {
-                XERCES_STD_QUALIFIER cerr << "Unknown -wscs= value: " << parm << XERCES_STD_QUALIFIER endl;
+                std::cerr << "Unknown -wscs= value: " << parm << std::endl;
                 XMLPlatformUtils::Terminate();
                 return 2;
             }
@@ -316,7 +316,7 @@
 				gUseFilter = false;
             else
             {
-                XERCES_STD_QUALIFIER cerr << "Unknown -wflt= value: " << parm << XERCES_STD_QUALIFIER endl;
+                std::cerr << "Unknown -wflt= value: " << parm << std::endl;
                 XMLPlatformUtils::Terminate();
                 return 2;
             }
@@ -331,7 +331,7 @@
 				gFormatPrettyPrint = false;
             else
             {
-                XERCES_STD_QUALIFIER cerr << "Unknown -wfpp= value: " << parm << XERCES_STD_QUALIFIER endl;
+                std::cerr << "Unknown -wfpp= value: " << parm << std::endl;
                 XMLPlatformUtils::Terminate();
                 return 2;
             }
@@ -346,7 +346,7 @@
                  gXMLDeclaration = false;
              else
              {
-                 XERCES_STD_QUALIFIER cerr << "Unknown -wfdecl= value: " << parm << XERCES_STD_QUALIFIER endl;
+                 std::cerr << "Unknown -wfdecl= value: " << parm << std::endl;
                  XMLPlatformUtils::Terminate();
                  return 2;
              }
@@ -361,7 +361,7 @@
                 gWriteBOM = false;
             else
             {
-                XERCES_STD_QUALIFIER cerr << "Unknown -wbom= value: " << parm << XERCES_STD_QUALIFIER endl;
+                std::cerr << "Unknown -wbom= value: " << parm << std::endl;
                 XMLPlatformUtils::Terminate();
                 return 2;
             }
@@ -372,8 +372,8 @@
         }
          else
         {
-            XERCES_STD_QUALIFIER cerr << "Unknown option '" << argV[parmInd]
-                 << "', ignoring it.\n" << XERCES_STD_QUALIFIER endl;
+            std::cerr << "Unknown option '" << argV[parmInd]
+                 << "', ignoring it.\n" << std::endl;
         }
     }
 
@@ -416,13 +416,13 @@
     }
     catch (const OutOfMemoryException&)
     {
-        XERCES_STD_QUALIFIER cerr << "OutOfMemoryException" << XERCES_STD_QUALIFIER endl;
+        std::cerr << "OutOfMemoryException" << std::endl;
         errorsOccured = true;
     }
     catch (const XMLException& e)
     {
-        XERCES_STD_QUALIFIER cerr << "An error occurred during parsing\n   Message: "
-             << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+        std::cerr << "An error occurred during parsing\n   Message: "
+             << StrX(e.getMessage()) << std::endl;
         errorsOccured = true;
     }
 
@@ -431,18 +431,18 @@
         const unsigned int maxChars = 2047;
         XMLCh errText[maxChars + 1];
 
-        XERCES_STD_QUALIFIER cerr << "\nDOM Error during parsing: '" << gXmlFile << "'\n"
-             << "DOMException code is:  " << e.code << XERCES_STD_QUALIFIER endl;
+        std::cerr << "\nDOM Error during parsing: '" << gXmlFile << "'\n"
+             << "DOMException code is:  " << e.code << std::endl;
 
         if (DOMImplementation::loadDOMExceptionMsg(e.code, errText, maxChars))
-             XERCES_STD_QUALIFIER cerr << "Message is: " << StrX(errText) << XERCES_STD_QUALIFIER endl;
+             std::cerr << "Message is: " << StrX(errText) << std::endl;
 
         errorsOccured = true;
     }
 
     catch (...)
     {
-        XERCES_STD_QUALIFIER cerr << "An error occurred during parsing\n " << XERCES_STD_QUALIFIER endl;
+        std::cerr << "An error occurred during parsing\n " << std::endl;
         errorsOccured = true;
     }
 
@@ -546,16 +546,16 @@
                 }
                 catch(const DOMXPathException& e)
                 {
-                    XERCES_STD_QUALIFIER cerr << "An error occurred during processing of the XPath expression. Msg is:"
-                        << XERCES_STD_QUALIFIER endl
-                        << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+                    std::cerr << "An error occurred during processing of the XPath expression. Msg is:"
+                        << std::endl
+                        << StrX(e.getMessage()) << std::endl;
                     retval = 4;
                 }
                 catch(const DOMException& e)
                 {
-                    XERCES_STD_QUALIFIER cerr << "An error occurred during processing of the XPath expression. Msg is:"
-                        << XERCES_STD_QUALIFIER endl
-                        << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+                    std::cerr << "An error occurred during processing of the XPath expression. Msg is:"
+                        << std::endl
+                        << StrX(e.getMessage()) << std::endl;
                     retval = 4;
                 }
                 XMLString::release(&xpathStr);
@@ -579,21 +579,21 @@
         }
         catch (const OutOfMemoryException&)
         {
-            XERCES_STD_QUALIFIER cerr << "OutOfMemoryException" << XERCES_STD_QUALIFIER endl;
+            std::cerr << "OutOfMemoryException" << std::endl;
             retval = 5;
         }
         catch (const DOMLSException& e)
         {
-            XERCES_STD_QUALIFIER cerr << "An error occurred during serialization of the DOM tree. Msg is:"
-                << XERCES_STD_QUALIFIER endl
-                << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+            std::cerr << "An error occurred during serialization of the DOM tree. Msg is:"
+                << std::endl
+                << StrX(e.getMessage()) << std::endl;
             retval = 4;
         }
         catch (const XMLException& e)
         {
-            XERCES_STD_QUALIFIER cerr << "An error occurred during creation of output transcoder. Msg is:"
-                << XERCES_STD_QUALIFIER endl
-                << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+            std::cerr << "An error occurred during creation of output transcoder. Msg is:"
+                << std::endl
+                << StrX(e.getMessage()) << std::endl;
             retval = 4;
         }
 
diff --git a/samples/src/DOMPrint/DOMPrintErrorHandler.cpp b/samples/src/DOMPrint/DOMPrintErrorHandler.cpp
index dd7391e..5c56f47 100644
--- a/samples/src/DOMPrint/DOMPrintErrorHandler.cpp
+++ b/samples/src/DOMPrint/DOMPrintErrorHandler.cpp
@@ -21,11 +21,7 @@
 
 #include <xercesc/util/XMLString.hpp>
 #include <xercesc/dom/DOMError.hpp>
-#if defined(XERCES_NEW_IOSTREAMS)
 #include <iostream>
-#else
-#include <iostream.h>
-#endif
 
 #include "DOMPrintErrorHandler.hpp"
 
@@ -33,14 +29,14 @@
 {
     // Display whatever error message passed from the serializer
     if (domError.getSeverity() == DOMError::DOM_SEVERITY_WARNING)
-        XERCES_STD_QUALIFIER cerr << "\nWarning Message: ";
+        std::cerr << "\nWarning Message: ";
     else if (domError.getSeverity() == DOMError::DOM_SEVERITY_ERROR)
-        XERCES_STD_QUALIFIER cerr << "\nError Message: ";
+        std::cerr << "\nError Message: ";
     else
-        XERCES_STD_QUALIFIER cerr << "\nFatal Message: ";
+        std::cerr << "\nFatal Message: ";
 
     char *msg = XMLString::transcode(domError.getMessage());
-    XERCES_STD_QUALIFIER cerr<< msg <<XERCES_STD_QUALIFIER endl;
+    std::cerr<< msg <<std::endl;
     XMLString::release(&msg);
 
     // Instructs the serializer to continue serialization if possible.
diff --git a/samples/src/DOMPrint/DOMPrintErrorHandler.hpp b/samples/src/DOMPrint/DOMPrintErrorHandler.hpp
index d51682b..14e3167 100644
--- a/samples/src/DOMPrint/DOMPrintErrorHandler.hpp
+++ b/samples/src/DOMPrint/DOMPrintErrorHandler.hpp
@@ -25,7 +25,7 @@
 
 #include <xercesc/dom/DOMErrorHandler.hpp>
 
-XERCES_CPP_NAMESPACE_USE
+using namespace XERCES_CPP_NAMESPACE;
 
 class DOMPrintErrorHandler : public DOMErrorHandler
 {
diff --git a/samples/src/DOMPrint/DOMPrintFilter.hpp b/samples/src/DOMPrint/DOMPrintFilter.hpp
index b76123c..c38e429 100644
--- a/samples/src/DOMPrint/DOMPrintFilter.hpp
+++ b/samples/src/DOMPrint/DOMPrintFilter.hpp
@@ -29,7 +29,7 @@
 
 #include <xercesc/dom/DOMLSSerializerFilter.hpp>
 
-XERCES_CPP_NAMESPACE_USE
+using namespace XERCES_CPP_NAMESPACE;
 
 class DOMPrintFilter : public DOMLSSerializerFilter {
 public:
diff --git a/samples/src/DOMPrint/DOMTreeErrorReporter.cpp b/samples/src/DOMPrint/DOMTreeErrorReporter.cpp
index 9a24fac..ba8a1a6 100644
--- a/samples/src/DOMPrint/DOMTreeErrorReporter.cpp
+++ b/samples/src/DOMPrint/DOMTreeErrorReporter.cpp
@@ -24,13 +24,9 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/sax/SAXParseException.hpp>
 #include "DOMTreeErrorReporter.hpp"
-#if defined(XERCES_NEW_IOSTREAMS)
 #include <iostream>
-#else
-#include <iostream.h>
-#endif
-#include <stdlib.h>
-#include <string.h>
+#include <cstdlib>
+#include <cstring>
 
 
 void DOMTreeErrorReporter::warning(const SAXParseException&)
@@ -43,19 +39,19 @@
 void DOMTreeErrorReporter::error(const SAXParseException& toCatch)
 {
     fSawErrors = true;
-    XERCES_STD_QUALIFIER cerr << "Error at file \"" << StrX(toCatch.getSystemId())
+    std::cerr << "Error at file \"" << StrX(toCatch.getSystemId())
 		 << "\", line " << toCatch.getLineNumber()
 		 << ", column " << toCatch.getColumnNumber()
-         << "\n   Message: " << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl;
+         << "\n   Message: " << StrX(toCatch.getMessage()) << std::endl;
 }
 
 void DOMTreeErrorReporter::fatalError(const SAXParseException& toCatch)
 {
     fSawErrors = true;
-    XERCES_STD_QUALIFIER cerr << "Fatal Error at file \"" << StrX(toCatch.getSystemId())
+    std::cerr << "Fatal Error at file \"" << StrX(toCatch.getSystemId())
 		 << "\", line " << toCatch.getLineNumber()
 		 << ", column " << toCatch.getColumnNumber()
-         << "\n   Message: " << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl;
+         << "\n   Message: " << StrX(toCatch.getMessage()) << std::endl;
 }
 
 void DOMTreeErrorReporter::resetErrors()
diff --git a/samples/src/DOMPrint/DOMTreeErrorReporter.hpp b/samples/src/DOMPrint/DOMTreeErrorReporter.hpp
index 5807c2b..5ae6e85 100644
--- a/samples/src/DOMPrint/DOMTreeErrorReporter.hpp
+++ b/samples/src/DOMPrint/DOMTreeErrorReporter.hpp
@@ -21,14 +21,10 @@
 
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/sax/ErrorHandler.hpp>
-#if defined(XERCES_NEW_IOSTREAMS)
 #include <iostream>
-#else
-#include <iostream.h>
-#endif
 
 
-XERCES_CPP_NAMESPACE_USE
+using namespace XERCES_CPP_NAMESPACE;
 
 
 class DOMTreeErrorReporter : public ErrorHandler
@@ -116,7 +112,7 @@
     char*   fLocalForm;
 };
 
-inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump)
+inline std::ostream& operator<<(std::ostream& target, const StrX& toDump)
 {
     target << toDump.localForm();
     return target;
diff --git a/samples/src/EnumVal/EnumVal.cpp b/samples/src/EnumVal/EnumVal.cpp
index 6cc4c17..cc7bf77 100644
--- a/samples/src/EnumVal/EnumVal.cpp
+++ b/samples/src/EnumVal/EnumVal.cpp
@@ -28,16 +28,12 @@
 #include <xercesc/parsers/SAXParser.hpp>
 #include <xercesc/validators/DTD/DTDValidator.hpp>
 #include <xercesc/util/OutOfMemoryException.hpp>    
-#if defined(XERCES_NEW_IOSTREAMS)
 #include <iostream>
-#else
-#include <iostream.h>
-#endif
-#include <stdlib.h>
-#include <string.h>
+#include <cstdlib>
+#include <cstring>
 
 
-XERCES_CPP_NAMESPACE_USE
+using namespace XERCES_CPP_NAMESPACE;
 
 // ---------------------------------------------------------------------------
 //  Forward references
@@ -87,7 +83,7 @@
     char*   fLocalForm;
 };
 
-inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump)
+inline std::ostream& operator<<(std::ostream& target, const StrX& toDump)
 {
     target << toDump.localForm();
     return target;
@@ -99,13 +95,13 @@
 // ---------------------------------------------------------------------------
 static void usage()
 {
-    XERCES_STD_QUALIFIER cout << "\nUsage:\n"
+    std::cout << "\nUsage:\n"
             "    EnumVal <XML file>\n\n"
             "This program parses the specified XML file, then shows how to\n"
             "enumerate the contents of the DTD Grammar. Essentially,\n"
             "shows how one can access the DTD information stored in internal\n"
             "data structures.\n"
-         << XERCES_STD_QUALIFIER endl;
+         << std::endl;
 }
 
 
@@ -122,8 +118,8 @@
 
     catch (const XMLException& toCatch)
     {
-         XERCES_STD_QUALIFIER cerr   << "Error during initialization! Message:\n"
-                << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl;
+         std::cerr   << "Error during initialization! Message:\n"
+                << StrX(toCatch.getMessage()) << std::endl;
          return 1;
     }
 
@@ -169,14 +165,14 @@
     }
     catch (const OutOfMemoryException&)
     {
-        XERCES_STD_QUALIFIER cerr << "OutOfMemoryException" << XERCES_STD_QUALIFIER endl;
+        std::cerr << "OutOfMemoryException" << std::endl;
         errorCode = 5;
     }
     catch (const XMLException& e)
     {
-        XERCES_STD_QUALIFIER cerr << "\nError during parsing: '" << xmlFile << "'\n"
+        std::cerr << "\nError during parsing: '" << xmlFile << "'\n"
              << "Exception message is:  \n"
-             << StrX(e.getMessage()) << "\n" << XERCES_STD_QUALIFIER endl;
+             << StrX(e.getMessage()) << "\n" << std::endl;
         errorCode = 4;
     }
     if(errorCode) {
@@ -194,25 +190,25 @@
         NameIdPoolEnumerator<DTDElementDecl> elemEnum = grammar->getElemEnumerator();
         if (elemEnum.hasMoreElements())
         {
-            XERCES_STD_QUALIFIER cout << "\nELEMENTS:\n----------------------------\n";
+            std::cout << "\nELEMENTS:\n----------------------------\n";
             while(elemEnum.hasMoreElements())
             {
                 const DTDElementDecl& curElem = elemEnum.nextElement();
-                XERCES_STD_QUALIFIER cout << "  Name: " << StrX(curElem.getFullName()) << "\n";
+                std::cout << "  Name: " << StrX(curElem.getFullName()) << "\n";
 
-                XERCES_STD_QUALIFIER cout << "  Content Model: "
+                std::cout << "  Content Model: "
                      << StrX(curElem.getFormattedContentModel())
                      << "\n";
 
                 // Get an enumerator for this guy's attributes if any
                 if (curElem.hasAttDefs())
                 {
-                    XERCES_STD_QUALIFIER cout << "  Attributes:\n";
+                    std::cout << "  Attributes:\n";
                     XMLAttDefList& attList = curElem.getAttDefList();
                     for (unsigned int i=0; i<attList.getAttDefCount(); i++)
                     {
                         const XMLAttDef& curAttDef = attList.getAttDef(i);
-                        XERCES_STD_QUALIFIER cout << "    Name:" << StrX(curAttDef.getFullName())
+                        std::cout << "    Name:" << StrX(curAttDef.getFullName())
                              << ", Type: ";
 
                         // Get the type and display it
@@ -220,52 +216,52 @@
                         switch(type)
                         {
                             case XMLAttDef::CData :
-                                XERCES_STD_QUALIFIER cout << "CDATA";
+                                std::cout << "CDATA";
                                 break;
 
                             case XMLAttDef::ID :
-                                XERCES_STD_QUALIFIER cout << "ID";
+                                std::cout << "ID";
                                 break;
 
                             case XMLAttDef::IDRef :
                             case XMLAttDef::IDRefs :
-                                XERCES_STD_QUALIFIER cout << "IDREF(S)";
+                                std::cout << "IDREF(S)";
                                 break;
 
                             case XMLAttDef::Entity :
                             case XMLAttDef::Entities :
-                                XERCES_STD_QUALIFIER cout << "ENTITY(IES)";
+                                std::cout << "ENTITY(IES)";
                                 break;
 
                             case XMLAttDef::NmToken :
                             case XMLAttDef::NmTokens :
-                                XERCES_STD_QUALIFIER cout << "NMTOKEN(S)";
+                                std::cout << "NMTOKEN(S)";
                                 break;
 
                             case XMLAttDef::Notation :
-                                XERCES_STD_QUALIFIER cout << "NOTATION";
+                                std::cout << "NOTATION";
                                 break;
 
                             case XMLAttDef::Enumeration :
-                                XERCES_STD_QUALIFIER cout << "ENUMERATION";
+                                std::cout << "ENUMERATION";
                                 break;
                             default:
                                 break;
                         }
 
-                        XERCES_STD_QUALIFIER cout << "\n";
+                        std::cout << "\n";
                     }
                 }
-                XERCES_STD_QUALIFIER cout << XERCES_STD_QUALIFIER endl;
+                std::cout << std::endl;
             }
         }
          else
         {
-            XERCES_STD_QUALIFIER cout << "The validator has no elements to display\n" << XERCES_STD_QUALIFIER endl;
+            std::cout << "The validator has no elements to display\n" << std::endl;
         }
     }
     else
-        XERCES_STD_QUALIFIER cout << "\nErrors occurred, no output available\n" << XERCES_STD_QUALIFIER endl;
+        std::cout << "\nErrors occurred, no output available\n" << std::endl;
 
     //
     //  Delete the parser itself.  Must be done prior to calling Terminate, below.
diff --git a/samples/src/MemParse/MemParse.cpp b/samples/src/MemParse/MemParse.cpp
index 61fa667..8325d7e 100644
--- a/samples/src/MemParse/MemParse.cpp
+++ b/samples/src/MemParse/MemParse.cpp
@@ -95,7 +95,7 @@
 // ---------------------------------------------------------------------------
 void usage()
 {
-    XERCES_STD_QUALIFIER cout << "\nUsage:\n"
+    std::cout << "\nUsage:\n"
             "    MemParse [options]\n\n"
             "This program uses the SAX Parser to parse a memory buffer\n"
             "containing XML statements, and reports the number of\n"
@@ -107,7 +107,7 @@
             "    -f          Enable full schema constraint checking. Defaults to off.\n"
 		      "    -?          Show this help.\n\n"
             "  * = Default if not provided explicitly.\n"
-         << XERCES_STD_QUALIFIER endl;
+         << std::endl;
 }
 
 
@@ -123,8 +123,8 @@
     }
     catch (const XMLException& toCatch)
     {
-         XERCES_STD_QUALIFIER cerr << "Error during initialization! Message:\n"
-              << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl;
+         std::cerr << "Error during initialization! Message:\n"
+              << StrX(toCatch.getMessage()) << std::endl;
          return 1;
     }
 
@@ -164,7 +164,7 @@
                 valScheme = SAXParser::Val_Always;
             else
             {
-                XERCES_STD_QUALIFIER cerr << "Unknown -v= value: " << parm << XERCES_STD_QUALIFIER endl;
+                std::cerr << "Unknown -v= value: " << parm << std::endl;
                 return 2;
             }
         }
@@ -185,8 +185,8 @@
         }
          else
         {
-            XERCES_STD_QUALIFIER cerr << "Unknown option '" << argV[argInd]
-                 << "', ignoring it\n" << XERCES_STD_QUALIFIER endl;
+            std::cerr << "Unknown option '" << argV[argInd]
+                 << "', ignoring it\n" << std::endl;
         }
     }
 
@@ -243,14 +243,14 @@
     }
     catch (const OutOfMemoryException&)
     {
-        XERCES_STD_QUALIFIER cerr << "OutOfMemoryException" << XERCES_STD_QUALIFIER endl;
+        std::cerr << "OutOfMemoryException" << std::endl;
         errorCode = 5;
     }
     catch (const XMLException& e)
     {
-        XERCES_STD_QUALIFIER cerr << "\nError during parsing memory stream:\n"
+        std::cerr << "\nError during parsing memory stream:\n"
              << "Exception message is:  \n"
-             << StrX(e.getMessage()) << "\n" << XERCES_STD_QUALIFIER endl;
+             << StrX(e.getMessage()) << "\n" << std::endl;
         errorCode = 4;
     }
     if(errorCode) {
@@ -260,7 +260,7 @@
 
     // Print out the stats that we collected and time taken.
     if (!errorCount) {
-        XERCES_STD_QUALIFIER cout << "\nFinished parsing the memory buffer containing the following "
+        std::cout << "\nFinished parsing the memory buffer containing the following "
              << "XML statements:\n\n"
              << gXMLInMemBuf
              << "\n\n\n"
@@ -268,7 +268,7 @@
              << handler.getElementCount() << " elements, "
              << handler.getAttrCount() << " attributes, "
              << handler.getSpaceCount() << " spaces, "
-             << handler.getCharacterCount() << " characters).\n" << XERCES_STD_QUALIFIER endl;
+             << handler.getCharacterCount() << " characters).\n" << std::endl;
     }
 
     //
diff --git a/samples/src/MemParse/MemParse.hpp b/samples/src/MemParse/MemParse.hpp
index db44bde..5f1146c 100644
--- a/samples/src/MemParse/MemParse.hpp
+++ b/samples/src/MemParse/MemParse.hpp
@@ -23,16 +23,12 @@
 // ---------------------------------------------------------------------------
 //  Includes for all the program files to see
 // ---------------------------------------------------------------------------
-#include <string.h>
-#include <stdlib.h>
+#include <cstring>
+#include <cstdlib>
 #include <xercesc/util/PlatformUtils.hpp>
 #include "MemParseHandlers.hpp"
 
-#if defined(XERCES_NEW_IOSTREAMS)
 #include <iostream>
-#else
-#include <iostream.h>
-#endif
 
 
 
@@ -78,7 +74,7 @@
     char*   fLocalForm;
 };
 
-inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump)
+inline std::ostream& operator<<(std::ostream& target, const StrX& toDump)
 {
     target << toDump.localForm();
     return target;
diff --git a/samples/src/MemParse/MemParseHandlers.cpp b/samples/src/MemParse/MemParseHandlers.cpp
index ee91ce7..c32d260 100644
--- a/samples/src/MemParse/MemParseHandlers.cpp
+++ b/samples/src/MemParse/MemParseHandlers.cpp
@@ -25,7 +25,7 @@
 //  Includes
 // ---------------------------------------------------------------------------
 #include "MemParse.hpp"
-#include <string.h>
+#include <cstring>
 #include <xercesc/sax/AttributeList.hpp>
 #include <xercesc/sax/SAXParseException.hpp>
 #include <xercesc/sax/SAXException.hpp>
@@ -85,26 +85,26 @@
 // ---------------------------------------------------------------------------
 void MemParseHandlers::error(const SAXParseException& e)
 {
-    XERCES_STD_QUALIFIER cerr << "\nError at (file " << StrX(e.getSystemId())
+    std::cerr << "\nError at (file " << StrX(e.getSystemId())
 		 << ", line " << e.getLineNumber()
 		 << ", char " << e.getColumnNumber()
-         << "): " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+         << "): " << StrX(e.getMessage()) << std::endl;
 }
 
 void MemParseHandlers::fatalError(const SAXParseException& e)
 {
-    XERCES_STD_QUALIFIER cerr << "\nFatal Error at (file " << StrX(e.getSystemId())
+    std::cerr << "\nFatal Error at (file " << StrX(e.getSystemId())
 		 << ", line " << e.getLineNumber()
 		 << ", char " << e.getColumnNumber()
-         << "): " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+         << "): " << StrX(e.getMessage()) << std::endl;
 }
 
 void MemParseHandlers::warning(const SAXParseException& e)
 {
-    XERCES_STD_QUALIFIER cerr << "\nWarning at (file " << StrX(e.getSystemId())
+    std::cerr << "\nWarning at (file " << StrX(e.getSystemId())
 		 << ", line " << e.getLineNumber()
 		 << ", char " << e.getColumnNumber()
-         << "): " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+         << "): " << StrX(e.getMessage()) << std::endl;
 }
 
 
diff --git a/samples/src/MemParse/MemParseHandlers.hpp b/samples/src/MemParse/MemParseHandlers.hpp
index 741189a..ef867bc 100644
--- a/samples/src/MemParse/MemParseHandlers.hpp
+++ b/samples/src/MemParse/MemParseHandlers.hpp
@@ -25,11 +25,11 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/sax/HandlerBase.hpp>
 
-XERCES_CPP_NAMESPACE_USE
+using namespace XERCES_CPP_NAMESPACE;
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 class AttributeList;
-XERCES_CPP_NAMESPACE_END
+}
 
 
 class MemParseHandlers : public HandlerBase
diff --git a/samples/src/PParse/PParse.cpp b/samples/src/PParse/PParse.cpp
index e292b5b..eb77ffc 100644
--- a/samples/src/PParse/PParse.cpp
+++ b/samples/src/PParse/PParse.cpp
@@ -83,7 +83,7 @@
 // ---------------------------------------------------------------------------
 static void usage()
 {
-    XERCES_STD_QUALIFIER cout << "\nUsage:\n"
+    std::cout << "\nUsage:\n"
             "    PParse [options] <XML file>\n\n"
             "This program demonstrates the progressive parse capabilities of\n"
 	         "the parser system. It allows you to do a scanFirst() call followed by\n"
@@ -98,7 +98,7 @@
             "      -f            - Enable full schema constraint checking [default is off].\n"
             "      -?            - Show this help.\n\n"
             "  * = Default if not provided explicitly.\n"
-         <<  XERCES_STD_QUALIFIER endl;
+         <<  std::endl;
 }
 
 
@@ -116,8 +116,8 @@
 
     catch (const XMLException& toCatch)
     {
-         XERCES_STD_QUALIFIER cerr << "Error during initialization! :\n"
-              << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl;
+         std::cerr << "Error during initialization! :\n"
+              << StrX(toCatch.getMessage()) << std::endl;
          return 1;
     }
 
@@ -157,7 +157,7 @@
                 valScheme = SAXParser::Val_Always;
             else
             {
-                XERCES_STD_QUALIFIER cerr << "Unknown -v= value: " << parm << XERCES_STD_QUALIFIER endl;
+                std::cerr << "Unknown -v= value: " << parm << std::endl;
                 XMLPlatformUtils::Terminate();
                 return 2;
             }
@@ -179,8 +179,8 @@
         }
         else
         {
-            XERCES_STD_QUALIFIER cerr << "Unknown option '" << argV[parmInd]
-                << "', ignoring it\n" << XERCES_STD_QUALIFIER endl;
+            std::cerr << "Unknown option '" << argV[parmInd]
+                << "', ignoring it\n" << std::endl;
         }
     }
 
@@ -226,7 +226,7 @@
         const unsigned long startMillis = XMLPlatformUtils::getCurrentMillis();
         if (!parser->parseFirst(xmlFile, token))
         {
-            XERCES_STD_QUALIFIER cerr << "scanFirst() failed\n" << XERCES_STD_QUALIFIER endl;
+            std::cerr << "scanFirst() failed\n" << std::endl;
             XMLPlatformUtils::Terminate();
             return 1;
         }
@@ -254,15 +254,15 @@
     }
     catch (const OutOfMemoryException&)
     {
-        XERCES_STD_QUALIFIER cerr << "OutOfMemoryException" << XERCES_STD_QUALIFIER endl;
+        std::cerr << "OutOfMemoryException" << std::endl;
         errorCode = 5;
     }
     catch (const XMLException& toCatch)
     {
-        XERCES_STD_QUALIFIER cerr << "\nAn error occurred: '" << xmlFile << "'\n"
+        std::cerr << "\nAn error occurred: '" << xmlFile << "'\n"
              << "Exception message is: \n"
              << StrX(toCatch.getMessage())
-             << "\n" << XERCES_STD_QUALIFIER endl;
+             << "\n" << std::endl;
         errorCode = 4;
     }
 
@@ -272,11 +272,11 @@
     }
 
     if (!errorCount) {
-        XERCES_STD_QUALIFIER cout << xmlFile << ": " << duration << " ms ("
+        std::cout << xmlFile << ": " << duration << " ms ("
             << handler.getElementCount() << " elems, "
             << handler.getAttrCount() << " attrs, "
             << handler.getSpaceCount() << " spaces, "
-            << handler.getCharacterCount() << " chars)" << XERCES_STD_QUALIFIER endl;
+            << handler.getCharacterCount() << " chars)" << std::endl;
     }
 
     //
diff --git a/samples/src/PParse/PParse.hpp b/samples/src/PParse/PParse.hpp
index 0283a32..d055b05 100644
--- a/samples/src/PParse/PParse.hpp
+++ b/samples/src/PParse/PParse.hpp
@@ -22,13 +22,9 @@
 // ---------------------------------------------------------------------------
 //  Includes for all the program files to see
 // ---------------------------------------------------------------------------
-#if defined(XERCES_NEW_IOSTREAMS)
 #include <iostream>
-#else
-#include <iostream.h>
-#endif
-#include <string.h>
-#include <stdlib.h>
+#include <cstring>
+#include <cstdlib>
 #include "PParseHandlers.hpp"
 
 
@@ -74,7 +70,7 @@
     char*   fLocalForm;
 };
 
-inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump)
+inline std::ostream& operator<<(std::ostream& target, const StrX& toDump)
 {
     target << toDump.localForm();
     return target;
diff --git a/samples/src/PParse/PParseHandlers.cpp b/samples/src/PParse/PParseHandlers.cpp
index 891a7db..7fa09db 100644
--- a/samples/src/PParse/PParseHandlers.cpp
+++ b/samples/src/PParse/PParseHandlers.cpp
@@ -83,25 +83,25 @@
 // ---------------------------------------------------------------------------
 void PParseHandlers::error(const SAXParseException& e)
 {
-    XERCES_STD_QUALIFIER cerr << "\nError at file " << StrX(e.getSystemId())
+    std::cerr << "\nError at file " << StrX(e.getSystemId())
 		 << ", line " << e.getLineNumber()
 		 << ", char " << e.getColumnNumber()
-         << "\n  Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+         << "\n  Message: " << StrX(e.getMessage()) << std::endl;
 }
 
 void PParseHandlers::fatalError(const SAXParseException& e)
 {
-    XERCES_STD_QUALIFIER cerr << "\nFatal Error at file " << StrX(e.getSystemId())
+    std::cerr << "\nFatal Error at file " << StrX(e.getSystemId())
 		 << ", line " << e.getLineNumber()
 		 << ", char " << e.getColumnNumber()
-         << "\n  Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+         << "\n  Message: " << StrX(e.getMessage()) << std::endl;
 }
 
 void PParseHandlers::warning(const SAXParseException& e)
 {
-    XERCES_STD_QUALIFIER cerr << "\nWarning at file " << StrX(e.getSystemId())
+    std::cerr << "\nWarning at file " << StrX(e.getSystemId())
 		 << ", line " << e.getLineNumber()
 		 << ", char " << e.getColumnNumber()
-         << "\n  Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+         << "\n  Message: " << StrX(e.getMessage()) << std::endl;
 }
 
diff --git a/samples/src/PParse/PParseHandlers.hpp b/samples/src/PParse/PParseHandlers.hpp
index 5698466..5869a37 100644
--- a/samples/src/PParse/PParseHandlers.hpp
+++ b/samples/src/PParse/PParseHandlers.hpp
@@ -22,7 +22,7 @@
 
 #include    <xercesc/sax/HandlerBase.hpp>
 
-XERCES_CPP_NAMESPACE_USE
+using namespace XERCES_CPP_NAMESPACE;
 
 class PParseHandlers : public HandlerBase
 {
diff --git a/samples/src/PSVIWriter/PSVIWriter.cpp b/samples/src/PSVIWriter/PSVIWriter.cpp
index d7de612..0da1cef 100644
--- a/samples/src/PSVIWriter/PSVIWriter.cpp
+++ b/samples/src/PSVIWriter/PSVIWriter.cpp
@@ -34,17 +34,15 @@
 #include <xercesc/sax2/XMLReaderFactory.hpp>
 #include <xercesc/util/OutOfMemoryException.hpp>
 
-#if defined(XERCES_NEW_IOSTREAMS)
 #include <fstream>
-#else
-#include <fstream.h>
-#endif
+
+
 // ---------------------------------------------------------------------------
 //  Local helper methods
 // ---------------------------------------------------------------------------
 void usage()
 {
-	XERCES_STD_QUALIFIER cout << "\nUsage:\n"
+	std::cout << "\nUsage:\n"
 			"    PSVIWriter [options] <XML file | List file>\n\n"
 			"This program invokes the SAX2XMLReaderImpl, and then exposes the\n"
 			"underlying PSVI of each parsed XML file, using SAX2 API.\n\n"
@@ -58,7 +56,7 @@
             "                Default to off (Input file is an XML file).\n"
 			"    -?          Show this help.\n\n"
 			"  * = Default if not provided explicitly.\n"
-		<< XERCES_STD_QUALIFIER endl;
+		<< std::endl;
 }
 
 
@@ -142,15 +140,15 @@
                 unRepFlags = XMLFormatter::UnRep_CharRef;
             else
             {
-                XERCES_STD_QUALIFIER cerr << "Unknown -u= value: " << parm << XERCES_STD_QUALIFIER endl;
+                std::cerr << "Unknown -u= value: " << parm << std::endl;
                 XMLPlatformUtils::Terminate();
                 return 2;
             }
         }
         else
         {
-            XERCES_STD_QUALIFIER cerr << "Unknown option '" << argV[argInd]
-                << "', ignoring it\n" << XERCES_STD_QUALIFIER endl;
+            std::cerr << "Unknown option '" << argV[argInd]
+                << "', ignoring it\n" << std::endl;
         }
     }
 
@@ -169,8 +167,8 @@
     {
         XMLPlatformUtils::Initialize();
     } catch (const XMLException& toCatch) {
-        XERCES_STD_QUALIFIER cerr << "Error during initialization! Message:\n"
-            << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl;
+        std::cerr << "Error during initialization! Message:\n"
+            << StrX(toCatch.getMessage()) << std::endl;
         return 1;
     }
 
@@ -225,14 +223,14 @@
     parser->setErrorHandler(handler);
 
     bool more = true;
-    XERCES_STD_QUALIFIER ifstream fin;
+    std::ifstream fin;
 
     // the input is a list file
     if (doList) //REVISIT
         fin.open(argV[argInd]);
 
     if (fin.fail()) {
-        XERCES_STD_QUALIFIER cerr <<"Cannot open the list file: " << argV[argInd] << XERCES_STD_QUALIFIER endl;
+        std::cerr <<"Cannot open the list file: " << argV[argInd] << std::endl;
         return 2;
     }
 
@@ -250,7 +248,7 @@
                 else {
                     xmlFile =fURI;
                     XMLString::trim((char*)xmlFile);
-                    XERCES_STD_QUALIFIER cerr << "==Parsing== \"" << xmlFile << "\"" << XERCES_STD_QUALIFIER endl;
+                    std::cerr << "==Parsing== \"" << xmlFile << "\"" << std::endl;
                 }
 
 				if (psviOut==0) {
@@ -293,22 +291,22 @@
         }
         catch (const OutOfMemoryException&)
         {
-            XERCES_STD_QUALIFIER cerr << "OutOfMemoryException" << XERCES_STD_QUALIFIER endl;
+            std::cerr << "OutOfMemoryException" << std::endl;
             errorOccurred = true;
             continue;
         }
         catch (const XMLException& e)
         {
-            XERCES_STD_QUALIFIER cerr << "\nError during parsing: '" << xmlFile << "'\n"
+            std::cerr << "\nError during parsing: '" << xmlFile << "'\n"
                 << "Exception message is:  \n"
-                << StrX(e.getMessage()) << "\n" << XERCES_STD_QUALIFIER endl;
+                << StrX(e.getMessage()) << "\n" << std::endl;
             errorOccurred = true;
             continue;
         }
 
         catch (...)
         {
-            XERCES_STD_QUALIFIER cerr << "\nUnexpected exception during parsing: '" << xmlFile << "'\n" << XERCES_STD_QUALIFIER endl;;
+            std::cerr << "\nUnexpected exception during parsing: '" << xmlFile << "'\n" << std::endl;;
             errorOccurred = true;
             continue;
         }
diff --git a/samples/src/PSVIWriter/PSVIWriter.hpp b/samples/src/PSVIWriter/PSVIWriter.hpp
index 70bb9c2..5c802d4 100644
--- a/samples/src/PSVIWriter/PSVIWriter.hpp
+++ b/samples/src/PSVIWriter/PSVIWriter.hpp
@@ -24,17 +24,13 @@
 // ---------------------------------------------------------------------------
 
 #include "PSVIWriterHandlers.hpp"
-#include <stdlib.h>
-#include <string.h>
+#include <cstdlib>
+#include <cstring>
 #include <xercesc/util/PlatformUtils.hpp>
 #include <xercesc/util/XMLUni.hpp>
 #include <xercesc/sax2/XMLReaderFactory.hpp>
 #include <xercesc/sax2/SAX2XMLReader.hpp>
-#if defined(XERCES_NEW_IOSTREAMS)
 #include <iostream>
-#else
-#include <iostream.h>
-#endif
 
 
 // ---------------------------------------------------------------------------
@@ -76,7 +72,7 @@
     char*   fLocalForm;
 };
 
-inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump)
+inline std::ostream& operator<<(std::ostream& target, const StrX& toDump)
 {
     target << toDump.localForm();
     return target;
diff --git a/samples/src/PSVIWriter/PSVIWriterHandlers.cpp b/samples/src/PSVIWriter/PSVIWriterHandlers.cpp
index 29965a5..a950674 100644
--- a/samples/src/PSVIWriter/PSVIWriterHandlers.cpp
+++ b/samples/src/PSVIWriter/PSVIWriterHandlers.cpp
@@ -34,10 +34,10 @@
 #include <xercesc/dom/DOMImplementation.hpp>
 #include <xercesc/framework/psvi/XSValue.hpp>
 
-#include <string.h>
-#include <stdio.h>
+#include <cstring>
+#include <cstdio>
 
-XERCES_CPP_NAMESPACE_USE
+using namespace XERCES_CPP_NAMESPACE;
 
 static const XMLCh fgSpace[] = { chSpace, chNull };
 static const XMLCh fgChar[] = { chSpace, chLatin_C, chLatin_h, chLatin_a, chLatin_r, chNull }; // char
@@ -876,7 +876,7 @@
         annot = annotation;
 
         while (annot) {
-		    XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* document = DOMImplementationRegistry::getDOMImplementation(XMLUni::fgZeroLenString)->
+		    xercesc::DOMDocument* document = DOMImplementationRegistry::getDOMImplementation(XMLUni::fgZeroLenString)->
                 createDocument();
 		    annot->writeAnnotation((DOMNode*)document, XSAnnotation::W3C_DOM_DOCUMENT);
 		    DOMElement* elem = document->getDocumentElement();
diff --git a/samples/src/PSVIWriter/PSVIWriterHandlers.hpp b/samples/src/PSVIWriter/PSVIWriterHandlers.hpp
index f3cdd1b..8bdf713 100644
--- a/samples/src/PSVIWriter/PSVIWriterHandlers.hpp
+++ b/samples/src/PSVIWriter/PSVIWriterHandlers.hpp
@@ -56,10 +56,10 @@
 #include <xercesc/util/ValueVectorOf.hpp>
 #include <xercesc/util/XMLEntityResolver.hpp>
 #include <xercesc/util/XMLResourceIdentifier.hpp>
-#include <stdlib.h>
-#include <string.h>
+#include <cstdlib>
+#include <cstring>
 
-XERCES_CPP_NAMESPACE_USE
+using namespace XERCES_CPP_NAMESPACE;
 
 
 class AttrInfo {
diff --git a/samples/src/Redirect/Redirect.cpp b/samples/src/Redirect/Redirect.cpp
index bdc96ba..85273d9 100644
--- a/samples/src/Redirect/Redirect.cpp
+++ b/samples/src/Redirect/Redirect.cpp
@@ -51,14 +51,14 @@
 // ---------------------------------------------------------------------------
 void usage()
 {
-    XERCES_STD_QUALIFIER cout << "\nUsage:\n"
+    std::cout << "\nUsage:\n"
             "    Redirect <XML file>\n\n"
             "This program installs an entity resolver, traps the call to\n"
             "the external DTD file and redirects it to another application\n"
             "specific file which contains the actual dtd.\n\n"
             "The program then counts and reports the number of elements and\n"
             "attributes in the given XML file.\n"
-         << XERCES_STD_QUALIFIER endl;
+         << std::endl;
 }
 
 
@@ -74,8 +74,8 @@
     }
     catch (const XMLException& toCatch)
     {
-        XERCES_STD_QUALIFIER cerr << "Error during initialization! Message:\n"
-             << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl;
+        std::cerr << "Error during initialization! Message:\n"
+             << StrX(toCatch.getMessage()) << std::endl;
         return 1;
     }
 
@@ -124,14 +124,14 @@
     }
     catch (const OutOfMemoryException&)
     {
-        XERCES_STD_QUALIFIER cerr << "OutOfMemoryException" << XERCES_STD_QUALIFIER endl;
+        std::cerr << "OutOfMemoryException" << std::endl;
         errorCode = 5;
     }
     catch (const XMLException& e)
     {
-        XERCES_STD_QUALIFIER cerr << "\nError during parsing: '" << xmlFile << "'\n"
+        std::cerr << "\nError during parsing: '" << xmlFile << "'\n"
                 << "Exception message is:  \n"
-                << StrX(e.getMessage()) << "\n" << XERCES_STD_QUALIFIER endl;
+                << StrX(e.getMessage()) << "\n" << std::endl;
         errorCode = 4;
     }
 
@@ -142,11 +142,11 @@
 
     // Print out the stats that we collected and time taken.
     if (!errorCount) {
-        XERCES_STD_QUALIFIER cout << xmlFile << ": " << duration << " ms ("
+        std::cout << xmlFile << ": " << duration << " ms ("
              << handler.getElementCount() << " elems, "
              << handler.getAttrCount() << " attrs, "
              << handler.getSpaceCount() << " spaces, "
-             << handler.getCharacterCount() << " chars)" << XERCES_STD_QUALIFIER endl;
+             << handler.getCharacterCount() << " chars)" << std::endl;
     }
 
     //
diff --git a/samples/src/Redirect/Redirect.hpp b/samples/src/Redirect/Redirect.hpp
index ab7ba64..a2b44b2 100644
--- a/samples/src/Redirect/Redirect.hpp
+++ b/samples/src/Redirect/Redirect.hpp
@@ -23,13 +23,9 @@
 // ---------------------------------------------------------------------------
 //  Includes for all the program files to see
 // ---------------------------------------------------------------------------
-#include <stdlib.h>
-#include <string.h>
-#if defined(XERCES_NEW_IOSTREAMS)
+#include <cstdlib>
+#include <cstring>
 #include <iostream>
-#else
-#include <iostream.h>
-#endif
 #include <xercesc/util/PlatformUtils.hpp>
 #include "RedirectHandlers.hpp"
 
@@ -74,7 +70,7 @@
     char*   fLocalForm;
 };
 
-inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump)
+inline std::ostream& operator<<(std::ostream& target, const StrX& toDump)
 {
     target << toDump.localForm();
     return target;
diff --git a/samples/src/Redirect/RedirectHandlers.cpp b/samples/src/Redirect/RedirectHandlers.cpp
index 86e76a6..8f06c53 100644
--- a/samples/src/Redirect/RedirectHandlers.cpp
+++ b/samples/src/Redirect/RedirectHandlers.cpp
@@ -31,7 +31,7 @@
 #include <xercesc/sax/SAXException.hpp>
 #include <xercesc/framework/LocalFileInputSource.hpp>
 #include "Redirect.hpp"
-#include <string.h>
+#include <cstring>
 
 
 // ---------------------------------------------------------------------------
@@ -111,26 +111,26 @@
 // ---------------------------------------------------------------------------
 void RedirectHandlers::error(const SAXParseException& e)
 {
-    XERCES_STD_QUALIFIER cerr << "\nError at (file " << StrX(e.getSystemId())
+    std::cerr << "\nError at (file " << StrX(e.getSystemId())
 		 << ", line " << e.getLineNumber()
 		 << ", char " << e.getColumnNumber()
-         << "): " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+         << "): " << StrX(e.getMessage()) << std::endl;
 }
 
 void RedirectHandlers::fatalError(const SAXParseException& e)
 {
-    XERCES_STD_QUALIFIER cerr << "\nFatal Error at (file " << StrX(e.getSystemId())
+    std::cerr << "\nFatal Error at (file " << StrX(e.getSystemId())
 		 << ", line " << e.getLineNumber()
 		 << ", char " << e.getColumnNumber()
-         << "): " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+         << "): " << StrX(e.getMessage()) << std::endl;
 }
 
 void RedirectHandlers::warning(const SAXParseException& e)
 {
-    XERCES_STD_QUALIFIER cerr << "\nWarning at (file " << StrX(e.getSystemId())
+    std::cerr << "\nWarning at (file " << StrX(e.getSystemId())
 		 << ", line " << e.getLineNumber()
 		 << ", char " << e.getColumnNumber()
-         << "): " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+         << "): " << StrX(e.getMessage()) << std::endl;
 }
 
 
diff --git a/samples/src/Redirect/RedirectHandlers.hpp b/samples/src/Redirect/RedirectHandlers.hpp
index cedbb16..2210766 100644
--- a/samples/src/Redirect/RedirectHandlers.hpp
+++ b/samples/src/Redirect/RedirectHandlers.hpp
@@ -26,11 +26,11 @@
 #include <xercesc/sax/HandlerBase.hpp>
 #include <xercesc/util/XMLEntityResolver.hpp>
 
-XERCES_CPP_NAMESPACE_USE
+using namespace XERCES_CPP_NAMESPACE;
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 class AttributeList;
-XERCES_CPP_NAMESPACE_END
+}
 
 
 class RedirectHandlers : public HandlerBase, public XMLEntityResolver
diff --git a/samples/src/SAX2Count/SAX2Count.cpp b/samples/src/SAX2Count/SAX2Count.cpp
index 93714bf..168cb59 100644
--- a/samples/src/SAX2Count/SAX2Count.cpp
+++ b/samples/src/SAX2Count/SAX2Count.cpp
@@ -27,11 +27,7 @@
 #include <xercesc/util/PlatformUtils.hpp>
 #include <xercesc/sax2/SAX2XMLReader.hpp>
 #include <xercesc/sax2/XMLReaderFactory.hpp>
-#if defined(XERCES_NEW_IOSTREAMS)
 #include <fstream>
-#else
-#include <fstream.h>
-#endif
 #include <xercesc/util/OutOfMemoryException.hpp>
 
 // ---------------------------------------------------------------------------
@@ -39,7 +35,7 @@
 // ---------------------------------------------------------------------------
 void usage()
 {
-    XERCES_STD_QUALIFIER cout << "\nUsage:\n"
+    std::cout << "\nUsage:\n"
             "    SAX2Count [options] <XML file | List file>\n\n"
             "This program invokes the SAX2XMLReader, and then prints the\n"
             "number of elements, attributes, spaces and characters found\n"
@@ -59,7 +55,7 @@
             "    -locale=ll_CC specify the locale, default: en_US.\n"
             "    -?          Show this help.\n\n"
             "  * = Default if not provided explicitly.\n"
-         << XERCES_STD_QUALIFIER endl;
+         << std::endl;
 }
 
 
@@ -115,7 +111,7 @@
                 valScheme = SAX2XMLReader::Val_Always;
             else
             {
-                XERCES_STD_QUALIFIER cerr << "Unknown -v= value: " << parm << XERCES_STD_QUALIFIER endl;
+                std::cerr << "Unknown -v= value: " << parm << std::endl;
                 return 2;
             }
         }
@@ -164,8 +160,8 @@
         }
         else
         {
-            XERCES_STD_QUALIFIER cerr << "Unknown option '" << argV[argInd]
-                << "', ignoring it\n" << XERCES_STD_QUALIFIER endl;
+            std::cerr << "Unknown option '" << argV[argInd]
+                << "', ignoring it\n" << std::endl;
         }
     }
 
@@ -199,8 +195,8 @@
 
     catch (const XMLException& toCatch)
     {
-        XERCES_STD_QUALIFIER cerr << "Error during initialization! Message:\n"
-            << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl;
+        std::cerr << "Error during initialization! Message:\n"
+            << StrX(toCatch.getMessage()) << std::endl;
         return 1;
     }
 
@@ -246,14 +242,14 @@
     unsigned long duration;
 
     bool more = true;
-    XERCES_STD_QUALIFIER ifstream fin;
+    std::ifstream fin;
 
     // the input is a list file
     if (doList)
         fin.open(argV[argInd]);
 
     if (fin.fail()) {
-        XERCES_STD_QUALIFIER cerr <<"Cannot open the list file: " << argV[argInd] << XERCES_STD_QUALIFIER endl;
+        std::cerr <<"Cannot open the list file: " << argV[argInd] << std::endl;
         return 2;
     }
 
@@ -270,7 +266,7 @@
                     continue;
                 else {
                     xmlFile = fURI;
-                    XERCES_STD_QUALIFIER cerr << "==Parsing== " << xmlFile << XERCES_STD_QUALIFIER endl;
+                    std::cerr << "==Parsing== " << xmlFile << std::endl;
                 }
             }
             else
@@ -293,22 +289,22 @@
         }
         catch (const OutOfMemoryException&)
         {
-            XERCES_STD_QUALIFIER cerr << "OutOfMemoryException" << XERCES_STD_QUALIFIER endl;
+            std::cerr << "OutOfMemoryException" << std::endl;
             errorOccurred = true;
             continue;
         }
         catch (const XMLException& e)
         {
-            XERCES_STD_QUALIFIER cerr << "\nError during parsing: '" << xmlFile << "'\n"
+            std::cerr << "\nError during parsing: '" << xmlFile << "'\n"
                 << "Exception message is:  \n"
-                << StrX(e.getMessage()) << "\n" << XERCES_STD_QUALIFIER endl;
+                << StrX(e.getMessage()) << "\n" << std::endl;
             errorOccurred = true;
             continue;
         }
 
         catch (...)
         {
-            XERCES_STD_QUALIFIER cerr << "\nUnexpected exception during parsing: '" << xmlFile << "'\n";
+            std::cerr << "\nUnexpected exception during parsing: '" << xmlFile << "'\n";
             errorOccurred = true;
             continue;
         }
@@ -317,11 +313,11 @@
         // Print out the stats that we collected and time taken
         if (!handler.getSawErrors())
         {
-            XERCES_STD_QUALIFIER cout << xmlFile << ": " << duration << " ms ("
+            std::cout << xmlFile << ": " << duration << " ms ("
                 << handler.getElementCount() << " elems, "
                 << handler.getAttrCount() << " attrs, "
                 << handler.getSpaceCount() << " spaces, "
-                << handler.getCharacterCount() << " chars)" << XERCES_STD_QUALIFIER endl;
+                << handler.getCharacterCount() << " chars)" << std::endl;
         }
         else
             errorOccurred = true;
diff --git a/samples/src/SAX2Count/SAX2Count.hpp b/samples/src/SAX2Count/SAX2Count.hpp
index b2cff19..5d6929c 100644
--- a/samples/src/SAX2Count/SAX2Count.hpp
+++ b/samples/src/SAX2Count/SAX2Count.hpp
@@ -25,13 +25,9 @@
 // ---------------------------------------------------------------------------
 
 #include <xercesc/util/PlatformUtils.hpp>
-#include <stdlib.h>
-#include <string.h>
-#if defined(XERCES_NEW_IOSTREAMS)
+#include <cstdlib>
+#include <cstring>
 #include <iostream>
-#else
-#include <iostream.h>
-#endif
 #include "SAX2CountHandlers.hpp"
 #include <xercesc/sax2/XMLReaderFactory.hpp>
 #include <xercesc/sax2/SAX2XMLReader.hpp>
@@ -76,7 +72,7 @@
     char*   fLocalForm;
 };
 
-inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump)
+inline std::ostream& operator<<(std::ostream& target, const StrX& toDump)
 {
     target << toDump.localForm();
     return target;
diff --git a/samples/src/SAX2Count/SAX2CountHandlers.cpp b/samples/src/SAX2Count/SAX2CountHandlers.cpp
index ac150b0..2c5da21 100644
--- a/samples/src/SAX2Count/SAX2CountHandlers.cpp
+++ b/samples/src/SAX2Count/SAX2CountHandlers.cpp
@@ -85,27 +85,27 @@
 void SAX2CountHandlers::error(const SAXParseException& e)
 {
     fSawErrors = true;
-    XERCES_STD_QUALIFIER cerr << "\nError at file " << StrX(e.getSystemId())
+    std::cerr << "\nError at file " << StrX(e.getSystemId())
 		 << ", line " << e.getLineNumber()
 		 << ", char " << e.getColumnNumber()
-         << "\n  Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+         << "\n  Message: " << StrX(e.getMessage()) << std::endl;
 }
 
 void SAX2CountHandlers::fatalError(const SAXParseException& e)
 {
     fSawErrors = true;
-    XERCES_STD_QUALIFIER cerr << "\nFatal Error at file " << StrX(e.getSystemId())
+    std::cerr << "\nFatal Error at file " << StrX(e.getSystemId())
 		 << ", line " << e.getLineNumber()
 		 << ", char " << e.getColumnNumber()
-         << "\n  Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+         << "\n  Message: " << StrX(e.getMessage()) << std::endl;
 }
 
 void SAX2CountHandlers::warning(const SAXParseException& e)
 {
-    XERCES_STD_QUALIFIER cerr << "\nWarning at file " << StrX(e.getSystemId())
+    std::cerr << "\nWarning at file " << StrX(e.getSystemId())
 		 << ", line " << e.getLineNumber()
 		 << ", char " << e.getColumnNumber()
-         << "\n  Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+         << "\n  Message: " << StrX(e.getMessage()) << std::endl;
 }
 
 void SAX2CountHandlers::resetErrors()
diff --git a/samples/src/SAX2Count/SAX2CountHandlers.hpp b/samples/src/SAX2Count/SAX2CountHandlers.hpp
index f48ceec..ba336b5 100644
--- a/samples/src/SAX2Count/SAX2CountHandlers.hpp
+++ b/samples/src/SAX2Count/SAX2CountHandlers.hpp
@@ -26,7 +26,7 @@
 #include <xercesc/sax2/Attributes.hpp>
 #include <xercesc/sax2/DefaultHandler.hpp>
 
-XERCES_CPP_NAMESPACE_USE
+using namespace XERCES_CPP_NAMESPACE;
 
 class SAX2CountHandlers : public DefaultHandler
 {
diff --git a/samples/src/SAX2Print/SAX2FilterHandlers.hpp b/samples/src/SAX2Print/SAX2FilterHandlers.hpp
index 3e5789a..2a2654d 100644
--- a/samples/src/SAX2Print/SAX2FilterHandlers.hpp
+++ b/samples/src/SAX2Print/SAX2FilterHandlers.hpp
@@ -21,7 +21,7 @@
 
 #include    <xercesc/parsers/SAX2XMLFilterImpl.hpp>
 
-XERCES_CPP_NAMESPACE_USE
+using namespace XERCES_CPP_NAMESPACE;
 
 class SAX2SortAttributesFilter : public SAX2XMLFilterImpl
 {
diff --git a/samples/src/SAX2Print/SAX2Print.cpp b/samples/src/SAX2Print/SAX2Print.cpp
index a0a8ce5..8ea0608 100644
--- a/samples/src/SAX2Print/SAX2Print.cpp
+++ b/samples/src/SAX2Print/SAX2Print.cpp
@@ -66,7 +66,7 @@
 // ---------------------------------------------------------------------------
 static void usage()
 {
-    XERCES_STD_QUALIFIER cout << "\nUsage:\n"
+    std::cout << "\nUsage:\n"
             "    SAX2Print [options] <XML file>\n\n"
             "This program invokes the SAX2XMLReader, and then prints the\n"
             "data returned by the various SAX2 handlers for the specified\n"
@@ -88,7 +88,7 @@
              "The parser has intrinsic support for the following encodings:\n"
              "    UTF-8, US-ASCII, ISO8859-1, UTF-16[BL]E, UCS-4[BL]E,\n"
              "    WINDOWS-1252, IBM1140, IBM037, IBM1047.\n"
-         <<  XERCES_STD_QUALIFIER endl;
+         <<  std::endl;
 }
 
 
@@ -106,8 +106,8 @@
 
     catch (const XMLException& toCatch)
     {
-         XERCES_STD_QUALIFIER cerr << "Error during initialization! :\n"
-              << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl;
+         std::cerr << "Error during initialization! :\n"
+              << StrX(toCatch.getMessage()) << std::endl;
          return 1;
     }
 
@@ -146,7 +146,7 @@
                 valScheme = SAX2XMLReader::Val_Always;
             else
             {
-                XERCES_STD_QUALIFIER cerr << "Unknown -v= value: " << parm << XERCES_STD_QUALIFIER endl;
+                std::cerr << "Unknown -v= value: " << parm << std::endl;
                 XMLPlatformUtils::Terminate();
                 return 2;
             }
@@ -175,7 +175,7 @@
                 unRepFlags = XMLFormatter::UnRep_CharRef;
             else
             {
-                XERCES_STD_QUALIFIER cerr << "Unknown -u= value: " << parm << XERCES_STD_QUALIFIER endl;
+                std::cerr << "Unknown -u= value: " << parm << std::endl;
                 XMLPlatformUtils::Terminate();
                 return 2;
             }
@@ -206,8 +206,8 @@
         }
          else
         {
-            XERCES_STD_QUALIFIER cerr << "Unknown option '" << argV[parmInd]
-                 << "', ignoring it\n" << XERCES_STD_QUALIFIER endl;
+            std::cerr << "Unknown option '" << argV[parmInd]
+                 << "', ignoring it\n" << std::endl;
         }
     }
 
@@ -283,14 +283,14 @@
     }
     catch (const OutOfMemoryException&)
     {
-        XERCES_STD_QUALIFIER cerr << "OutOfMemoryException" << XERCES_STD_QUALIFIER endl;
+        std::cerr << "OutOfMemoryException" << std::endl;
         errorCode = 5;
     }
     catch (const XMLException& toCatch)
     {
-        XERCES_STD_QUALIFIER cerr << "\nAn error occurred\n  Error: "
+        std::cerr << "\nAn error occurred\n  Error: "
              << StrX(toCatch.getMessage())
-             << "\n" << XERCES_STD_QUALIFIER endl;
+             << "\n" << std::endl;
         errorCode = 4;
     }
 
diff --git a/samples/src/SAX2Print/SAX2Print.hpp b/samples/src/SAX2Print/SAX2Print.hpp
index 65e4845..53e714a 100644
--- a/samples/src/SAX2Print/SAX2Print.hpp
+++ b/samples/src/SAX2Print/SAX2Print.hpp
@@ -22,13 +22,9 @@
 // ---------------------------------------------------------------------------
 //  Includes for all the program files to see
 // ---------------------------------------------------------------------------
-#include <string.h>
-#if defined(XERCES_NEW_IOSTREAMS)
+#include <cstring>
 #include <iostream>
-#else
-#include <iostream.h>
-#endif
-#include <stdlib.h>
+#include <cstdlib>
 #include "SAX2PrintHandlers.hpp"
 
 
@@ -71,7 +67,7 @@
     char*   fLocalForm;
 };
 
-inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump)
+inline std::ostream& operator<<(std::ostream& target, const StrX& toDump)
 {
     target << toDump.localForm();
     return target;
diff --git a/samples/src/SAX2Print/SAX2PrintHandlers.cpp b/samples/src/SAX2Print/SAX2PrintHandlers.cpp
index 8af8e32..2291bcf 100644
--- a/samples/src/SAX2Print/SAX2PrintHandlers.cpp
+++ b/samples/src/SAX2Print/SAX2PrintHandlers.cpp
@@ -105,8 +105,8 @@
     // Without the cast, it was printing the pointer value in hex.
     // Quite annoying, considering every other platform printed
     // the string with the explicit cast to char* below.
-    XERCES_STD_QUALIFIER cout.write((char *) toWrite, (int) count);
-	XERCES_STD_QUALIFIER cout.flush();
+    std::cout.write((char *) toWrite, (int) count);
+	std::cout.flush();
 }
 
 
@@ -115,26 +115,26 @@
 // ---------------------------------------------------------------------------
 void SAX2PrintHandlers::error(const SAXParseException& e)
 {
-    XERCES_STD_QUALIFIER cerr << "\nError at file " << StrX(e.getSystemId())
+    std::cerr << "\nError at file " << StrX(e.getSystemId())
 		 << ", line " << e.getLineNumber()
 		 << ", char " << e.getColumnNumber()
-         << "\n  Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+         << "\n  Message: " << StrX(e.getMessage()) << std::endl;
 }
 
 void SAX2PrintHandlers::fatalError(const SAXParseException& e)
 {
-    XERCES_STD_QUALIFIER cerr << "\nFatal Error at file " << StrX(e.getSystemId())
+    std::cerr << "\nFatal Error at file " << StrX(e.getSystemId())
 		 << ", line " << e.getLineNumber()
 		 << ", char " << e.getColumnNumber()
-         << "\n  Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+         << "\n  Message: " << StrX(e.getMessage()) << std::endl;
 }
 
 void SAX2PrintHandlers::warning(const SAXParseException& e)
 {
-    XERCES_STD_QUALIFIER cerr << "\nWarning at file " << StrX(e.getSystemId())
+    std::cerr << "\nWarning at file " << StrX(e.getSystemId())
 		 << ", line " << e.getLineNumber()
 		 << ", char " << e.getColumnNumber()
-         << "\n  Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+         << "\n  Message: " << StrX(e.getMessage()) << std::endl;
 }
 
 
diff --git a/samples/src/SAX2Print/SAX2PrintHandlers.hpp b/samples/src/SAX2Print/SAX2PrintHandlers.hpp
index 5a199b7..68615ca 100644
--- a/samples/src/SAX2Print/SAX2PrintHandlers.hpp
+++ b/samples/src/SAX2Print/SAX2PrintHandlers.hpp
@@ -22,7 +22,7 @@
 #include    <xercesc/sax2/DefaultHandler.hpp>
 #include    <xercesc/framework/XMLFormatter.hpp>
 
-XERCES_CPP_NAMESPACE_USE
+using namespace XERCES_CPP_NAMESPACE;
 
 class SAX2PrintHandlers : public DefaultHandler, private XMLFormatTarget
 {
diff --git a/samples/src/SAXCount/SAXCount.cpp b/samples/src/SAXCount/SAXCount.cpp
index 331d09c..1549e4e 100644
--- a/samples/src/SAXCount/SAXCount.cpp
+++ b/samples/src/SAXCount/SAXCount.cpp
@@ -24,11 +24,7 @@
 //  Includes
 // ---------------------------------------------------------------------------
 #include "SAXCount.hpp"
-#if defined(XERCES_NEW_IOSTREAMS)
 #include <fstream>
-#else
-#include <fstream.h>
-#endif
 #include <xercesc/util/OutOfMemoryException.hpp>
 
 // ---------------------------------------------------------------------------
@@ -36,7 +32,7 @@
 // ---------------------------------------------------------------------------
 void usage()
 {
-    XERCES_STD_QUALIFIER cout << "\nUsage:\n"
+    std::cout << "\nUsage:\n"
             "    SAXCount [options] <XML file | List file>\n\n"
             "This program invokes the SAX Parser, and then prints the\n"
             "number of elements, attributes, spaces and characters found\n"
@@ -51,7 +47,7 @@
             "    -locale=ll_CC specify the locale, default: en_US.\n"
 		    "    -?          Show this help.\n\n"
             "  * = Default if not provided explicitly.\n"
-         << XERCES_STD_QUALIFIER endl;
+         << std::endl;
 }
 
 
@@ -105,7 +101,7 @@
                 valScheme = SAXParser::Val_Always;
             else
             {
-                XERCES_STD_QUALIFIER cerr << "Unknown -v= value: " << parm << XERCES_STD_QUALIFIER endl;
+                std::cerr << "Unknown -v= value: " << parm << std::endl;
                 return 2;
             }
         }
@@ -144,8 +140,8 @@
         }
         else
         {
-            XERCES_STD_QUALIFIER cerr << "Unknown option '" << argV[argInd]
-                << "', ignoring it\n" << XERCES_STD_QUALIFIER endl;
+            std::cerr << "Unknown option '" << argV[argInd]
+                << "', ignoring it\n" << std::endl;
         }
     }
 
@@ -179,8 +175,8 @@
 
     catch (const XMLException& toCatch)
     {
-        XERCES_STD_QUALIFIER cerr << "Error during initialization! Message:\n"
-            << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl;
+        std::cerr << "Error during initialization! Message:\n"
+            << StrX(toCatch.getMessage()) << std::endl;
         return 1;
     }
 
@@ -211,14 +207,14 @@
     //
     unsigned long duration;
 
-    XERCES_STD_QUALIFIER ifstream fin;
+    std::ifstream fin;
 
     // the input is a list file
     if (doList)
         fin.open(argV[argInd]);
 
     if (fin.fail()) {
-        XERCES_STD_QUALIFIER cerr <<"Cannot open the list file: " << argV[argInd] << XERCES_STD_QUALIFIER endl;
+        std::cerr <<"Cannot open the list file: " << argV[argInd] << std::endl;
         return 2;
     }
 
@@ -235,7 +231,7 @@
                     continue;
                 else {
                     xmlFile = fURI;
-                    XERCES_STD_QUALIFIER cerr << "==Parsing== " << xmlFile << XERCES_STD_QUALIFIER endl;
+                    std::cerr << "==Parsing== " << xmlFile << std::endl;
                 }
             }
             else
@@ -263,22 +259,22 @@
         }
         catch (const OutOfMemoryException&)
         {
-            XERCES_STD_QUALIFIER cerr << "OutOfMemoryException" << XERCES_STD_QUALIFIER endl;
+            std::cerr << "OutOfMemoryException" << std::endl;
             errorOccurred = true;
             continue;
         }
         catch (const XMLException& e)
         {
-            XERCES_STD_QUALIFIER cerr << "\nError during parsing: '" << xmlFile << "'\n"
+            std::cerr << "\nError during parsing: '" << xmlFile << "'\n"
                 << "Exception message is:  \n"
-                << StrX(e.getMessage()) << "\n" << XERCES_STD_QUALIFIER endl;
+                << StrX(e.getMessage()) << "\n" << std::endl;
             errorOccurred = true;
             continue;
         }
 
         catch (...)
         {
-            XERCES_STD_QUALIFIER cerr << "\nUnexpected exception during parsing: '" << xmlFile << "'\n";
+            std::cerr << "\nUnexpected exception during parsing: '" << xmlFile << "'\n";
             errorOccurred = true;
             continue;
         }
@@ -287,11 +283,11 @@
         // Print out the stats that we collected and time taken
         if (!handler.getSawErrors())
         {
-            XERCES_STD_QUALIFIER cout << xmlFile << ": " << duration << " ms ("
+            std::cout << xmlFile << ": " << duration << " ms ("
                 << handler.getElementCount() << " elems, "
                 << handler.getAttrCount() << " attrs, "
                 << handler.getSpaceCount() << " spaces, "
-                << handler.getCharacterCount() << " chars)" << XERCES_STD_QUALIFIER endl;
+                << handler.getCharacterCount() << " chars)" << std::endl;
         }
         else
             errorOccurred = true;
diff --git a/samples/src/SAXCount/SAXCount.hpp b/samples/src/SAXCount/SAXCount.hpp
index 51d1e4c..9169bb1 100644
--- a/samples/src/SAXCount/SAXCount.hpp
+++ b/samples/src/SAXCount/SAXCount.hpp
@@ -24,13 +24,9 @@
 //  Includes for all the program files to see
 // ---------------------------------------------------------------------------
 #include <xercesc/util/PlatformUtils.hpp>
-#include <stdlib.h>
-#include <string.h>
-#if defined(XERCES_NEW_IOSTREAMS)
+#include <cstdlib>
+#include <cstring>
 #include <iostream>
-#else
-#include <iostream.h>
-#endif
 #include <xercesc/parsers/SAXParser.hpp>
 #include "SAXCountHandlers.hpp"
 
@@ -74,7 +70,7 @@
     char*   fLocalForm;
 };
 
-inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump)
+inline std::ostream& operator<<(std::ostream& target, const StrX& toDump)
 {
     target << toDump.localForm();
     return target;
diff --git a/samples/src/SAXCount/SAXCountHandlers.cpp b/samples/src/SAXCount/SAXCountHandlers.cpp
index 725dcd1..3e17c54 100644
--- a/samples/src/SAXCount/SAXCountHandlers.cpp
+++ b/samples/src/SAXCount/SAXCountHandlers.cpp
@@ -84,27 +84,27 @@
 void SAXCountHandlers::error(const SAXParseException& e)
 {
     fSawErrors = true;
-    XERCES_STD_QUALIFIER cerr << "\nError at file " << StrX(e.getSystemId())
+    std::cerr << "\nError at file " << StrX(e.getSystemId())
 		 << ", line " << e.getLineNumber()
 		 << ", char " << e.getColumnNumber()
-         << "\n  Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+         << "\n  Message: " << StrX(e.getMessage()) << std::endl;
 }
 
 void SAXCountHandlers::fatalError(const SAXParseException& e)
 {
     fSawErrors = true;
-    XERCES_STD_QUALIFIER cerr << "\nFatal Error at file " << StrX(e.getSystemId())
+    std::cerr << "\nFatal Error at file " << StrX(e.getSystemId())
 		 << ", line " << e.getLineNumber()
 		 << ", char " << e.getColumnNumber()
-         << "\n  Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+         << "\n  Message: " << StrX(e.getMessage()) << std::endl;
 }
 
 void SAXCountHandlers::warning(const SAXParseException& e)
 {
-    XERCES_STD_QUALIFIER cerr << "\nWarning at file " << StrX(e.getSystemId())
+    std::cerr << "\nWarning at file " << StrX(e.getSystemId())
 		 << ", line " << e.getLineNumber()
 		 << ", char " << e.getColumnNumber()
-         << "\n  Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+         << "\n  Message: " << StrX(e.getMessage()) << std::endl;
 }
 
 void SAXCountHandlers::resetErrors()
diff --git a/samples/src/SAXCount/SAXCountHandlers.hpp b/samples/src/SAXCount/SAXCountHandlers.hpp
index 3f39b2e..3a9f805 100644
--- a/samples/src/SAXCount/SAXCountHandlers.hpp
+++ b/samples/src/SAXCount/SAXCountHandlers.hpp
@@ -25,11 +25,11 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/sax/HandlerBase.hpp>
 
-XERCES_CPP_NAMESPACE_USE
+using namespace XERCES_CPP_NAMESPACE;
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 class AttributeList;
-XERCES_CPP_NAMESPACE_END
+}
 
 class SAXCountHandlers : public HandlerBase
 {
diff --git a/samples/src/SAXPrint/SAXPrint.cpp b/samples/src/SAXPrint/SAXPrint.cpp
index 9362088..2486161 100644
--- a/samples/src/SAXPrint/SAXPrint.cpp
+++ b/samples/src/SAXPrint/SAXPrint.cpp
@@ -70,7 +70,7 @@
 // ---------------------------------------------------------------------------
 static void usage()
 {
-    XERCES_STD_QUALIFIER cout << "\nUsage:\n"
+    std::cout << "\nUsage:\n"
             "    SAXPrint [options] <XML file>\n\n"
             "This program invokes the SAX Parser, and then prints the\n"
             "data returned by the various SAX handlers for the specified\n"
@@ -87,7 +87,7 @@
              "The parser has intrinsic support for the following encodings:\n"
              "    UTF-8, US-ASCII, ISO8859-1, UTF-16[BL]E, UCS-4[BL]E,\n"
              "    WINDOWS-1252, IBM1140, IBM037, IBM1047.\n"
-         <<  XERCES_STD_QUALIFIER endl;
+         <<  std::endl;
 }
 
 
@@ -105,8 +105,8 @@
 
     catch (const XMLException& toCatch)
     {
-         XERCES_STD_QUALIFIER cerr << "Error during initialization! :\n"
-              << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl;
+         std::cerr << "Error during initialization! :\n"
+              << StrX(toCatch.getMessage()) << std::endl;
          return 1;
     }
 
@@ -145,7 +145,7 @@
                 valScheme = SAXParser::Val_Always;
             else
             {
-                XERCES_STD_QUALIFIER cerr << "Unknown -v= value: " << parm << XERCES_STD_QUALIFIER endl;
+                std::cerr << "Unknown -v= value: " << parm << std::endl;
                 XMLPlatformUtils::Terminate();
                 return 2;
             }
@@ -184,15 +184,15 @@
                 unRepFlags = XMLFormatter::UnRep_CharRef;
             else
             {
-                XERCES_STD_QUALIFIER cerr << "Unknown -u= value: " << parm << XERCES_STD_QUALIFIER endl;
+                std::cerr << "Unknown -u= value: " << parm << std::endl;
                 XMLPlatformUtils::Terminate();
                 return 2;
             }
         }
          else
         {
-            XERCES_STD_QUALIFIER cerr << "Unknown option '" << argV[parmInd]
-                 << "', ignoring it\n" << XERCES_STD_QUALIFIER endl;
+            std::cerr << "Unknown option '" << argV[parmInd]
+                 << "', ignoring it\n" << std::endl;
         }
     }
 
@@ -236,14 +236,14 @@
     }
     catch (const OutOfMemoryException&)
     {
-        XERCES_STD_QUALIFIER cerr << "OutOfMemoryException" << XERCES_STD_QUALIFIER endl;
+        std::cerr << "OutOfMemoryException" << std::endl;
         errorCode = 5;
     }
     catch (const XMLException& toCatch)
     {
-        XERCES_STD_QUALIFIER cerr << "\nAn error occurred\n  Error: "
+        std::cerr << "\nAn error occurred\n  Error: "
              << StrX(toCatch.getMessage())
-             << "\n" << XERCES_STD_QUALIFIER endl;
+             << "\n" << std::endl;
         errorCode = 4;
     }
     if(errorCode) {
diff --git a/samples/src/SAXPrint/SAXPrint.hpp b/samples/src/SAXPrint/SAXPrint.hpp
index 50a117c..10fda1c 100644
--- a/samples/src/SAXPrint/SAXPrint.hpp
+++ b/samples/src/SAXPrint/SAXPrint.hpp
@@ -22,13 +22,9 @@
 // ---------------------------------------------------------------------------
 //  Includes for all the program files to see
 // ---------------------------------------------------------------------------
-#include <string.h>
-#if defined(XERCES_NEW_IOSTREAMS)
+#include <cstring>
 #include <iostream>
-#else
-#include <iostream.h>
-#endif
-#include <stdlib.h>
+#include <cstdlib>
 #include "SAXPrintHandlers.hpp"
 
 
@@ -71,7 +67,7 @@
     char*   fLocalForm;
 };
 
-inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump)
+inline std::ostream& operator<<(std::ostream& target, const StrX& toDump)
 {
     target << toDump.localForm();
     return target;
diff --git a/samples/src/SAXPrint/SAXPrintHandlers.cpp b/samples/src/SAXPrint/SAXPrintHandlers.cpp
index ff6652f..e208179 100644
--- a/samples/src/SAXPrint/SAXPrintHandlers.cpp
+++ b/samples/src/SAXPrint/SAXPrintHandlers.cpp
@@ -103,8 +103,8 @@
     // Without the cast, it was printing the pointer value in hex.
     // Quite annoying, considering every other platform printed
     // the string with the explicit cast to char* below.
-    XERCES_STD_QUALIFIER cout.write((char *) toWrite, (int) count);
-	XERCES_STD_QUALIFIER cout.flush();
+    std::cout.write((char *) toWrite, (int) count);
+	std::cout.flush();
 }
 
 
@@ -113,26 +113,26 @@
 // ---------------------------------------------------------------------------
 void SAXPrintHandlers::error(const SAXParseException& e)
 {
-    XERCES_STD_QUALIFIER cerr << "\nError at file " << StrX(e.getSystemId())
+    std::cerr << "\nError at file " << StrX(e.getSystemId())
 		 << ", line " << e.getLineNumber()
 		 << ", char " << e.getColumnNumber()
-         << "\n  Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+         << "\n  Message: " << StrX(e.getMessage()) << std::endl;
 }
 
 void SAXPrintHandlers::fatalError(const SAXParseException& e)
 {
-    XERCES_STD_QUALIFIER cerr << "\nFatal Error at file " << StrX(e.getSystemId())
+    std::cerr << "\nFatal Error at file " << StrX(e.getSystemId())
 		 << ", line " << e.getLineNumber()
 		 << ", char " << e.getColumnNumber()
-         << "\n  Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+         << "\n  Message: " << StrX(e.getMessage()) << std::endl;
 }
 
 void SAXPrintHandlers::warning(const SAXParseException& e)
 {
-    XERCES_STD_QUALIFIER cerr << "\nWarning at file " << StrX(e.getSystemId())
+    std::cerr << "\nWarning at file " << StrX(e.getSystemId())
 		 << ", line " << e.getLineNumber()
 		 << ", char " << e.getColumnNumber()
-         << "\n  Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+         << "\n  Message: " << StrX(e.getMessage()) << std::endl;
 }
 
 
diff --git a/samples/src/SAXPrint/SAXPrintHandlers.hpp b/samples/src/SAXPrint/SAXPrintHandlers.hpp
index 7432186..ce9f251 100644
--- a/samples/src/SAXPrint/SAXPrintHandlers.hpp
+++ b/samples/src/SAXPrint/SAXPrintHandlers.hpp
@@ -23,7 +23,7 @@
 #include    <xercesc/sax/HandlerBase.hpp>
 #include    <xercesc/framework/XMLFormatter.hpp>
 
-XERCES_CPP_NAMESPACE_USE
+using namespace XERCES_CPP_NAMESPACE;
 
 class SAXPrintHandlers : public HandlerBase, private XMLFormatTarget
 {
diff --git a/samples/src/SCMPrint/SCMPrint.cpp b/samples/src/SCMPrint/SCMPrint.cpp
index 4e13e99..25b7d84 100644
--- a/samples/src/SCMPrint/SCMPrint.cpp
+++ b/samples/src/SCMPrint/SCMPrint.cpp
@@ -33,19 +33,14 @@
 #include <xercesc/framework/psvi/XSComplexTypeDefinition.hpp>
 #include <xercesc/framework/psvi/XSParticle.hpp>
 #include <xercesc/framework/psvi/XSModelGroup.hpp>
-#if defined(XERCES_NEW_IOSTREAMS)
 #include <iostream>
 #include <fstream>
-#else
-#include <iostream.h>
-#include <fstream.h>
-#endif
-#include <stdlib.h>
-#include <string.h>
+#include <cstdlib>
+#include <cstring>
 #include <xercesc/util/OutOfMemoryException.hpp>
 #include <xercesc/sax2/DefaultHandler.hpp>
 
-XERCES_CPP_NAMESPACE_USE
+using namespace XERCES_CPP_NAMESPACE;
 
 // ---------------------------------------------------------------------------
 //  Forward references
@@ -100,7 +95,7 @@
 char*   fLocalForm;
 };
 
-inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump)
+inline std::ostream& operator<<(std::ostream& target, const StrX& toDump)
 {
     target << toDump.localForm();
     return target;
@@ -145,27 +140,27 @@
 void SCMPrintHandler::error(const SAXParseException& e)
 {
     fSawErrors = true;
-    XERCES_STD_QUALIFIER cerr << "\nError at file " << StrX(e.getSystemId())
+    std::cerr << "\nError at file " << StrX(e.getSystemId())
 		 << ", line " << e.getLineNumber()
 		 << ", char " << e.getColumnNumber()
-         << "\n  Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+         << "\n  Message: " << StrX(e.getMessage()) << std::endl;
 }
 
 void SCMPrintHandler::fatalError(const SAXParseException& e)
 {
     fSawErrors = true;
-    XERCES_STD_QUALIFIER cerr << "\nFatal Error at file " << StrX(e.getSystemId())
+    std::cerr << "\nFatal Error at file " << StrX(e.getSystemId())
 		 << ", line " << e.getLineNumber()
 		 << ", char " << e.getColumnNumber()
-         << "\n  Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+         << "\n  Message: " << StrX(e.getMessage()) << std::endl;
 }
 
 void SCMPrintHandler::warning(const SAXParseException& e)
 {
-    XERCES_STD_QUALIFIER cerr << "\nWarning at file " << StrX(e.getSystemId())
+    std::cerr << "\nWarning at file " << StrX(e.getSystemId())
 		 << ", line " << e.getLineNumber()
 		 << ", char " << e.getColumnNumber()
-         << "\n  Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+         << "\n  Message: " << StrX(e.getMessage()) << std::endl;
 }
 
 void SCMPrintHandler::resetErrors()
@@ -178,7 +173,7 @@
 // ---------------------------------------------------------------------------
 static void usage()
 {
-    XERCES_STD_QUALIFIER cout << "\nUsage:\n"
+    std::cout << "\nUsage:\n"
     "    SCMPrint [options] <XSD file | List file>\n\n"
     "This program parses XML Schema file(s), to show how one can\n"
     "access the Schema Content Model information.\n\n"
@@ -187,7 +182,7 @@
     "    -l     Indicate the input file is a List File that has a list of XSD files.\n"
     "           Default to off (Input file is a XSD file).\n"
 	"    -?     Show this help.\n\n"
-    << XERCES_STD_QUALIFIER endl;
+    << std::endl;
 }
 
 // ---------------------------------------------------------------------------
@@ -212,8 +207,8 @@
 
     catch (const XMLException& toCatch)
     {
-        XERCES_STD_QUALIFIER cerr   << "Error during initialization! Message:\n"
-        << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl;
+        std::cerr   << "Error during initialization! Message:\n"
+        << StrX(toCatch.getMessage()) << std::endl;
         errorCode = 2;
     }
     if(errorCode) {
@@ -250,8 +245,8 @@
         }
         else
         {
-            XERCES_STD_QUALIFIER cerr << "Unknown option '" << argV[argInd]
-                << "', ignoring it\n" << XERCES_STD_QUALIFIER endl;
+            std::cerr << "Unknown option '" << argV[argInd]
+                << "', ignoring it\n" << std::endl;
         }
     }
 
@@ -286,14 +281,14 @@
 
         bool more = true;
         bool parsedOneSchemaOkay = false;
-        XERCES_STD_QUALIFIER ifstream fin;
+        std::ifstream fin;
 
         // the input is a list file
         if (doList)
             fin.open(argV[argInd]);
 
         if (fin.fail()) {
-            XERCES_STD_QUALIFIER cerr <<"Cannot open the list file: " << argV[argInd] << XERCES_STD_QUALIFIER endl;
+            std::cerr <<"Cannot open the list file: " << argV[argInd] << std::endl;
             return 3;
         }
 
@@ -310,7 +305,7 @@
                         continue;
                     else {
                         xsdFile = fURI;
-                        XERCES_STD_QUALIFIER cerr << "==Parsing== " << xsdFile << XERCES_STD_QUALIFIER endl;
+                        std::cerr << "==Parsing== " << xsdFile << std::endl;
                     }
                 }
                 else
@@ -334,7 +329,7 @@
 
         if (parsedOneSchemaOkay)
         {
-            XERCES_STD_QUALIFIER cout << "********** Printing out information from Schema **********" << "\n\n";
+            std::cout << "********** Printing out information from Schema **********" << "\n\n";
             bool updatedXSModel;
             XSModel *xsModel = grammarPool->getXSModel(updatedXSModel);
             if (xsModel)
@@ -342,11 +337,11 @@
                 StringList *namespaces = xsModel->getNamespaces();
                 for (unsigned i = 0; i < namespaces->size(); i++) {
 
-                    XERCES_STD_QUALIFIER cout << "Processing Namespace:   ";
+                    std::cout << "Processing Namespace:   ";
                     const XMLCh *nameSpace = namespaces->elementAt(i);
                     if (nameSpace && *nameSpace)
-                        XERCES_STD_QUALIFIER cout << StrX(nameSpace);
-                    XERCES_STD_QUALIFIER cout << "\n============================================" << XERCES_STD_QUALIFIER endl << XERCES_STD_QUALIFIER endl;
+                        std::cout << StrX(nameSpace);
+                    std::cout << "\n============================================" << std::endl << std::endl;
 
                     processElements(xsModel->getComponentsByNamespace(XSConstants::ELEMENT_DECLARATION,
                                                                   nameSpace));
@@ -356,31 +351,31 @@
             }
             else
             {
-                XERCES_STD_QUALIFIER cout << "No XSModel to print" << "\n\n";
+                std::cout << "No XSModel to print" << "\n\n";
             }
         }
         else
         {
-            XERCES_STD_QUALIFIER cout << "Did not parse a schema document cleanly so not printing Schema for Schema XSModel information";
+            std::cout << "Did not parse a schema document cleanly so not printing Schema for Schema XSModel information";
         }
 
-        XERCES_STD_QUALIFIER cout << XERCES_STD_QUALIFIER endl;
+        std::cout << std::endl;
     }
     catch (const OutOfMemoryException&)
     {
-        XERCES_STD_QUALIFIER cerr << "OutOfMemoryException during parsing: '" << xsdFile << "'\n" << XERCES_STD_QUALIFIER endl;
+        std::cerr << "OutOfMemoryException during parsing: '" << xsdFile << "'\n" << std::endl;
         errorCode = 6;
     }
     catch (const XMLException& e)
     {
-        XERCES_STD_QUALIFIER cerr << "\nError during parsing: '" << xsdFile << "'\n"
+        std::cerr << "\nError during parsing: '" << xsdFile << "'\n"
         << "Exception message is:  \n"
-        << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+        << StrX(e.getMessage()) << std::endl;
         errorCode = 4;
     }
     catch (...)
     {
-        XERCES_STD_QUALIFIER cerr << "\nUnexpected exception during parsing: '" << xsdFile << "'\n" << XERCES_STD_QUALIFIER endl;
+        std::cerr << "\nUnexpected exception during parsing: '" << xsdFile << "'\n" << std::endl;
         errorCode = 5;
     }
 
@@ -393,19 +388,19 @@
 
 void printBasic(XSObject *xsObject, const char *type)
 {
-    XERCES_STD_QUALIFIER cout << "Name:\t\t\t";
+    std::cout << "Name:\t\t\t";
     const XMLCh *nameSpace = xsObject->getNamespace();
     if (nameSpace && *nameSpace) {
-        XERCES_STD_QUALIFIER cout << StrX(nameSpace) << ", ";
+        std::cout << StrX(nameSpace) << ", ";
     }
-    XERCES_STD_QUALIFIER cout << StrX(xsObject->getName()) << "\n";
-    XERCES_STD_QUALIFIER cout << "Component Type:\t" << type << XERCES_STD_QUALIFIER endl;
+    std::cout << StrX(xsObject->getName()) << "\n";
+    std::cout << "Component Type:\t" << type << std::endl;
 }
 
 void processElements(XSNamedMap<XSObject> *xsElements)
 {
     if (!xsElements || xsElements->getLength() == 0) {
-        XERCES_STD_QUALIFIER cout << "no elements\n\n"  << XERCES_STD_QUALIFIER endl;
+        std::cout << "no elements\n\n"  << std::endl;
         return;
     }
     for (XMLSize_t i=0; i < xsElements->getLength(); i++) {
@@ -414,68 +409,68 @@
 
         // Content Model
         XSTypeDefinition *xsTypeDef = xsElement->getTypeDefinition();
-        XERCES_STD_QUALIFIER cout << "Content Model" << "\n";
-        XERCES_STD_QUALIFIER cout << "\tType:\t";
+        std::cout << "Content Model" << "\n";
+        std::cout << "\tType:\t";
         if (xsTypeDef->getTypeCategory() == XSTypeDefinition::SIMPLE_TYPE) {
-            XERCES_STD_QUALIFIER cout << "Simple\n";
+            std::cout << "Simple\n";
         } else {
-            XERCES_STD_QUALIFIER cout << "Complex\n";
+            std::cout << "Complex\n";
         }
-        XERCES_STD_QUALIFIER cout << "\tName:\t"
+        std::cout << "\tName:\t"
             << StrX(xsTypeDef->getName()) << "\n";
 
-        XERCES_STD_QUALIFIER cout << "\n--------------------------------------------" << XERCES_STD_QUALIFIER endl;
+        std::cout << "\n--------------------------------------------" << std::endl;
     }
 }
 
 void processSimpleTypeDefinition(XSSimpleTypeDefinition * xsSimpleTypeDef)
 {
     XSTypeDefinition *xsBaseTypeDef = xsSimpleTypeDef->getBaseType();
-    XERCES_STD_QUALIFIER cout << "Base:\t\t\t";
-    XERCES_STD_QUALIFIER cout << StrX(xsBaseTypeDef->getName()) << XERCES_STD_QUALIFIER endl;
+    std::cout << "Base:\t\t\t";
+    std::cout << StrX(xsBaseTypeDef->getName()) << std::endl;
 
     int facets = xsSimpleTypeDef->getDefinedFacets();
     if (facets) {
-        XERCES_STD_QUALIFIER cout << "Facets:\n";
+        std::cout << "Facets:\n";
 
         if (facets & XSSimpleTypeDefinition::FACET_LENGTH)
-                XERCES_STD_QUALIFIER cout << "\tLength:\t\t" << StrX(xsSimpleTypeDef->getLexicalFacetValue(XSSimpleTypeDefinition::FACET_LENGTH)) << XERCES_STD_QUALIFIER endl;
+                std::cout << "\tLength:\t\t" << StrX(xsSimpleTypeDef->getLexicalFacetValue(XSSimpleTypeDefinition::FACET_LENGTH)) << std::endl;
         if (facets & XSSimpleTypeDefinition::FACET_MINLENGTH)
-                XERCES_STD_QUALIFIER cout << "\tMinLength:\t" << StrX(xsSimpleTypeDef->getLexicalFacetValue(XSSimpleTypeDefinition::FACET_MINLENGTH)) << XERCES_STD_QUALIFIER endl;
+                std::cout << "\tMinLength:\t" << StrX(xsSimpleTypeDef->getLexicalFacetValue(XSSimpleTypeDefinition::FACET_MINLENGTH)) << std::endl;
         if (facets & XSSimpleTypeDefinition::FACET_MAXLENGTH)
-                XERCES_STD_QUALIFIER cout << "\tMaxLength:\t" << StrX(xsSimpleTypeDef->getLexicalFacetValue(XSSimpleTypeDefinition::FACET_MAXLENGTH)) << XERCES_STD_QUALIFIER endl;
+                std::cout << "\tMaxLength:\t" << StrX(xsSimpleTypeDef->getLexicalFacetValue(XSSimpleTypeDefinition::FACET_MAXLENGTH)) << std::endl;
         if (facets & XSSimpleTypeDefinition::FACET_PATTERN) {
             StringList *lexicalPatterns = xsSimpleTypeDef->getLexicalPattern();
             if (lexicalPatterns && lexicalPatterns->size()) {
-                XERCES_STD_QUALIFIER cout << "\tPattern:\t\t";
+                std::cout << "\tPattern:\t\t";
                 for (unsigned i = 0; i < lexicalPatterns->size(); i++) {
-                    XERCES_STD_QUALIFIER cout << StrX(lexicalPatterns->elementAt(i));
+                    std::cout << StrX(lexicalPatterns->elementAt(i));
                 }
-                XERCES_STD_QUALIFIER cout << XERCES_STD_QUALIFIER endl;
+                std::cout << std::endl;
             }
         }
         if (facets & XSSimpleTypeDefinition::FACET_WHITESPACE)
-                XERCES_STD_QUALIFIER cout << "\tWhitespace:\t\t" << StrX(xsSimpleTypeDef->getLexicalFacetValue(XSSimpleTypeDefinition::FACET_WHITESPACE)) << XERCES_STD_QUALIFIER endl;
+                std::cout << "\tWhitespace:\t\t" << StrX(xsSimpleTypeDef->getLexicalFacetValue(XSSimpleTypeDefinition::FACET_WHITESPACE)) << std::endl;
         if (facets & XSSimpleTypeDefinition::FACET_MAXINCLUSIVE)
-                XERCES_STD_QUALIFIER cout << "\tMaxInclusive:\t" << StrX(xsSimpleTypeDef->getLexicalFacetValue(XSSimpleTypeDefinition::FACET_MAXINCLUSIVE)) << XERCES_STD_QUALIFIER endl;
+                std::cout << "\tMaxInclusive:\t" << StrX(xsSimpleTypeDef->getLexicalFacetValue(XSSimpleTypeDefinition::FACET_MAXINCLUSIVE)) << std::endl;
         if (facets & XSSimpleTypeDefinition::FACET_MAXEXCLUSIVE)
-                XERCES_STD_QUALIFIER cout << "\tMaxExclusive:\t" << StrX(xsSimpleTypeDef->getLexicalFacetValue(XSSimpleTypeDefinition::FACET_MAXEXCLUSIVE)) << XERCES_STD_QUALIFIER endl;
+                std::cout << "\tMaxExclusive:\t" << StrX(xsSimpleTypeDef->getLexicalFacetValue(XSSimpleTypeDefinition::FACET_MAXEXCLUSIVE)) << std::endl;
         if (facets & XSSimpleTypeDefinition::FACET_MINEXCLUSIVE)
-                XERCES_STD_QUALIFIER cout << "\tMinExclusive:\t" << StrX(xsSimpleTypeDef->getLexicalFacetValue(XSSimpleTypeDefinition::FACET_MINEXCLUSIVE)) << XERCES_STD_QUALIFIER endl;
+                std::cout << "\tMinExclusive:\t" << StrX(xsSimpleTypeDef->getLexicalFacetValue(XSSimpleTypeDefinition::FACET_MINEXCLUSIVE)) << std::endl;
         if (facets & XSSimpleTypeDefinition::FACET_MININCLUSIVE)
-                XERCES_STD_QUALIFIER cout << "\tMinInclusive:\t" << StrX(xsSimpleTypeDef->getLexicalFacetValue(XSSimpleTypeDefinition::FACET_MININCLUSIVE)) << XERCES_STD_QUALIFIER endl;
+                std::cout << "\tMinInclusive:\t" << StrX(xsSimpleTypeDef->getLexicalFacetValue(XSSimpleTypeDefinition::FACET_MININCLUSIVE)) << std::endl;
         if (facets & XSSimpleTypeDefinition::FACET_TOTALDIGITS)
-                XERCES_STD_QUALIFIER cout << "\tTotalDigits:\t" << StrX(xsSimpleTypeDef->getLexicalFacetValue(XSSimpleTypeDefinition::FACET_TOTALDIGITS)) << XERCES_STD_QUALIFIER endl;
+                std::cout << "\tTotalDigits:\t" << StrX(xsSimpleTypeDef->getLexicalFacetValue(XSSimpleTypeDefinition::FACET_TOTALDIGITS)) << std::endl;
         if (facets & XSSimpleTypeDefinition::FACET_FRACTIONDIGITS)
-                XERCES_STD_QUALIFIER cout << "\tFractionDigits:\t" << StrX(xsSimpleTypeDef->getLexicalFacetValue(XSSimpleTypeDefinition::FACET_FRACTIONDIGITS)) << XERCES_STD_QUALIFIER endl;
+                std::cout << "\tFractionDigits:\t" << StrX(xsSimpleTypeDef->getLexicalFacetValue(XSSimpleTypeDefinition::FACET_FRACTIONDIGITS)) << std::endl;
         if (facets & XSSimpleTypeDefinition::FACET_ENUMERATION) {
             StringList *lexicalEnums = xsSimpleTypeDef->getLexicalEnumeration();
             if (lexicalEnums && lexicalEnums->size()) {
-                XERCES_STD_QUALIFIER cout << "\tEnumeration:\n";
+                std::cout << "\tEnumeration:\n";
                 for (unsigned i = 0; i < lexicalEnums->size(); i++) {
-                    XERCES_STD_QUALIFIER cout << "\t\t\t" << StrX(lexicalEnums->elementAt(i)) << "\n";
+                    std::cout << "\t\t\t" << StrX(lexicalEnums->elementAt(i)) << "\n";
                 }
-                XERCES_STD_QUALIFIER cout << XERCES_STD_QUALIFIER endl;
+                std::cout << std::endl;
             }
         }
     }
@@ -485,13 +480,13 @@
 {
     switch (type) {
         case XSModelGroup::COMPOSITOR_SEQUENCE :
-            XERCES_STD_QUALIFIER cout << ",";
+            std::cout << ",";
             break;
         case XSModelGroup::COMPOSITOR_CHOICE :
-            XERCES_STD_QUALIFIER cout << "|";
+            std::cout << "|";
             break;
         case XSModelGroup::COMPOSITOR_ALL :
-            XERCES_STD_QUALIFIER cout << "*";
+            std::cout << "*";
             break;
     }
 }
@@ -499,15 +494,15 @@
 void processParticle(XSParticle *xsParticle)
 {
     if (!xsParticle) {
-        XERCES_STD_QUALIFIER cout << "xsParticle is NULL";
+        std::cout << "xsParticle is NULL";
         return;
     }
     XSParticle::TERM_TYPE termType = xsParticle->getTermType();
     if (termType == XSParticle::TERM_ELEMENT) {
         XSElementDeclaration *xsElement = xsParticle->getElementTerm();
-        XERCES_STD_QUALIFIER cout << StrX(xsElement->getName());
+        std::cout << StrX(xsElement->getName());
     } else if (termType == XSParticle::TERM_MODELGROUP) {
-        XERCES_STD_QUALIFIER cout << "(";
+        std::cout << "(";
 
         XSModelGroup *xsModelGroup = xsParticle->getModelGroupTerm();
         XSModelGroup::COMPOSITOR_TYPE compositorType = xsModelGroup->getCompositor();
@@ -518,9 +513,9 @@
         }
         processParticle(xsParticleList->elementAt(xsParticleList->size()-1));
 
-        XERCES_STD_QUALIFIER cout << ")";
+        std::cout << ")";
     } else if (termType == XSParticle::TERM_WILDCARD) {
-        XERCES_STD_QUALIFIER cout << "* (wildcard)";
+        std::cout << "* (wildcard)";
     }
 }
 
@@ -528,16 +523,16 @@
 {
     XSTypeDefinition *xsBaseTypeDef = xsComplexTypeDef->getBaseType();
     if (xsBaseTypeDef) {
-        XERCES_STD_QUALIFIER cout << "Base:\t\t\t";
-        XERCES_STD_QUALIFIER cout << StrX(xsBaseTypeDef->getName()) << "\n";
+        std::cout << "Base:\t\t\t";
+        std::cout << StrX(xsBaseTypeDef->getName()) << "\n";
     }
 
-    XERCES_STD_QUALIFIER cout << "Content Model:\t";
+    std::cout << "Content Model:\t";
     XSComplexTypeDefinition::CONTENT_TYPE contentType = xsComplexTypeDef->getContentType();
     if (contentType == XSComplexTypeDefinition::CONTENTTYPE_ELEMENT ||
         contentType == XSComplexTypeDefinition::CONTENTTYPE_MIXED) {
         processParticle(xsComplexTypeDef->getParticle());
-        XERCES_STD_QUALIFIER cout << XERCES_STD_QUALIFIER endl;
+        std::cout << std::endl;
     }
 }
 
@@ -551,15 +546,15 @@
         printBasic(xsTypeDef, "Type Definition");
 
         // Content Model
-        XERCES_STD_QUALIFIER cout << "Category:\t";
+        std::cout << "Category:\t";
         if (xsTypeDef->getTypeCategory() == XSTypeDefinition::SIMPLE_TYPE) {
-            XERCES_STD_QUALIFIER cout << "\tSimple\n";
+            std::cout << "\tSimple\n";
             processSimpleTypeDefinition((XSSimpleTypeDefinition *)xsTypeDef);
         } else {
-            XERCES_STD_QUALIFIER cout << "\tComplex\n";
+            std::cout << "\tComplex\n";
             processComplexTypeDefinition((XSComplexTypeDefinition *)xsTypeDef);
         }
 
-        XERCES_STD_QUALIFIER cout << "\n--------------------------------------------" << XERCES_STD_QUALIFIER endl;
+        std::cout << "\n--------------------------------------------" << std::endl;
     }
 }
diff --git a/samples/src/SEnumVal/SEnumVal.cpp b/samples/src/SEnumVal/SEnumVal.cpp
index 3ce46f9..971c9f5 100644
--- a/samples/src/SEnumVal/SEnumVal.cpp
+++ b/samples/src/SEnumVal/SEnumVal.cpp
@@ -30,16 +30,12 @@
 #include <xercesc/validators/schema/SchemaSymbols.hpp>
 #include <xercesc/validators/common/ContentSpecNode.hpp>
 #include <xercesc/util/OutOfMemoryException.hpp>
-#if defined(XERCES_NEW_IOSTREAMS)
 #include <iostream>
-#else
-#include <iostream.h>
-#endif
-#include <stdlib.h>
-#include <string.h>
+#include <cstdlib>
+#include <cstring>
 
 
-XERCES_CPP_NAMESPACE_USE
+using namespace XERCES_CPP_NAMESPACE;
 
 // ---------------------------------------------------------------------------
 //  Forward references
@@ -93,7 +89,7 @@
     char*   fLocalForm;
 };
 
-inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump)
+inline std::ostream& operator<<(std::ostream& target, const StrX& toDump)
 {
     target << toDump.localForm();
     return target;
@@ -104,12 +100,12 @@
 // ---------------------------------------------------------------------------
 static void usage()
 {
-    XERCES_STD_QUALIFIER cout << "\nUsage:\n"
+    std::cout << "\nUsage:\n"
             "    SEnumVal <XML file>\n\n"
             "This program parses a file, then shows how to enumerate the\n"
             "contents of the Schema Grammar. Essentially, shows how one can\n"
             "access the Schema information stored in internal data structures.\n"
-         << XERCES_STD_QUALIFIER endl;
+         << std::endl;
 }
 
 // ---------------------------------------------------------------------------
@@ -128,8 +124,8 @@
 
     catch (const XMLException& toCatch)
     {
-         XERCES_STD_QUALIFIER cerr   << "Error during initialization! Message:\n"
-                << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl;
+         std::cerr   << "Error during initialization! Message:\n"
+                << StrX(toCatch.getMessage()) << std::endl;
          errorCode = 1;
     }
     if(errorCode) {
@@ -153,14 +149,14 @@
     }
     catch (const OutOfMemoryException&)
     {
-        XERCES_STD_QUALIFIER cerr << "OutOfMemoryException" << XERCES_STD_QUALIFIER endl;
+        std::cerr << "OutOfMemoryException" << std::endl;
         errorCode = 5;
     }
     catch (const XMLException& e)
     {
-        XERCES_STD_QUALIFIER cerr << "\nError during parsing: '" << argV[1] << "'\n"
+        std::cerr << "\nError during parsing: '" << argV[1] << "'\n"
              << "Exception message is:  \n"
-             << StrX(e.getMessage()) << "\n" << XERCES_STD_QUALIFIER endl;
+             << StrX(e.getMessage()) << "\n" << std::endl;
         errorCode = 3;
     }
 
@@ -186,20 +182,20 @@
 
     if (parser.getErrorCount())
 	{
-        XERCES_STD_QUALIFIER cout << "\nErrors occurred, no output available\n" << XERCES_STD_QUALIFIER endl;
+        std::cout << "\nErrors occurred, no output available\n" << std::endl;
 		return;
 	}
 
 	if (!parser.getValidator().handlesSchema())
 	{
-		XERCES_STD_QUALIFIER cout << "\n Non schema document, no output available\n" << XERCES_STD_QUALIFIER endl;
+		std::cout << "\n Non schema document, no output available\n" << std::endl;
 		return;
 	}
 
 	Grammar* rootGrammar = parser.getRootGrammar();
 	if (!rootGrammar || rootGrammar->getGrammarType() != Grammar::SchemaGrammarType)
 	{
-		XERCES_STD_QUALIFIER cout << "\n Non schema grammar, no output available\n" << XERCES_STD_QUALIFIER endl;
+		std::cout << "\n Non schema grammar, no output available\n" << std::endl;
 		return;
 	}
 
@@ -214,7 +210,7 @@
 
 	if (!elemEnum.hasMoreElements())
 	{
-		XERCES_STD_QUALIFIER cout << "\nThe validator has no elements to display\n" << XERCES_STD_QUALIFIER endl;
+		std::cout << "\nThe validator has no elements to display\n" << std::endl;
 		return;
 	}
 
@@ -223,40 +219,40 @@
 		const SchemaElementDecl& curElem = elemEnum.nextElement();
 
 		// Name
-		XERCES_STD_QUALIFIER cout << "Name:\t\t\t" << StrX(curElem.getFullName()) << "\n";
+		std::cout << "Name:\t\t\t" << StrX(curElem.getFullName()) << "\n";
 
 		// Model Type
-		XERCES_STD_QUALIFIER cout << "Model Type:\t\t";
+		std::cout << "Model Type:\t\t";
 		switch( curElem.getModelType() )
 		{
-		case SchemaElementDecl::Empty:          XERCES_STD_QUALIFIER cout << "Empty";         break;
-		case SchemaElementDecl::Any:            XERCES_STD_QUALIFIER cout << "Any";           break;
-		case SchemaElementDecl::Mixed_Simple:   XERCES_STD_QUALIFIER cout << "Mixed_Simple";  break;
-		case SchemaElementDecl::Mixed_Complex:  XERCES_STD_QUALIFIER cout << "Mixed_Complex"; break;
-		case SchemaElementDecl::Children:       XERCES_STD_QUALIFIER cout << "Children";      break;
-		case SchemaElementDecl::Simple:         XERCES_STD_QUALIFIER cout << "Simple";        break;
-        case SchemaElementDecl::ElementOnlyEmpty:    XERCES_STD_QUALIFIER cout << "ElementOnlyEmpty";    break;
+		case SchemaElementDecl::Empty:          std::cout << "Empty";         break;
+		case SchemaElementDecl::Any:            std::cout << "Any";           break;
+		case SchemaElementDecl::Mixed_Simple:   std::cout << "Mixed_Simple";  break;
+		case SchemaElementDecl::Mixed_Complex:  std::cout << "Mixed_Complex"; break;
+		case SchemaElementDecl::Children:       std::cout << "Children";      break;
+		case SchemaElementDecl::Simple:         std::cout << "Simple";        break;
+        case SchemaElementDecl::ElementOnlyEmpty:    std::cout << "ElementOnlyEmpty";    break;
 
-		default:                                XERCES_STD_QUALIFIER cout << "Unknown";       break;
+		default:                                std::cout << "Unknown";       break;
 		}
 
-		XERCES_STD_QUALIFIER cout << "\n";
+		std::cout << "\n";
 
 		// Create Reason
-		XERCES_STD_QUALIFIER cout << "Create Reason:\t";
+		std::cout << "Create Reason:\t";
 		switch( curElem.getCreateReason() )
 		{
-		case XMLElementDecl::NoReason:          XERCES_STD_QUALIFIER cout << "Empty";            break;
-		case XMLElementDecl::Declared:          XERCES_STD_QUALIFIER cout << "Declared";         break;
-		case XMLElementDecl::AttList:           XERCES_STD_QUALIFIER cout << "AttList";          break;
-		case XMLElementDecl::InContentModel:    XERCES_STD_QUALIFIER cout << "InContentModel";   break;
-		case XMLElementDecl::AsRootElem:        XERCES_STD_QUALIFIER cout << "AsRootElem";       break;
-		case XMLElementDecl::JustFaultIn:       XERCES_STD_QUALIFIER cout << "JustFaultIn";      break;
+		case XMLElementDecl::NoReason:          std::cout << "Empty";            break;
+		case XMLElementDecl::Declared:          std::cout << "Declared";         break;
+		case XMLElementDecl::AttList:           std::cout << "AttList";          break;
+		case XMLElementDecl::InContentModel:    std::cout << "InContentModel";   break;
+		case XMLElementDecl::AsRootElem:        std::cout << "AsRootElem";       break;
+		case XMLElementDecl::JustFaultIn:       std::cout << "JustFaultIn";      break;
 
-		default:                            XERCES_STD_QUALIFIER cout << "Unknown";  break;
+		default:                            std::cout << "Unknown";  break;
 		}
 
-		XERCES_STD_QUALIFIER cout << "\n";
+		std::cout << "\n";
 
 		// Content Spec Node
 		processContentSpecNode( curElem.getContentSpec() );
@@ -265,21 +261,21 @@
 		int mflags = curElem.getMiscFlags();
 		if( mflags !=0 )
 		{
-			XERCES_STD_QUALIFIER cout << "Misc. Flags:\t";
+			std::cout << "Misc. Flags:\t";
 		}
 
         if ( mflags & SchemaSymbols::XSD_NILLABLE )
-			XERCES_STD_QUALIFIER cout << "Nillable ";
+			std::cout << "Nillable ";
 
 		if ( mflags & SchemaSymbols::XSD_ABSTRACT )
-			XERCES_STD_QUALIFIER cout << "Abstract ";
+			std::cout << "Abstract ";
 
 		if ( mflags & SchemaSymbols::XSD_FIXED )
-			XERCES_STD_QUALIFIER cout << "Fixed ";
+			std::cout << "Fixed ";
 
 		if( mflags !=0 )
 		{
-			XERCES_STD_QUALIFIER cout << "\n";
+			std::cout << "\n";
 		}
 
 		// Substitution Name
@@ -287,7 +283,7 @@
 		if( subsGroup )
 		{
 			const XMLCh* uriText = parser.getURIText(subsGroup->getURI());
-			XERCES_STD_QUALIFIER cout << "Substitution Name:\t" << StrX(uriText)
+			std::cout << "Substitution Name:\t" << StrX(uriText)
 			     << "," << StrX(subsGroup->getBaseName()) << "\n";
 		}
 
@@ -295,14 +291,14 @@
 		const XMLCh* fmtCntModel = curElem.getFormattedContentModel();
 		if( fmtCntModel != NULL )
 		{
-			XERCES_STD_QUALIFIER cout << "Content Model:\t" << StrX(fmtCntModel) << "\n";
+			std::cout << "Content Model:\t" << StrX(fmtCntModel) << "\n";
 		}
 
 		const ComplexTypeInfo* ctype = curElem.getComplexTypeInfo();
 		if( ctype != NULL)
 		{
-			XERCES_STD_QUALIFIER cout << "ComplexType:\n";
-			XERCES_STD_QUALIFIER cout << "\tTypeName:\t" << StrX(ctype->getTypeName()) << "\n";
+			std::cout << "ComplexType:\n";
+			std::cout << "\tTypeName:\t" << StrX(ctype->getTypeName()) << "\n";
 
 			ContentSpecNode* cSpecNode = ctype->getContentSpec();
 			processContentSpecNode(cSpecNode, true );
@@ -318,8 +314,8 @@
 			processAttributes( curElem.getAttDefList() );
 		}
 
-		XERCES_STD_QUALIFIER cout << "--------------------------------------------";
-		XERCES_STD_QUALIFIER cout << XERCES_STD_QUALIFIER endl;
+		std::cout << "--------------------------------------------";
+		std::cout << std::endl;
 
     }
 
@@ -339,46 +335,46 @@
 
     if ( margin )
     {
-        XERCES_STD_QUALIFIER cout << "\t";
+        std::cout << "\t";
     }
 
-    XERCES_STD_QUALIFIER cout << "Attributes:\n";
+    std::cout << "Attributes:\n";
     for (unsigned int i=0; i<attList.getAttDefCount(); i++)
     {
         // Name
         SchemaAttDef& curAttDef = (SchemaAttDef&)attList.getAttDef(i);
-        XERCES_STD_QUALIFIER cout << "\tName:\t\t\t" << StrX(curAttDef.getFullName()) << "\n";
+        std::cout << "\tName:\t\t\t" << StrX(curAttDef.getFullName()) << "\n";
 
         // Type
-        XERCES_STD_QUALIFIER cout << "\tType:\t\t\t";
-		XERCES_STD_QUALIFIER cout << StrX(XMLAttDef::getAttTypeString(curAttDef.getType()));
-        XERCES_STD_QUALIFIER cout << "\n";
+        std::cout << "\tType:\t\t\t";
+		std::cout << StrX(XMLAttDef::getAttTypeString(curAttDef.getType()));
+        std::cout << "\n";
 
         // Default Type
-        XERCES_STD_QUALIFIER cout << "\tDefault Type:\t";
-		XERCES_STD_QUALIFIER cout << StrX(XMLAttDef::getDefAttTypeString(curAttDef.getDefaultType()));
-        XERCES_STD_QUALIFIER cout << "\n";
+        std::cout << "\tDefault Type:\t";
+		std::cout << StrX(XMLAttDef::getDefAttTypeString(curAttDef.getDefaultType()));
+        std::cout << "\n";
 
         // Value
         if( curAttDef.getValue() )
         {
-            XERCES_STD_QUALIFIER cout << "\tValue:\t\t\t";
-            XERCES_STD_QUALIFIER cout << StrX(curAttDef.getValue());
-            XERCES_STD_QUALIFIER cout << "\n";
+            std::cout << "\tValue:\t\t\t";
+            std::cout << StrX(curAttDef.getValue());
+            std::cout << "\n";
         }
 
         // Enum. values
         if( curAttDef.getEnumeration() )
         {
-            XERCES_STD_QUALIFIER cout << "\tEnumeration:\t";
-            XERCES_STD_QUALIFIER cout << StrX(curAttDef.getEnumeration());
-            XERCES_STD_QUALIFIER cout << "\n";
+            std::cout << "\tEnumeration:\t";
+            std::cout << StrX(curAttDef.getEnumeration());
+            std::cout << "\n";
         }
 
          const DatatypeValidator* dv = curAttDef.getDatatypeValidator();
          processDatatypeValidator( dv, true );
 
-        XERCES_STD_QUALIFIER cout << "\n";
+        std::cout << "\n";
     }
 }
 
@@ -391,43 +387,43 @@
 
     if( margin )
     {
-        XERCES_STD_QUALIFIER cout << "\t";
+        std::cout << "\t";
     }
 
-    XERCES_STD_QUALIFIER cout << "Base Datatype:\t\t";
+    std::cout << "Base Datatype:\t\t";
     switch( dtValidator->getType() )
     {
-    case DatatypeValidator::String:         XERCES_STD_QUALIFIER cout << "string";      break;
-    case DatatypeValidator::AnyURI:         XERCES_STD_QUALIFIER cout << "AnyURI";      break;
-    case DatatypeValidator::QName:          XERCES_STD_QUALIFIER cout << "QName";       break;
-    case DatatypeValidator::Name:           XERCES_STD_QUALIFIER cout << "Name";        break;
-    case DatatypeValidator::NCName:         XERCES_STD_QUALIFIER cout << "NCName";      break;
-    case DatatypeValidator::Boolean:        XERCES_STD_QUALIFIER cout << "Boolean";     break;
-    case DatatypeValidator::Float:          XERCES_STD_QUALIFIER cout << "Float";       break;
-    case DatatypeValidator::Double:         XERCES_STD_QUALIFIER cout << "Double";      break;
-    case DatatypeValidator::Decimal:        XERCES_STD_QUALIFIER cout << "Decimal";     break;
-    case DatatypeValidator::HexBinary:      XERCES_STD_QUALIFIER cout << "HexBinary";   break;
-    case DatatypeValidator::Base64Binary:   XERCES_STD_QUALIFIER cout << "Base64Binary";break;
-    case DatatypeValidator::Duration:       XERCES_STD_QUALIFIER cout << "Duration";    break;
-    case DatatypeValidator::DateTime:       XERCES_STD_QUALIFIER cout << "DateTime";    break;
-    case DatatypeValidator::Date:           XERCES_STD_QUALIFIER cout << "Date";        break;
-    case DatatypeValidator::Time:           XERCES_STD_QUALIFIER cout << "Time";        break;
-    case DatatypeValidator::MonthDay:       XERCES_STD_QUALIFIER cout << "MonthDay";    break;
-    case DatatypeValidator::YearMonth:      XERCES_STD_QUALIFIER cout << "YearMonth";   break;
-    case DatatypeValidator::Year:           XERCES_STD_QUALIFIER cout << "Year";        break;
-    case DatatypeValidator::Month:          XERCES_STD_QUALIFIER cout << "Month";       break;
-    case DatatypeValidator::Day:            XERCES_STD_QUALIFIER cout << "Day";         break;
-    case DatatypeValidator::ID:             XERCES_STD_QUALIFIER cout << "ID";          break;
-    case DatatypeValidator::IDREF:          XERCES_STD_QUALIFIER cout << "IDREF";       break;
-    case DatatypeValidator::ENTITY:         XERCES_STD_QUALIFIER cout << "ENTITY";      break;
-    case DatatypeValidator::NOTATION:       XERCES_STD_QUALIFIER cout << "NOTATION";    break;
-    case DatatypeValidator::List:           XERCES_STD_QUALIFIER cout << "List";        break;
-    case DatatypeValidator::Union:          XERCES_STD_QUALIFIER cout << "Union";       break;
-    case DatatypeValidator::AnySimpleType:  XERCES_STD_QUALIFIER cout << "AnySimpleType"; break;
-    case DatatypeValidator::UnKnown:        XERCES_STD_QUALIFIER cout << "UNKNOWN";     break;
+    case DatatypeValidator::String:         std::cout << "string";      break;
+    case DatatypeValidator::AnyURI:         std::cout << "AnyURI";      break;
+    case DatatypeValidator::QName:          std::cout << "QName";       break;
+    case DatatypeValidator::Name:           std::cout << "Name";        break;
+    case DatatypeValidator::NCName:         std::cout << "NCName";      break;
+    case DatatypeValidator::Boolean:        std::cout << "Boolean";     break;
+    case DatatypeValidator::Float:          std::cout << "Float";       break;
+    case DatatypeValidator::Double:         std::cout << "Double";      break;
+    case DatatypeValidator::Decimal:        std::cout << "Decimal";     break;
+    case DatatypeValidator::HexBinary:      std::cout << "HexBinary";   break;
+    case DatatypeValidator::Base64Binary:   std::cout << "Base64Binary";break;
+    case DatatypeValidator::Duration:       std::cout << "Duration";    break;
+    case DatatypeValidator::DateTime:       std::cout << "DateTime";    break;
+    case DatatypeValidator::Date:           std::cout << "Date";        break;
+    case DatatypeValidator::Time:           std::cout << "Time";        break;
+    case DatatypeValidator::MonthDay:       std::cout << "MonthDay";    break;
+    case DatatypeValidator::YearMonth:      std::cout << "YearMonth";   break;
+    case DatatypeValidator::Year:           std::cout << "Year";        break;
+    case DatatypeValidator::Month:          std::cout << "Month";       break;
+    case DatatypeValidator::Day:            std::cout << "Day";         break;
+    case DatatypeValidator::ID:             std::cout << "ID";          break;
+    case DatatypeValidator::IDREF:          std::cout << "IDREF";       break;
+    case DatatypeValidator::ENTITY:         std::cout << "ENTITY";      break;
+    case DatatypeValidator::NOTATION:       std::cout << "NOTATION";    break;
+    case DatatypeValidator::List:           std::cout << "List";        break;
+    case DatatypeValidator::Union:          std::cout << "Union";       break;
+    case DatatypeValidator::AnySimpleType:  std::cout << "AnySimpleType"; break;
+    case DatatypeValidator::UnKnown:        std::cout << "UNKNOWN";     break;
     }
 
-    XERCES_STD_QUALIFIER cout << "\n";
+    std::cout << "\n";
 
     // Facets
 	RefHashTableOf<KVStringPair>* facets = dtValidator->getFacets();
@@ -435,7 +431,7 @@
     {
         XMLSize_t i;
         // Element's properties
-        XERCES_STD_QUALIFIER cout << "Facets:\t\t\n";
+        std::cout << "Facets:\t\t\n";
         // use a list to print them sorted, or the list could be different on 64-bit machines
         RefVectorOf<XMLCh> sortedList(facets->getCount(), false);
         RefHashTableOfEnumerator<KVStringPair> enumFacets(facets);
@@ -458,7 +454,7 @@
         for(i=0;i<len;i++)
         {
             const XMLCh* key = sortedList.elementAt(i);
-            XERCES_STD_QUALIFIER cout << "\t" << StrX( key )    << "="
+            std::cout << "\t" << StrX( key )    << "="
                          << StrX( facets->get(key)->getValue() )  << "\n";
         }
     }
@@ -467,12 +463,12 @@
 	RefVectorOf<XMLCh>* enums = (RefVectorOf<XMLCh>*) dtValidator->getEnumString();
 	if (enums)
 	{
-		XERCES_STD_QUALIFIER cout << "Enumeration:\t\t\n";
+		std::cout << "Enumeration:\t\t\n";
 
 		XMLSize_t enumLength = enums->size();
 		for ( XMLSize_t i = 0; i < enumLength; i++)
         {
-            XERCES_STD_QUALIFIER cout << "\t" << StrX( enums->elementAt(i)) << "\n";
+            std::cout << "\t" << StrX( enums->elementAt(i)) << "\n";
         }
 
 	}
@@ -487,34 +483,34 @@
 
     if( margin )
     {
-        XERCES_STD_QUALIFIER cout << "\t";
+        std::cout << "\t";
     }
 
-    XERCES_STD_QUALIFIER cout << "ContentType:\t";
+    std::cout << "ContentType:\t";
     switch( cSpecNode->getType() )
     {
-        case ContentSpecNode::Leaf:                XERCES_STD_QUALIFIER cout << "Leaf";           break;
-        case ContentSpecNode::ZeroOrOne:           XERCES_STD_QUALIFIER cout << "ZeroOrOne";      break;
-        case ContentSpecNode::ZeroOrMore:          XERCES_STD_QUALIFIER cout << "ZeroOrMore";     break;
-        case ContentSpecNode::OneOrMore:           XERCES_STD_QUALIFIER cout << "OneOrMore";      break;
+        case ContentSpecNode::Leaf:                std::cout << "Leaf";           break;
+        case ContentSpecNode::ZeroOrOne:           std::cout << "ZeroOrOne";      break;
+        case ContentSpecNode::ZeroOrMore:          std::cout << "ZeroOrMore";     break;
+        case ContentSpecNode::OneOrMore:           std::cout << "OneOrMore";      break;
         case ContentSpecNode::ModelGroupChoice:    
-        case ContentSpecNode::Choice:              XERCES_STD_QUALIFIER cout << "Choice";         break;
+        case ContentSpecNode::Choice:              std::cout << "Choice";         break;
         case ContentSpecNode::ModelGroupSequence:  
-        case ContentSpecNode::Sequence:            XERCES_STD_QUALIFIER cout << "Sequence";       break;
-        case ContentSpecNode::All:                 XERCES_STD_QUALIFIER cout << "All";            break;
-        case ContentSpecNode::Loop:                XERCES_STD_QUALIFIER cout << "Loop";           break;
-        case ContentSpecNode::Any:                 XERCES_STD_QUALIFIER cout << "Any";            break;
-        case ContentSpecNode::Any_Other:           XERCES_STD_QUALIFIER cout << "Any_Other";      break;
-        case ContentSpecNode::Any_NS:              XERCES_STD_QUALIFIER cout << "Any_NS";         break;
-        case ContentSpecNode::Any_Lax:             XERCES_STD_QUALIFIER cout << "Any_Lax";        break;
-        case ContentSpecNode::Any_Other_Lax:       XERCES_STD_QUALIFIER cout << "Any_Other_Lax";  break;
-        case ContentSpecNode::Any_NS_Lax:          XERCES_STD_QUALIFIER cout << "Any_NS_Lax";     break;
-        case ContentSpecNode::Any_Skip:            XERCES_STD_QUALIFIER cout << "Any_Skip";       break;
-        case ContentSpecNode::Any_Other_Skip:      XERCES_STD_QUALIFIER cout << "Any_Other_Skip"; break;
-        case ContentSpecNode::Any_NS_Skip:         XERCES_STD_QUALIFIER cout << "Any_NS_Skip";    break;
-        case ContentSpecNode::Any_NS_Choice:       XERCES_STD_QUALIFIER cout << "Any_NS_Choice";  break;
-        case ContentSpecNode::UnknownType:         XERCES_STD_QUALIFIER cout << "UnknownType";    break;
+        case ContentSpecNode::Sequence:            std::cout << "Sequence";       break;
+        case ContentSpecNode::All:                 std::cout << "All";            break;
+        case ContentSpecNode::Loop:                std::cout << "Loop";           break;
+        case ContentSpecNode::Any:                 std::cout << "Any";            break;
+        case ContentSpecNode::Any_Other:           std::cout << "Any_Other";      break;
+        case ContentSpecNode::Any_NS:              std::cout << "Any_NS";         break;
+        case ContentSpecNode::Any_Lax:             std::cout << "Any_Lax";        break;
+        case ContentSpecNode::Any_Other_Lax:       std::cout << "Any_Other_Lax";  break;
+        case ContentSpecNode::Any_NS_Lax:          std::cout << "Any_NS_Lax";     break;
+        case ContentSpecNode::Any_Skip:            std::cout << "Any_Skip";       break;
+        case ContentSpecNode::Any_Other_Skip:      std::cout << "Any_Other_Skip"; break;
+        case ContentSpecNode::Any_NS_Skip:         std::cout << "Any_NS_Skip";    break;
+        case ContentSpecNode::Any_NS_Choice:       std::cout << "Any_NS_Choice";  break;
+        case ContentSpecNode::UnknownType:         std::cout << "UnknownType";    break;
     }
-    XERCES_STD_QUALIFIER cout << "\n";
+    std::cout << "\n";
 }
 
diff --git a/samples/src/StdInParse/StdInParse.cpp b/samples/src/StdInParse/StdInParse.cpp
index f685989..0b28356 100644
--- a/samples/src/StdInParse/StdInParse.cpp
+++ b/samples/src/StdInParse/StdInParse.cpp
@@ -59,7 +59,7 @@
 // ---------------------------------------------------------------------------
 void usage()
 {
-    XERCES_STD_QUALIFIER cout << "\nUsage:\n"
+    std::cout << "\nUsage:\n"
             "    StdInParse [options] < <XML file>\n\n"
             "This program demonstrates streaming XML data from standard\n"
             "input.  It then uses the SAX Parser, and prints the\n"
@@ -72,7 +72,7 @@
             "    -f          Enable full schema constraint checking. Defaults to off.\n"
 		      "    -?          Show this help.\n\n"
             "  * = Default if not provided explicitly.\n"
-         << XERCES_STD_QUALIFIER endl;
+         << std::endl;
 }
 
 
@@ -89,8 +89,8 @@
 
     catch (const XMLException& toCatch)
     {
-         XERCES_STD_QUALIFIER cerr << "Error during initialization! Message:\n"
-              << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl;
+         std::cerr << "Error during initialization! Message:\n"
+              << StrX(toCatch.getMessage()) << std::endl;
          return 1;
     }
 
@@ -121,7 +121,7 @@
                 valScheme = SAXParser::Val_Always;
             else
             {
-                XERCES_STD_QUALIFIER cerr << "Unknown -v= value: " << parm << XERCES_STD_QUALIFIER endl;
+                std::cerr << "Unknown -v= value: " << parm << std::endl;
                 XMLPlatformUtils::Terminate();
                 return 2;
             }
@@ -143,8 +143,8 @@
         }
          else
         {
-            XERCES_STD_QUALIFIER cerr << "Unknown option '" << argV[parmInd]
-                 << "', ignoring it\n" << XERCES_STD_QUALIFIER endl;
+            std::cerr << "Unknown option '" << argV[parmInd]
+                 << "', ignoring it\n" << std::endl;
         }
     }
 
@@ -190,26 +190,26 @@
         }
         catch (const OutOfMemoryException&)
         {
-            XERCES_STD_QUALIFIER cerr << "OutOfMemoryException" << XERCES_STD_QUALIFIER endl;
+            std::cerr << "OutOfMemoryException" << std::endl;
             errorCount = 2;
             return 4;
         }
         catch (const XMLException& e)
         {
-            XERCES_STD_QUALIFIER cerr << "\nError during parsing: \n"
+            std::cerr << "\nError during parsing: \n"
                  << StrX(e.getMessage())
-                 << "\n" << XERCES_STD_QUALIFIER endl;
+                 << "\n" << std::endl;
             errorCount = 1;
             return 4;
         }
 
         // Print out the stats that we collected and time taken
         if (!errorCount) {
-            XERCES_STD_QUALIFIER cout << StrX(src.getSystemId()) << ": " << duration << " ms ("
+            std::cout << StrX(src.getSystemId()) << ": " << duration << " ms ("
                  << handler.getElementCount() << " elems, "
                  << handler.getAttrCount() << " attrs, "
                  << handler.getSpaceCount() << " spaces, "
-                 << handler.getCharacterCount() << " chars)" << XERCES_STD_QUALIFIER endl;
+                 << handler.getCharacterCount() << " chars)" << std::endl;
         }
     }
 
diff --git a/samples/src/StdInParse/StdInParse.hpp b/samples/src/StdInParse/StdInParse.hpp
index 671807f..9ca6c01 100644
--- a/samples/src/StdInParse/StdInParse.hpp
+++ b/samples/src/StdInParse/StdInParse.hpp
@@ -23,13 +23,9 @@
 // ---------------------------------------------------------------------------
 //  Includes for all the program files to see
 // ---------------------------------------------------------------------------
-#include <string.h>
-#include <stdlib.h>
-#if defined(XERCES_NEW_IOSTREAMS)
+#include <cstring>
+#include <cstdlib>
 #include <iostream>
-#else
-#include <iostream.h>
-#endif
 #include <xercesc/util/PlatformUtils.hpp>
 #include "StdInParseHandlers.hpp"
 
@@ -73,7 +69,7 @@
     char*   fLocalForm;
 };
 
-inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump)
+inline std::ostream& operator<<(std::ostream& target, const StrX& toDump)
 {
     target << toDump.localForm();
     return target;
diff --git a/samples/src/StdInParse/StdInParseHandlers.cpp b/samples/src/StdInParse/StdInParseHandlers.cpp
index 4736dfe..76c98ab 100644
--- a/samples/src/StdInParse/StdInParseHandlers.cpp
+++ b/samples/src/StdInParse/StdInParseHandlers.cpp
@@ -89,24 +89,24 @@
 // ---------------------------------------------------------------------------
 void StdInParseHandlers::error(const SAXParseException& e)
 {
-    XERCES_STD_QUALIFIER cerr << "\nError at (file " << StrX(e.getSystemId())
+    std::cerr << "\nError at (file " << StrX(e.getSystemId())
 		 << ", line " << e.getLineNumber()
 		 << ", char " << e.getColumnNumber()
-         << "): " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+         << "): " << StrX(e.getMessage()) << std::endl;
 }
 
 void StdInParseHandlers::fatalError(const SAXParseException& e)
 {
-    XERCES_STD_QUALIFIER cerr << "\nFatal Error at (file " << StrX(e.getSystemId())
+    std::cerr << "\nFatal Error at (file " << StrX(e.getSystemId())
 		 << ", line " << e.getLineNumber()
 		 << ", char " << e.getColumnNumber()
-         << "): " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+         << "): " << StrX(e.getMessage()) << std::endl;
 }
 
 void StdInParseHandlers::warning(const SAXParseException& e)
 {
-    XERCES_STD_QUALIFIER cerr << "\nWarning at (file " << StrX(e.getSystemId())
+    std::cerr << "\nWarning at (file " << StrX(e.getSystemId())
 		 << ", line " << e.getLineNumber()
 		 << ", char " << e.getColumnNumber()
-         << "): " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+         << "): " << StrX(e.getMessage()) << std::endl;
 }
diff --git a/samples/src/StdInParse/StdInParseHandlers.hpp b/samples/src/StdInParse/StdInParseHandlers.hpp
index 0a3ff06..8fa45cb 100644
--- a/samples/src/StdInParse/StdInParseHandlers.hpp
+++ b/samples/src/StdInParse/StdInParseHandlers.hpp
@@ -25,11 +25,11 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/sax/HandlerBase.hpp>
 
-XERCES_CPP_NAMESPACE_USE
+using namespace XERCES_CPP_NAMESPACE;
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 class AttributeList;
-XERCES_CPP_NAMESPACE_END
+}
 
 class StdInParseHandlers : public HandlerBase
 {
diff --git a/samples/src/XInclude/XInclude.cpp b/samples/src/XInclude/XInclude.cpp
index 14970c2..3451cbd 100644
--- a/samples/src/XInclude/XInclude.cpp
+++ b/samples/src/XInclude/XInclude.cpp
@@ -39,10 +39,10 @@
 // ---------------------------------------------------------------------------
 static void usage()
 {
-    XERCES_STD_QUALIFIER cout << "\nUsage:\n"
+    std::cout << "\nUsage:\n"
 			"    XInclude [-h] InputFile OutputFile\n"
 			"  -h :             Prints this help message and exits.\n"
-         << XERCES_STD_QUALIFIER endl;
+         << std::endl;
 }
 
 // ---------------------------------------------------------------------------
@@ -81,8 +81,8 @@
 
     catch (const XMLException& toCatch)
     {
-         XERCES_STD_QUALIFIER cerr << "Error during initialization! :\n"
-              << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl;
+         std::cerr << "Error during initialization! :\n"
+              << StrX(toCatch.getMessage()) << std::endl;
          return 1;
     }
 
@@ -110,37 +110,37 @@
     XIncludeErrorHandler errorHandler;
     config->setParameter(XMLUni::fgDOMErrorHandler, &errorHandler);
 
-    XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *doc = 0;
+    xercesc::DOMDocument *doc = 0;
 
     try
     {
         // load up the test source document
-		XERCES_STD_QUALIFIER cerr << "Parse " << testFileName << " in progress ...";
+		std::cerr << "Parse " << testFileName << " in progress ...";
         parser->resetDocumentPool();
 		doc = parser->parseURI(testFileName);
-		XERCES_STD_QUALIFIER cerr << " finished." << XERCES_STD_QUALIFIER endl;
+		std::cerr << " finished." << std::endl;
     }
     catch (const XMLException& toCatch)
     {
-        XERCES_STD_QUALIFIER cerr << "\nError during parsing: '" << testFileName << "'\n"
+        std::cerr << "\nError during parsing: '" << testFileName << "'\n"
                 << "Exception message is:  \n"
-                << StrX(toCatch.getMessage()) << "\n" << XERCES_STD_QUALIFIER endl;
+                << StrX(toCatch.getMessage()) << "\n" << std::endl;
     }
     catch (const DOMException& toCatch)
     {
         const unsigned int maxChars = 2047;
         XMLCh errText[maxChars + 1];
 
-        XERCES_STD_QUALIFIER cerr << "\nDOM Error during parsing: '" << testFileName << "'\n"
-                << "DOMException code is:  " << toCatch.code << XERCES_STD_QUALIFIER endl;
+        std::cerr << "\nDOM Error during parsing: '" << testFileName << "'\n"
+                << "DOMException code is:  " << toCatch.code << std::endl;
 
         if (DOMImplementation::loadDOMExceptionMsg(toCatch.code, errText, maxChars))
-                XERCES_STD_QUALIFIER cerr << "Message is: " << StrX(errText) << XERCES_STD_QUALIFIER endl;
+                std::cerr << "Message is: " << StrX(errText) << std::endl;
 
     }
     catch (...)
     {
-        XERCES_STD_QUALIFIER cerr << "\nUnexpected exception during parsing: '" << testFileName << "'\n";
+        std::cerr << "\nUnexpected exception during parsing: '" << testFileName << "'\n";
     }
 
     if (!errorHandler.getSawErrors() && doc) {
@@ -149,7 +149,7 @@
 
 		try {
 			// write out the results
-			XERCES_STD_QUALIFIER cerr << "Writing result to: " << outputFileName << XERCES_STD_QUALIFIER endl;
+			std::cerr << "Writing result to: " << outputFileName << std::endl;
 
 			XMLFormatTarget *myFormTarget = new LocalFileFormatTarget(outputFileName);
 			theOutputDesc->setByteStream(myFormTarget);
@@ -158,24 +158,24 @@
 		}
 		catch (const XMLException& toCatch)
 		{
-		    XERCES_STD_QUALIFIER cerr << "\nXMLException during writing: '" << testFileName << "'\n"
+		    std::cerr << "\nXMLException during writing: '" << testFileName << "'\n"
 				<< "Exception message is:  \n"
-				<< StrX(toCatch.getMessage()) << "\n" << XERCES_STD_QUALIFIER endl;
+				<< StrX(toCatch.getMessage()) << "\n" << std::endl;
 		}
 		catch (const DOMException& toCatch)
 		{
 			const unsigned int maxChars = 2047;
 			XMLCh errText[maxChars + 1];
 
-			XERCES_STD_QUALIFIER cerr << "\nDOM Error during writing: '" << testFileName << "'\n"
-				<< "DOMException code is:  " << toCatch.code << XERCES_STD_QUALIFIER endl;
+			std::cerr << "\nDOM Error during writing: '" << testFileName << "'\n"
+				<< "DOMException code is:  " << toCatch.code << std::endl;
 
 			if (DOMImplementation::loadDOMExceptionMsg(toCatch.code, errText, maxChars))
-				XERCES_STD_QUALIFIER cerr << "Message is: " << StrX(errText) << XERCES_STD_QUALIFIER endl;
+				std::cerr << "Message is: " << StrX(errText) << std::endl;
 		}
 		catch (...)
 		{
-			XERCES_STD_QUALIFIER cerr << "\nUnexpected exception during writing: '" << testFileName << "'\n";
+			std::cerr << "\nUnexpected exception during writing: '" << testFileName << "'\n";
 		}
         writer->release();
         theOutputDesc->release();
@@ -208,22 +208,22 @@
 {
 	bool continueParsing = true;
     if (domError.getSeverity() == DOMError::DOM_SEVERITY_WARNING)
-        XERCES_STD_QUALIFIER cerr << "\nWarning at file ";
+        std::cerr << "\nWarning at file ";
     else if (domError.getSeverity() == DOMError::DOM_SEVERITY_ERROR)
     {
-        XERCES_STD_QUALIFIER cerr << "\nError at file ";
+        std::cerr << "\nError at file ";
         fSawErrors = true;
     }
 	else {
-        XERCES_STD_QUALIFIER cerr << "\nFatal Error at file ";
+        std::cerr << "\nFatal Error at file ";
 		continueParsing = false;
         fSawErrors = true;
 	}
 
-    XERCES_STD_QUALIFIER cerr << StrX(domError.getLocation()->getURI())
+    std::cerr << StrX(domError.getLocation()->getURI())
          << ", line " << domError.getLocation()->getLineNumber()
          << ", char " << domError.getLocation()->getColumnNumber()
-         << "\n  Message: " << StrX(domError.getMessage()) << XERCES_STD_QUALIFIER endl;
+         << "\n  Message: " << StrX(domError.getMessage()) << std::endl;
 
     return continueParsing;
 }
diff --git a/samples/src/XInclude/XInclude.hpp b/samples/src/XInclude/XInclude.hpp
index 7791367..f9de09a 100644
--- a/samples/src/XInclude/XInclude.hpp
+++ b/samples/src/XInclude/XInclude.hpp
@@ -25,13 +25,9 @@
 #include <xercesc/dom/DOMErrorHandler.hpp>
 #include <xercesc/util/XMLString.hpp>
 
-#if defined(XERCES_NEW_IOSTREAMS)
 #include <iostream>
-#else
-#include <iostream.h>
-#endif
 
-XERCES_CPP_NAMESPACE_USE
+using namespace XERCES_CPP_NAMESPACE;
 
 // ---------------------------------------------------------------------------
 //  Simple error handler deriviative to install on parser
@@ -119,7 +115,7 @@
     char*   fLocalForm;
 };
 
-inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump)
+inline std::ostream& operator<<(std::ostream& target, const StrX& toDump)
 {
     target << toDump.localForm();
     return target;
diff --git a/scripts/makeStringDefinition.pl b/scripts/makeStringDefinition.pl
index e514f24..9dd6fbb 100755
--- a/scripts/makeStringDefinition.pl
+++ b/scripts/makeStringDefinition.pl
@@ -53,7 +53,7 @@
 
 Options:
     -h Displays this help message
-    -x add the XERCES_CPP_NAMESPACE_QUALIFIER before each item
+    -x add the xercesc::before each item
 EOF
     exit(1);
 }
@@ -84,12 +84,12 @@
     }
   }
 	if($opt_x) {
-			print "XERCES_CPP_NAMESPACE_QUALIFIER ";
+			print "xercesc::";
 	}
 	print "$ch, ";
 }
 
 	if($opt_x) {
-			print "XERCES_CPP_NAMESPACE_QUALIFIER ";
+			print "xercesc::";
 	}
 print "chNull };\n";
diff --git a/src/stricmp.c b/src/stricmp.c
index 9c9f467..58f04d7 100644
--- a/src/stricmp.c
+++ b/src/stricmp.c
@@ -22,12 +22,7 @@
 #include "stricmp.h"
 #include "config.h"
 
-#if HAVE_STRING_H
-#	include <string.h>
-#endif
-#if HAVE_STRINGS_H
-#	include <strings.h>
-#endif
+#include <string.h>
 
 int stricmp(const char* str1, const char* str2) 
 {
diff --git a/src/strnicmp.c b/src/strnicmp.c
index d5f498a..5b6418d 100644
--- a/src/strnicmp.c
+++ b/src/strnicmp.c
@@ -22,12 +22,7 @@
 #include "strnicmp.h"
 #include "config.h"
 
-#if HAVE_STRING_H
-#	include <string.h>
-#endif
-#if HAVE_STRINGS_H
-#	include <strings.h>
-#endif
+#include <string.h>
 
 int strnicmp(const char* str1, const char* str2, size_t count)
 {
diff --git a/src/xercesc/dom/DOMAttr.hpp b/src/xercesc/dom/DOMAttr.hpp
index b00caa8..5b974eb 100644
--- a/src/xercesc/dom/DOMAttr.hpp
+++ b/src/xercesc/dom/DOMAttr.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/dom/DOMNode.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class DOMElement;
 class DOMTypeInfo;
@@ -169,7 +169,7 @@
 
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/dom/DOMCDATASection.hpp b/src/xercesc/dom/DOMCDATASection.hpp
index 5975c01..35e1be8 100644
--- a/src/xercesc/dom/DOMCDATASection.hpp
+++ b/src/xercesc/dom/DOMCDATASection.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/dom/DOMText.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 /**
@@ -97,7 +97,7 @@
 
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/dom/DOMCharacterData.hpp b/src/xercesc/dom/DOMCharacterData.hpp
index f79154a..9eb4b76 100644
--- a/src/xercesc/dom/DOMCharacterData.hpp
+++ b/src/xercesc/dom/DOMCharacterData.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/dom/DOMNode.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 /**
@@ -208,7 +208,7 @@
 
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/dom/DOMComment.hpp b/src/xercesc/dom/DOMComment.hpp
index b0c9b53..b9ad918 100644
--- a/src/xercesc/dom/DOMComment.hpp
+++ b/src/xercesc/dom/DOMComment.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/dom/DOMCharacterData.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 /**
@@ -70,7 +70,7 @@
     //@}
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/dom/DOMConfiguration.hpp b/src/xercesc/dom/DOMConfiguration.hpp
index bbd8809..7103837 100644
--- a/src/xercesc/dom/DOMConfiguration.hpp
+++ b/src/xercesc/dom/DOMConfiguration.hpp
@@ -26,7 +26,7 @@
 #include <xercesc/util/RefVectorOf.hpp>
 #include <xercesc/dom/DOMStringList.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
  *   The DOMConfiguration interface represents the configuration of
@@ -445,7 +445,7 @@
     //@}
 };
 	
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif 
 
diff --git a/src/xercesc/dom/DOMDocument.hpp b/src/xercesc/dom/DOMDocument.hpp
index ae8e65c..ec234f4 100644
--- a/src/xercesc/dom/DOMDocument.hpp
+++ b/src/xercesc/dom/DOMDocument.hpp
@@ -28,7 +28,7 @@
 #include <xercesc/dom/DOMDocumentTraversal.hpp>
 #include <xercesc/dom/DOMXPathEvaluator.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class DOMConfiguration;
 class DOMDocumentType;
@@ -814,6 +814,6 @@
 
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/DOMDocumentFragment.hpp b/src/xercesc/dom/DOMDocumentFragment.hpp
index 8c55042..ae9a4ef 100644
--- a/src/xercesc/dom/DOMDocumentFragment.hpp
+++ b/src/xercesc/dom/DOMDocumentFragment.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/dom/DOMNode.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 /**
@@ -103,6 +103,6 @@
 
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/DOMDocumentRange.hpp b/src/xercesc/dom/DOMDocumentRange.hpp
index cee4010..b484800 100644
--- a/src/xercesc/dom/DOMDocumentRange.hpp
+++ b/src/xercesc/dom/DOMDocumentRange.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XercesDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 class DOMRange;
@@ -90,6 +90,6 @@
 };
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/DOMDocumentTraversal.hpp b/src/xercesc/dom/DOMDocumentTraversal.hpp
index b24e591..f6b5d03 100644
--- a/src/xercesc/dom/DOMDocumentTraversal.hpp
+++ b/src/xercesc/dom/DOMDocumentTraversal.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/dom/DOMNodeFilter.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 class DOMNode;
@@ -150,6 +150,6 @@
 };
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/DOMDocumentType.hpp b/src/xercesc/dom/DOMDocumentType.hpp
index ae91c2a..c031aac 100644
--- a/src/xercesc/dom/DOMDocumentType.hpp
+++ b/src/xercesc/dom/DOMDocumentType.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/dom/DOMNode.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 class DOMNamedNodeMap;
@@ -153,7 +153,7 @@
 
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/dom/DOMElement.hpp b/src/xercesc/dom/DOMElement.hpp
index 9527fea..8698f65 100644
--- a/src/xercesc/dom/DOMElement.hpp
+++ b/src/xercesc/dom/DOMElement.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/dom/DOMNode.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 class DOMAttr;
@@ -520,7 +520,7 @@
     //@}
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/dom/DOMEntity.hpp b/src/xercesc/dom/DOMEntity.hpp
index 8acea35..9c7f66a 100644
--- a/src/xercesc/dom/DOMEntity.hpp
+++ b/src/xercesc/dom/DOMEntity.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/dom/DOMNode.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
  * This interface represents an entity, either parsed or unparsed, in an XML
@@ -164,7 +164,7 @@
     //@}
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/dom/DOMEntityReference.hpp b/src/xercesc/dom/DOMEntityReference.hpp
index c88eb82..8d1d5d4 100644
--- a/src/xercesc/dom/DOMEntityReference.hpp
+++ b/src/xercesc/dom/DOMEntityReference.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/dom/DOMNode.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 /**
@@ -89,7 +89,7 @@
 
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/dom/DOMError.hpp b/src/xercesc/dom/DOMError.hpp
index a83c985..9f89227 100644
--- a/src/xercesc/dom/DOMError.hpp
+++ b/src/xercesc/dom/DOMError.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XercesDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class DOMLocator;
 
@@ -168,6 +168,6 @@
 
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/DOMErrorHandler.hpp b/src/xercesc/dom/DOMErrorHandler.hpp
index 70e061e..3a5414f 100644
--- a/src/xercesc/dom/DOMErrorHandler.hpp
+++ b/src/xercesc/dom/DOMErrorHandler.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XercesDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 class DOMError;
@@ -102,6 +102,6 @@
 
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/DOMException.cpp b/src/xercesc/dom/DOMException.cpp
index b284621..093c1cd 100644
--- a/src/xercesc/dom/DOMException.cpp
+++ b/src/xercesc/dom/DOMException.cpp
@@ -28,7 +28,7 @@
 
 #include "DOMException.hpp"
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Destructor and Constructor
@@ -81,4 +81,4 @@
       msg = other.fMsgOwned? XMLString::replicate(other.msg, other.fMemoryManager) : other.msg;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/dom/DOMException.hpp b/src/xercesc/dom/DOMException.hpp
index 29dc152..020231b 100644
--- a/src/xercesc/dom/DOMException.hpp
+++ b/src/xercesc/dom/DOMException.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/util/PlatformUtils.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 /**
@@ -252,6 +252,6 @@
     return msg;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/DOMImplementation.hpp b/src/xercesc/dom/DOMImplementation.hpp
index e03ee69..86390ca 100644
--- a/src/xercesc/dom/DOMImplementation.hpp
+++ b/src/xercesc/dom/DOMImplementation.hpp
@@ -28,7 +28,7 @@
 #include <xercesc/dom/DOMRangeException.hpp>
 #include <xercesc/util/PlatformUtils.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 class DOMDocument;
@@ -244,6 +244,6 @@
 
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/DOMImplementationLS.hpp b/src/xercesc/dom/DOMImplementationLS.hpp
index 9687c66..f99cc2d 100644
--- a/src/xercesc/dom/DOMImplementationLS.hpp
+++ b/src/xercesc/dom/DOMImplementationLS.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/PlatformUtils.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 class DOMLSParser;
@@ -178,6 +178,6 @@
 };
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/DOMImplementationList.hpp b/src/xercesc/dom/DOMImplementationList.hpp
index 449ba48..356bcd8 100644
--- a/src/xercesc/dom/DOMImplementationList.hpp
+++ b/src/xercesc/dom/DOMImplementationList.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XercesDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 class DOMImplementation;
@@ -119,6 +119,6 @@
 
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/DOMImplementationRegistry.hpp b/src/xercesc/dom/DOMImplementationRegistry.hpp
index 91ce67a..d90e8f6 100644
--- a/src/xercesc/dom/DOMImplementationRegistry.hpp
+++ b/src/xercesc/dom/DOMImplementationRegistry.hpp
@@ -38,7 +38,7 @@
 
 #include <xercesc/util/XercesDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 class DOMImplementation;
@@ -96,6 +96,6 @@
     DOMImplementationRegistry();
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/DOMImplementationSource.hpp b/src/xercesc/dom/DOMImplementationSource.hpp
index 7afc03a..c5e5e3a 100644
--- a/src/xercesc/dom/DOMImplementationSource.hpp
+++ b/src/xercesc/dom/DOMImplementationSource.hpp
@@ -33,7 +33,7 @@
   */
 #include <xercesc/util/XercesDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 class DOMImplementation;
@@ -107,6 +107,6 @@
 
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/DOMLSException.cpp b/src/xercesc/dom/DOMLSException.cpp
index 3e055c8..466a4a0 100644
--- a/src/xercesc/dom/DOMLSException.cpp
+++ b/src/xercesc/dom/DOMLSException.cpp
@@ -22,7 +22,7 @@
 #include "DOMLSException.hpp"
 #include <xercesc/util/XMLDOMMsg.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 DOMLSException::DOMLSException()
 : DOMException()
@@ -46,4 +46,4 @@
 {
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/dom/DOMLSException.hpp b/src/xercesc/dom/DOMLSException.hpp
index 862c02b..a8da6b5 100644
--- a/src/xercesc/dom/DOMLSException.hpp
+++ b/src/xercesc/dom/DOMLSException.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/dom/DOMException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 /**
@@ -118,6 +118,6 @@
     DOMLSException & operator = (const DOMLSException &);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/DOMLSInput.hpp b/src/xercesc/dom/DOMLSInput.hpp
index 1a6ebc8..4048bc0 100644
--- a/src/xercesc/dom/DOMLSInput.hpp
+++ b/src/xercesc/dom/DOMLSInput.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XercesDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 class InputSource;
@@ -269,6 +269,6 @@
 };
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/DOMLSOutput.hpp b/src/xercesc/dom/DOMLSOutput.hpp
index b59a6c0..df99d0d 100644
--- a/src/xercesc/dom/DOMLSOutput.hpp
+++ b/src/xercesc/dom/DOMLSOutput.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XercesDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 class XMLFormatTarget;
@@ -164,6 +164,6 @@
 };
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/DOMLSParser.hpp b/src/xercesc/dom/DOMLSParser.hpp
index dabdffc..c7a28b9 100644
--- a/src/xercesc/dom/DOMLSParser.hpp
+++ b/src/xercesc/dom/DOMLSParser.hpp
@@ -28,7 +28,7 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/validators/common/Grammar.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 class DOMErrorHandler;
@@ -761,6 +761,6 @@
 };
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/DOMLSParserFilter.hpp b/src/xercesc/dom/DOMLSParserFilter.hpp
index f72c83b..0a19e95 100644
--- a/src/xercesc/dom/DOMLSParserFilter.hpp
+++ b/src/xercesc/dom/DOMLSParserFilter.hpp
@@ -37,7 +37,7 @@
 
 #include <xercesc/dom/DOMNodeFilter.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class DOMElement;
 class DOMNode;
@@ -159,6 +159,6 @@
     //@}
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/DOMLSResourceResolver.hpp b/src/xercesc/dom/DOMLSResourceResolver.hpp
index e2d740c..84aa04f 100644
--- a/src/xercesc/dom/DOMLSResourceResolver.hpp
+++ b/src/xercesc/dom/DOMLSResourceResolver.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XercesDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 class DOMLSInput;
@@ -138,6 +138,6 @@
 
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/DOMLSSerializer.hpp b/src/xercesc/dom/DOMLSSerializer.hpp
index 8bb4ff7..785823c 100644
--- a/src/xercesc/dom/DOMLSSerializer.hpp
+++ b/src/xercesc/dom/DOMLSSerializer.hpp
@@ -268,7 +268,7 @@
 #include <xercesc/dom/DOMErrorHandler.hpp>
 #include <xercesc/dom/DOMConfiguration.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class DOMLSOutput;
 
@@ -542,6 +542,6 @@
 
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/DOMLSSerializerFilter.hpp b/src/xercesc/dom/DOMLSSerializerFilter.hpp
index 12b048c..4f2bdb5 100644
--- a/src/xercesc/dom/DOMLSSerializerFilter.hpp
+++ b/src/xercesc/dom/DOMLSSerializerFilter.hpp
@@ -41,7 +41,7 @@
 
 #include <xercesc/dom/DOMNodeFilter.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 class CDOM_EXPORT DOMLSSerializerFilter : public DOMNodeFilter {
@@ -102,6 +102,6 @@
     //@}
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/DOMLocator.hpp b/src/xercesc/dom/DOMLocator.hpp
index 18b3c6a..50f7119 100644
--- a/src/xercesc/dom/DOMLocator.hpp
+++ b/src/xercesc/dom/DOMLocator.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XercesDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 class DOMNode;
@@ -130,6 +130,6 @@
     //@}
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/DOMMemoryManager.hpp b/src/xercesc/dom/DOMMemoryManager.hpp
index c1dd83c..97609f2 100644
--- a/src/xercesc/dom/DOMMemoryManager.hpp
+++ b/src/xercesc/dom/DOMMemoryManager.hpp
@@ -22,7 +22,7 @@
 //  Includes
 //------------------------------------------------------------------------------------
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
   * The <code>DOMMemoryManager</code> interface exposes the memory allocation-related
@@ -151,7 +151,7 @@
 
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/dom/DOMNamedNodeMap.hpp b/src/xercesc/dom/DOMNamedNodeMap.hpp
index b13d188..f802369 100644
--- a/src/xercesc/dom/DOMNamedNodeMap.hpp
+++ b/src/xercesc/dom/DOMNamedNodeMap.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XercesDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 class DOMNode;
@@ -240,6 +240,6 @@
 
 #define GetDOMNamedNodeMapMemoryManager   GET_INDIRECT_MM(fOwnerNode)
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/DOMNode.hpp b/src/xercesc/dom/DOMNode.hpp
index 49d45f2..f108548 100644
--- a/src/xercesc/dom/DOMNode.hpp
+++ b/src/xercesc/dom/DOMNode.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XercesDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 class DOMDocument;
@@ -920,6 +920,6 @@
 ***/
 #define GetDOMNodeMemoryManager GET_INDIRECT_MM(this)
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/DOMNodeFilter.hpp b/src/xercesc/dom/DOMNodeFilter.hpp
index 0373aff..7fba2fa 100644
--- a/src/xercesc/dom/DOMNodeFilter.hpp
+++ b/src/xercesc/dom/DOMNodeFilter.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/dom/DOMNode.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 /**
@@ -216,6 +216,6 @@
 
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/DOMNodeIterator.hpp b/src/xercesc/dom/DOMNodeIterator.hpp
index cc08e72..4124c11 100644
--- a/src/xercesc/dom/DOMNodeIterator.hpp
+++ b/src/xercesc/dom/DOMNodeIterator.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/dom/DOMNodeFilter.hpp>
 #include <xercesc/dom/DOMNode.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 /**
@@ -191,6 +191,6 @@
 
 #define GetDOMNodeIteratorMemoryManager GET_DIRECT_MM(fDocument)
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/DOMNodeList.hpp b/src/xercesc/dom/DOMNodeList.hpp
index 52249cf..5c7444a 100644
--- a/src/xercesc/dom/DOMNodeList.hpp
+++ b/src/xercesc/dom/DOMNodeList.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XercesDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 class DOMNode;
@@ -107,6 +107,6 @@
     //@}
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/DOMNotation.hpp b/src/xercesc/dom/DOMNotation.hpp
index 26811b3..74cbec8 100644
--- a/src/xercesc/dom/DOMNotation.hpp
+++ b/src/xercesc/dom/DOMNotation.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/dom/DOMNode.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 /**
@@ -107,7 +107,7 @@
     //@}
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/dom/DOMPSVITypeInfo.hpp b/src/xercesc/dom/DOMPSVITypeInfo.hpp
index 8ccd1fb..e4a52e0 100644
--- a/src/xercesc/dom/DOMPSVITypeInfo.hpp
+++ b/src/xercesc/dom/DOMPSVITypeInfo.hpp
@@ -24,7 +24,7 @@
 #include <xercesc/util/XMLString.hpp>
 
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
   * The <code>DOMPSVITypeInfo</code> interface represent the PSVI info used by 
@@ -109,7 +109,7 @@
     //@}
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/dom/DOMProcessingInstruction.hpp b/src/xercesc/dom/DOMProcessingInstruction.hpp
index fe89606..27e5d15 100644
--- a/src/xercesc/dom/DOMProcessingInstruction.hpp
+++ b/src/xercesc/dom/DOMProcessingInstruction.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/dom/DOMNode.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 /**
@@ -115,7 +115,7 @@
 
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/dom/DOMRange.hpp b/src/xercesc/dom/DOMRange.hpp
index 3aec0de..011ceb0 100644
--- a/src/xercesc/dom/DOMRange.hpp
+++ b/src/xercesc/dom/DOMRange.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XercesDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class DOMNode;
 class DOMDocumentFragment;
@@ -525,6 +525,6 @@
 };
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/DOMRangeException.cpp b/src/xercesc/dom/DOMRangeException.cpp
index dc8c355..078de90 100644
--- a/src/xercesc/dom/DOMRangeException.cpp
+++ b/src/xercesc/dom/DOMRangeException.cpp
@@ -22,7 +22,7 @@
 #include "DOMRangeException.hpp"
 #include <xercesc/util/XMLDOMMsg.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 DOMRangeException::DOMRangeException()
@@ -49,4 +49,4 @@
 {
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/dom/DOMRangeException.hpp b/src/xercesc/dom/DOMRangeException.hpp
index 34eb342..1f3315a 100644
--- a/src/xercesc/dom/DOMRangeException.hpp
+++ b/src/xercesc/dom/DOMRangeException.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/dom/DOMException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
  * Range operations may throw a <code>DOMRangeException</code> as specified in
@@ -109,6 +109,6 @@
     DOMRangeException & operator = (const DOMRangeException &);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/DOMStringList.hpp b/src/xercesc/dom/DOMStringList.hpp
index c0ac421..8ea0312 100644
--- a/src/xercesc/dom/DOMStringList.hpp
+++ b/src/xercesc/dom/DOMStringList.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XercesDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 /**
@@ -126,6 +126,6 @@
 
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/DOMText.hpp b/src/xercesc/dom/DOMText.hpp
index ab5a0b1..33c0091 100644
--- a/src/xercesc/dom/DOMText.hpp
+++ b/src/xercesc/dom/DOMText.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/dom/DOMCharacterData.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 /**
@@ -175,7 +175,7 @@
 };
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/dom/DOMTreeWalker.hpp b/src/xercesc/dom/DOMTreeWalker.hpp
index bd8ce4b..c016aa1 100644
--- a/src/xercesc/dom/DOMTreeWalker.hpp
+++ b/src/xercesc/dom/DOMTreeWalker.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/dom/DOMNode.hpp>
 #include <xercesc/dom/DOMNodeFilter.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 /**
@@ -271,6 +271,6 @@
 
 #define GetDOMTreeWalkerMemoryManager GET_INDIRECT_MM(fCurrentNode)
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/DOMTypeInfo.hpp b/src/xercesc/dom/DOMTypeInfo.hpp
index 4e22b8d..48a085e 100644
--- a/src/xercesc/dom/DOMTypeInfo.hpp
+++ b/src/xercesc/dom/DOMTypeInfo.hpp
@@ -24,7 +24,7 @@
 #include <xercesc/util/XMLString.hpp>
 
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
   * The <code>DOMTypeInfo</code> interface represent a type used by
@@ -187,7 +187,7 @@
     //@}
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/dom/DOMUserDataHandler.hpp b/src/xercesc/dom/DOMUserDataHandler.hpp
index 8487f29..aba0af8 100644
--- a/src/xercesc/dom/DOMUserDataHandler.hpp
+++ b/src/xercesc/dom/DOMUserDataHandler.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/dom/DOMNode.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
  * When associating an object to a key on a node using <code>setUserData</code>
@@ -134,7 +134,7 @@
 
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/dom/DOMXPathEvaluator.hpp b/src/xercesc/dom/DOMXPathEvaluator.hpp
index 84d8eb2..47169ed 100644
--- a/src/xercesc/dom/DOMXPathEvaluator.hpp
+++ b/src/xercesc/dom/DOMXPathEvaluator.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/dom/DOMXPathResult.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class DOMXPathNSResolver;
 class DOMXPathExpression;
@@ -175,6 +175,6 @@
     //@}
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/DOMXPathException.cpp b/src/xercesc/dom/DOMXPathException.cpp
index 8e4877e..0e0bd30 100644
--- a/src/xercesc/dom/DOMXPathException.cpp
+++ b/src/xercesc/dom/DOMXPathException.cpp
@@ -22,7 +22,7 @@
 #include <xercesc/util/XMLDOMMsg.hpp>
 #include "impl/DOMImplementationImpl.hpp"
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 DOMXPathException::DOMXPathException()
@@ -49,4 +49,4 @@
 {
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/dom/DOMXPathException.hpp b/src/xercesc/dom/DOMXPathException.hpp
index b276353..7ad9114 100644
--- a/src/xercesc/dom/DOMXPathException.hpp
+++ b/src/xercesc/dom/DOMXPathException.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/dom/DOMException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
  * @since DOM Level 3
@@ -100,6 +100,6 @@
     DOMXPathException& operator = (const DOMXPathException&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/DOMXPathExpression.hpp b/src/xercesc/dom/DOMXPathExpression.hpp
index 9ffd144..cfe0969 100644
--- a/src/xercesc/dom/DOMXPathExpression.hpp
+++ b/src/xercesc/dom/DOMXPathExpression.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/dom/DOMXPathResult.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class DOMNode;
 
@@ -124,6 +124,6 @@
 
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/DOMXPathNSResolver.hpp b/src/xercesc/dom/DOMXPathNSResolver.hpp
index d486661..98c80d8 100644
--- a/src/xercesc/dom/DOMXPathNSResolver.hpp
+++ b/src/xercesc/dom/DOMXPathNSResolver.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XercesDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 /**
  * The <code>DOMXPathNSResolver</code> interface permit prefix strings
  * in the expression to be properly bound to namespaceURI strings.
@@ -125,6 +125,6 @@
     //@}
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/DOMXPathNamespace.hpp b/src/xercesc/dom/DOMXPathNamespace.hpp
index 81f634f..40a828a 100644
--- a/src/xercesc/dom/DOMXPathNamespace.hpp
+++ b/src/xercesc/dom/DOMXPathNamespace.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/dom/DOMNode.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class DOMElement;
 
@@ -110,6 +110,6 @@
     //@}
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/DOMXPathResult.hpp b/src/xercesc/dom/DOMXPathResult.hpp
index bc584b6..443647d 100644
--- a/src/xercesc/dom/DOMXPathResult.hpp
+++ b/src/xercesc/dom/DOMXPathResult.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XercesDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class DOMXPathNSResolver;
 class DOMXPathExpression;
@@ -346,6 +346,6 @@
     //@}
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/StDOMNode.hpp b/src/xercesc/dom/StDOMNode.hpp
index 49cec3a..66fe32a 100644
--- a/src/xercesc/dom/StDOMNode.hpp
+++ b/src/xercesc/dom/StDOMNode.hpp
@@ -26,7 +26,7 @@
 #include <xercesc/dom/DOMAttr.hpp>
 #include <xercesc/dom/DOMElement.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /* This class is a smart pointer implementation over DOMNode interface and
 ** classes derived from it. It takes care of reference counting automatically.
@@ -89,7 +89,7 @@
     typedef DOMElement* DOMElementSPtr;
 #endif
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/dom/impl/DOMAttrImpl.cpp b/src/xercesc/dom/impl/DOMAttrImpl.cpp
index 8702284..de2e6c7 100644
--- a/src/xercesc/dom/impl/DOMAttrImpl.cpp
+++ b/src/xercesc/dom/impl/DOMAttrImpl.cpp
@@ -28,7 +28,7 @@
 #include "DOMCasts.hpp"
 #include "DOMTypeInfoImpl.hpp"
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 DOMAttrImpl::DOMAttrImpl(DOMDocument *ownerDoc, const XMLCh *aName)
     : fNode(this, ownerDoc), fParent(this, ownerDoc), fSchemaType(0)
@@ -363,4 +363,4 @@
 DOMNODEIMPL_IMPL(DOMAttrImpl);
 DOMPARENTIMPL_IMPL(DOMAttrImpl);
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/dom/impl/DOMAttrImpl.hpp b/src/xercesc/dom/impl/DOMAttrImpl.hpp
index 8c6a5ae..9de15cc 100644
--- a/src/xercesc/dom/impl/DOMAttrImpl.hpp
+++ b/src/xercesc/dom/impl/DOMAttrImpl.hpp
@@ -41,7 +41,7 @@
 #include <xercesc/framework/XMLBuffer.hpp>
 #include "DOMNodeIDMap.hpp"
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class DOMElementImpl;
 class DOMTypeInfoImpl;
@@ -137,6 +137,6 @@
     doc->getNodeIDMap()->add(this);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/impl/DOMAttrMapImpl.cpp b/src/xercesc/dom/impl/DOMAttrMapImpl.cpp
index 00014f2..f3c9abe 100644
--- a/src/xercesc/dom/impl/DOMAttrMapImpl.cpp
+++ b/src/xercesc/dom/impl/DOMAttrMapImpl.cpp
@@ -30,7 +30,7 @@
 #include <xercesc/dom/DOMAttr.hpp>
 #include <xercesc/dom/DOMException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 DOMAttrMapImpl::DOMAttrMapImpl(DOMNode *ownerNod)
 {
@@ -491,4 +491,4 @@
   }
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/dom/impl/DOMAttrMapImpl.hpp b/src/xercesc/dom/impl/DOMAttrMapImpl.hpp
index eeebf40..909dd7b 100644
--- a/src/xercesc/dom/impl/DOMAttrMapImpl.hpp
+++ b/src/xercesc/dom/impl/DOMAttrMapImpl.hpp
@@ -34,7 +34,7 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/dom/DOMNamedNodeMap.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class DOMNode;
 class DOMNodeVector;
@@ -119,7 +119,7 @@
     attrDefaults = value;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 
 #endif
diff --git a/src/xercesc/dom/impl/DOMAttrNSImpl.cpp b/src/xercesc/dom/impl/DOMAttrNSImpl.cpp
index 5a82f98..2d0e88f 100644
--- a/src/xercesc/dom/impl/DOMAttrNSImpl.cpp
+++ b/src/xercesc/dom/impl/DOMAttrNSImpl.cpp
@@ -28,7 +28,7 @@
 
 #include "assert.h"
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 DOMAttrNSImpl::DOMAttrNSImpl(DOMDocument *ownerDoc, const XMLCh *nam) :
 DOMAttrImpl(ownerDoc, nam)
@@ -244,4 +244,4 @@
     this -> fNamespaceURI = (URI == 0) ? 0 : ownerDoc->getPooledString(URI);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/dom/impl/DOMAttrNSImpl.hpp b/src/xercesc/dom/impl/DOMAttrNSImpl.hpp
index c612267..0eb1c26 100644
--- a/src/xercesc/dom/impl/DOMAttrNSImpl.hpp
+++ b/src/xercesc/dom/impl/DOMAttrNSImpl.hpp
@@ -33,7 +33,7 @@
 
 #include "DOMAttrImpl.hpp"
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 class CDOM_EXPORT DOMAttrNSImpl: public DOMAttrImpl {
@@ -80,6 +80,6 @@
     DOMAttrNSImpl & operator = (const DOMAttrNSImpl &);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/impl/DOMCDATASectionImpl.cpp b/src/xercesc/dom/impl/DOMCDATASectionImpl.cpp
index 19dd491..249f3d5 100644
--- a/src/xercesc/dom/impl/DOMCDATASectionImpl.cpp
+++ b/src/xercesc/dom/impl/DOMCDATASectionImpl.cpp
@@ -30,7 +30,7 @@
 #include <xercesc/dom/DOMTreeWalker.hpp>
 #include <xercesc/util/XMLUniDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 DOMCDATASectionImpl::DOMCDATASectionImpl(DOMDocument *ownerDoc, const XMLCh *dat)
     : fNode(this, ownerDoc), fCharacterData(ownerDoc, dat)
@@ -320,4 +320,4 @@
 DOMNODEIMPL_IMPL(DOMCDATASectionImpl);
 DOMCHILDIMPL_IMPL(DOMCDATASectionImpl);
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/dom/impl/DOMCDATASectionImpl.hpp b/src/xercesc/dom/impl/DOMCDATASectionImpl.hpp
index d141deb..6cf9f0e 100644
--- a/src/xercesc/dom/impl/DOMCDATASectionImpl.hpp
+++ b/src/xercesc/dom/impl/DOMCDATASectionImpl.hpp
@@ -40,7 +40,7 @@
 #include "DOMParentNode.hpp"
 #include "DOMCharacterDataImpl.hpp"
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 class CDOM_EXPORT DOMCDATASectionImpl: public DOMCDATASection, public HasDOMNodeImpl, public HasDOMChildImpl {
@@ -98,6 +98,6 @@
     DOMCDATASectionImpl & operator = (const DOMCDATASectionImpl &);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/impl/DOMCasts.hpp b/src/xercesc/dom/impl/DOMCasts.hpp
index 7d99dae..0b02c54 100644
--- a/src/xercesc/dom/impl/DOMCasts.hpp
+++ b/src/xercesc/dom/impl/DOMCasts.hpp
@@ -51,7 +51,7 @@
 #include "DOMElementImpl.hpp"
 #include "DOMTextImpl.hpp"
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 static inline const DOMNodeImpl *castToNodeImpl(const DOMNode *p)
@@ -104,6 +104,6 @@
     return pE->getChildNodeImpl();
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/impl/DOMCharacterDataImpl.cpp b/src/xercesc/dom/impl/DOMCharacterDataImpl.cpp
index ad3a6ca..5ca7d86 100644
--- a/src/xercesc/dom/impl/DOMCharacterDataImpl.cpp
+++ b/src/xercesc/dom/impl/DOMCharacterDataImpl.cpp
@@ -28,7 +28,7 @@
 #include "DOMStringPool.hpp"
 #include <xercesc/util/XMLUniDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 DOMCharacterDataImpl::DOMCharacterDataImpl(DOMDocument *doc, const XMLCh *dat)
 {
@@ -325,4 +325,4 @@
     fDoc->releaseBuffer(fDataBuf);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/dom/impl/DOMCharacterDataImpl.hpp b/src/xercesc/dom/impl/DOMCharacterDataImpl.hpp
index 55c9495..c4f5797 100644
--- a/src/xercesc/dom/impl/DOMCharacterDataImpl.hpp
+++ b/src/xercesc/dom/impl/DOMCharacterDataImpl.hpp
@@ -34,7 +34,7 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/util/XMLString.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 class DOMNode;
@@ -84,7 +84,7 @@
 
 #define GetDOMCharacterDataImplMemoryManager GET_DIRECT_MM(fDoc)
 
-XERCES_CPP_NAMESPACE_END
+}
 
 
 #endif
diff --git a/src/xercesc/dom/impl/DOMChildNode.cpp b/src/xercesc/dom/impl/DOMChildNode.cpp
index 5076230..496c21c 100644
--- a/src/xercesc/dom/impl/DOMChildNode.cpp
+++ b/src/xercesc/dom/impl/DOMChildNode.cpp
@@ -26,7 +26,7 @@
 #include "DOMChildNode.hpp"
 #include "DOMCasts.hpp"
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 DOMChildNode::DOMChildNode()
@@ -74,5 +74,5 @@
     return castToNodeImpl(thisNode)->isFirstChild() ? 0 : previousSibling;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
diff --git a/src/xercesc/dom/impl/DOMChildNode.hpp b/src/xercesc/dom/impl/DOMChildNode.hpp
index 5cacbf0..8225573 100644
--- a/src/xercesc/dom/impl/DOMChildNode.hpp
+++ b/src/xercesc/dom/impl/DOMChildNode.hpp
@@ -38,7 +38,7 @@
 
 #include <xercesc/util/XercesDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 class DOMDocument;
@@ -67,6 +67,6 @@
 };
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/impl/DOMCommentImpl.cpp b/src/xercesc/dom/impl/DOMCommentImpl.cpp
index cfe7b2a..07ff462 100644
--- a/src/xercesc/dom/impl/DOMCommentImpl.cpp
+++ b/src/xercesc/dom/impl/DOMCommentImpl.cpp
@@ -29,7 +29,7 @@
 #include <xercesc/dom/DOMException.hpp>
 #include <xercesc/util/XMLUniDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 DOMCommentImpl::DOMCommentImpl(DOMDocument *ownerDoc, const XMLCh *dat)
     : fNode(this, ownerDoc),  fCharacterData(ownerDoc, dat)
@@ -190,4 +190,4 @@
 DOMNODEIMPL_IMPL(DOMCommentImpl);
 DOMCHILDIMPL_IMPL(DOMCommentImpl);
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/dom/impl/DOMCommentImpl.hpp b/src/xercesc/dom/impl/DOMCommentImpl.hpp
index 45c6eed..cc824cc 100644
--- a/src/xercesc/dom/impl/DOMCommentImpl.hpp
+++ b/src/xercesc/dom/impl/DOMCommentImpl.hpp
@@ -40,7 +40,7 @@
 #include "DOMChildNode.hpp"
 #include "DOMCharacterDataImpl.hpp"
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 class CDOM_EXPORT DOMCommentImpl: public DOMComment, public HasDOMNodeImpl, public HasDOMChildImpl {
@@ -83,7 +83,7 @@
     DOMCommentImpl & operator = (const DOMCommentImpl &);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/dom/impl/DOMConfigurationImpl.cpp b/src/xercesc/dom/impl/DOMConfigurationImpl.cpp
index fa4fb87..d298439 100644
--- a/src/xercesc/dom/impl/DOMConfigurationImpl.cpp
+++ b/src/xercesc/dom/impl/DOMConfigurationImpl.cpp
@@ -22,7 +22,7 @@
 #include <xercesc/util/XMLUniDefs.hpp>
 #include <xercesc/dom/DOMException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 const unsigned short DOMConfigurationImpl::fDEFAULT_VALUES = 0x2596;
 
@@ -263,7 +263,7 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
 
 /**
diff --git a/src/xercesc/dom/impl/DOMConfigurationImpl.hpp b/src/xercesc/dom/impl/DOMConfigurationImpl.hpp
index 91033a1..cff054d 100644
--- a/src/xercesc/dom/impl/DOMConfigurationImpl.hpp
+++ b/src/xercesc/dom/impl/DOMConfigurationImpl.hpp
@@ -34,7 +34,7 @@
 #include <xercesc/dom/DOMErrorHandler.hpp>
 #include <xercesc/util/XMLString.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class DOMDocumentImpl;
 class DOMStringListImpl;
@@ -141,7 +141,7 @@
     MemoryManager* fMemoryManager;
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/dom/impl/DOMDeepNodeListImpl.cpp b/src/xercesc/dom/impl/DOMDeepNodeListImpl.cpp
index 84c349a..54315b8 100644
--- a/src/xercesc/dom/impl/DOMDeepNodeListImpl.cpp
+++ b/src/xercesc/dom/impl/DOMDeepNodeListImpl.cpp
@@ -27,7 +27,7 @@
 #include <xercesc/util/XMLUniDefs.hpp>
 #include <limits.h>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 static const XMLCh kAstr[] = {chAsterisk, chNull};
@@ -216,4 +216,4 @@
     return 0;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/dom/impl/DOMDeepNodeListImpl.hpp b/src/xercesc/dom/impl/DOMDeepNodeListImpl.hpp
index 9b040da..2038244 100644
--- a/src/xercesc/dom/impl/DOMDeepNodeListImpl.hpp
+++ b/src/xercesc/dom/impl/DOMDeepNodeListImpl.hpp
@@ -34,7 +34,7 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/dom/DOMNodeList.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 class DOMNode;
@@ -75,6 +75,6 @@
     DOMDeepNodeListImpl & operator = (const DOMDeepNodeListImpl &);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/impl/DOMDeepNodeListPool.c b/src/xercesc/dom/impl/DOMDeepNodeListPool.c
index 7b3521d..408145d 100644
--- a/src/xercesc/dom/impl/DOMDeepNodeListPool.c
+++ b/src/xercesc/dom/impl/DOMDeepNodeListPool.c
@@ -30,7 +30,7 @@
 
 #include <assert.h>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 
@@ -425,4 +425,4 @@
     return 0;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/dom/impl/DOMDeepNodeListPool.hpp b/src/xercesc/dom/impl/DOMDeepNodeListPool.hpp
index 5eecc36..c59154a 100644
--- a/src/xercesc/dom/impl/DOMDeepNodeListPool.hpp
+++ b/src/xercesc/dom/impl/DOMDeepNodeListPool.hpp
@@ -39,7 +39,7 @@
 #include <xercesc/util/XMLExceptMsgs.hpp>
 #include <xercesc/util/XMLEnumerator.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //
 //  This should really be a nested class, but some of the compilers we
@@ -191,7 +191,7 @@
     THasher                                    fHasher;
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #if !defined(XERCES_TMPLSINC)
 #include <xercesc/dom/impl/DOMDeepNodeListPool.c>
diff --git a/src/xercesc/dom/impl/DOMDocumentFragmentImpl.cpp b/src/xercesc/dom/impl/DOMDocumentFragmentImpl.cpp
index 0718418..0e50782 100644
--- a/src/xercesc/dom/impl/DOMDocumentFragmentImpl.cpp
+++ b/src/xercesc/dom/impl/DOMDocumentFragmentImpl.cpp
@@ -26,7 +26,7 @@
 #include <xercesc/dom/DOMException.hpp>
 #include <xercesc/util/XMLUniDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 DOMDocumentFragmentImpl::DOMDocumentFragmentImpl(DOMDocument *masterDoc)
     : fNode(this, masterDoc), fParent(this, masterDoc)
@@ -138,4 +138,4 @@
 DOMNODEIMPL_IMPL(DOMDocumentFragmentImpl);
 DOMPARENTIMPL_IMPL(DOMDocumentFragmentImpl);
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/dom/impl/DOMDocumentFragmentImpl.hpp b/src/xercesc/dom/impl/DOMDocumentFragmentImpl.hpp
index dfdd626..dacae89 100644
--- a/src/xercesc/dom/impl/DOMDocumentFragmentImpl.hpp
+++ b/src/xercesc/dom/impl/DOMDocumentFragmentImpl.hpp
@@ -37,7 +37,7 @@
 #include "DOMParentNode.hpp"
 #include "DOMNodeImpl.hpp"
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 class CDOM_EXPORT DOMDocumentFragmentImpl: public DOMDocumentFragment,
@@ -69,7 +69,7 @@
     DOMPARENTIMPL_DECL;
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/dom/impl/DOMDocumentImpl.cpp b/src/xercesc/dom/impl/DOMDocumentImpl.cpp
index b1b16c3..f2de623 100644
--- a/src/xercesc/dom/impl/DOMDocumentImpl.cpp
+++ b/src/xercesc/dom/impl/DOMDocumentImpl.cpp
@@ -50,7 +50,7 @@
 #include <xercesc/util/XMLInitializer.hpp>
 #include <xercesc/util/Janitor.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // The chunk size to allocate from the system allocator.
 static XMLSize_t kInitialHeapAllocSize =  0x4000;
@@ -1534,4 +1534,4 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/dom/impl/DOMDocumentImpl.hpp b/src/xercesc/dom/impl/DOMDocumentImpl.hpp
index c748e0a..81e03ab 100644
--- a/src/xercesc/dom/impl/DOMDocumentImpl.hpp
+++ b/src/xercesc/dom/impl/DOMDocumentImpl.hpp
@@ -46,7 +46,7 @@
 #include "DOMParentNode.hpp"
 #include "DOMDeepNodeListPool.hpp"
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 class DOMAttrImpl;
@@ -452,7 +452,7 @@
   return colon != -1 ? colon : 0;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 // ---------------------------------------------------------------------------
 //
@@ -460,30 +460,30 @@
 //                 the heap owned by a document.
 //
 // ---------------------------------------------------------------------------
-inline void * operator new(size_t amt, XERCES_CPP_NAMESPACE_QUALIFIER DOMDocumentImpl *doc, XERCES_CPP_NAMESPACE_QUALIFIER DOMMemoryManager::NodeObjectType type)
+inline void * operator new(size_t amt, xercesc::DOMDocumentImpl *doc, xercesc::DOMMemoryManager::NodeObjectType type)
 {
     void *p = doc->allocate(amt, type);
     return p;
 }
 
-inline void * operator new(size_t amt, XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *doc, XERCES_CPP_NAMESPACE_QUALIFIER DOMMemoryManager::NodeObjectType type)
+inline void * operator new(size_t amt, xercesc::DOMDocument *doc, xercesc::DOMMemoryManager::NodeObjectType type)
 {
-    XERCES_CPP_NAMESPACE_QUALIFIER DOMMemoryManager* mgr=(XERCES_CPP_NAMESPACE_QUALIFIER DOMMemoryManager*)doc->getFeature(XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgXercescInterfaceDOMMemoryManager,0);
+    xercesc::DOMMemoryManager* mgr=(xercesc::DOMMemoryManager*)doc->getFeature(xercesc::XMLUni::fgXercescInterfaceDOMMemoryManager,0);
     void* p=0;
     if(mgr)
         p = mgr->allocate(amt, type);
     return p;
 }
 
-inline void * operator new(size_t amt, XERCES_CPP_NAMESPACE_QUALIFIER DOMDocumentImpl *doc)
+inline void * operator new(size_t amt, xercesc::DOMDocumentImpl *doc)
 {
     void* p = doc->allocate(amt);
     return p;
 }
 
-inline void * operator new(size_t amt, XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *doc)
+inline void * operator new(size_t amt, xercesc::DOMDocument *doc)
 {
-    XERCES_CPP_NAMESPACE_QUALIFIER DOMMemoryManager* mgr=(XERCES_CPP_NAMESPACE_QUALIFIER DOMMemoryManager*)doc->getFeature(XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgXercescInterfaceDOMMemoryManager,0);
+    xercesc::DOMMemoryManager* mgr=(xercesc::DOMMemoryManager*)doc->getFeature(xercesc::XMLUni::fgXercescInterfaceDOMMemoryManager,0);
     void* p=0;
     if(mgr)
         p = mgr->allocate(amt);
@@ -496,20 +496,20 @@
 //    no matching operator delete found; memory will not be freed if initialization throws an exception
 // ---------------------------------------------------------------------------
 #if !defined(XERCES_NO_MATCHING_DELETE_OPERATOR)
-inline void operator delete(void* /*ptr*/, XERCES_CPP_NAMESPACE_QUALIFIER DOMDocumentImpl * /*doc*/, XERCES_CPP_NAMESPACE_QUALIFIER DOMMemoryManager::NodeObjectType /*type*/)
+inline void operator delete(void* /*ptr*/, xercesc::DOMDocumentImpl * /*doc*/, xercesc::DOMMemoryManager::NodeObjectType /*type*/)
 {
     return;
 }
-inline void operator delete(void* /*ptr*/, XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument * /*doc*/, XERCES_CPP_NAMESPACE_QUALIFIER DOMMemoryManager::NodeObjectType /*type*/)
+inline void operator delete(void* /*ptr*/, xercesc::DOMDocument * /*doc*/, xercesc::DOMMemoryManager::NodeObjectType /*type*/)
 {
     return;
 }
 
-inline void operator delete(void* /*ptr*/, XERCES_CPP_NAMESPACE_QUALIFIER DOMDocumentImpl * /*doc*/)
+inline void operator delete(void* /*ptr*/, xercesc::DOMDocumentImpl * /*doc*/)
 {
     return;
 }
-inline void operator delete(void* /*ptr*/, XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument * /*doc*/)
+inline void operator delete(void* /*ptr*/, xercesc::DOMDocument * /*doc*/)
 {
     return;
 }
diff --git a/src/xercesc/dom/impl/DOMDocumentTypeImpl.cpp b/src/xercesc/dom/impl/DOMDocumentTypeImpl.cpp
index 4fe2ba1..d801ca7 100644
--- a/src/xercesc/dom/impl/DOMDocumentTypeImpl.cpp
+++ b/src/xercesc/dom/impl/DOMDocumentTypeImpl.cpp
@@ -34,7 +34,7 @@
 #include "DOMDocumentImpl.hpp"
 #include "DOMCasts.hpp"
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 static DOMDocument* sDocument = 0;
 static XMLMutex*    sDocumentMutex = 0;
@@ -557,4 +557,4 @@
     return fNode.getFeature(feature,version);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/dom/impl/DOMDocumentTypeImpl.hpp b/src/xercesc/dom/impl/DOMDocumentTypeImpl.hpp
index 3c3ba49..cc11cbc 100644
--- a/src/xercesc/dom/impl/DOMDocumentTypeImpl.hpp
+++ b/src/xercesc/dom/impl/DOMDocumentTypeImpl.hpp
@@ -40,7 +40,7 @@
 #include "DOMChildNode.hpp"
 #include "DOMParentNode.hpp"
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 class DOMNamedNodeMapImpl;
@@ -109,6 +109,6 @@
     DOMDocumentTypeImpl & operator = (const DOMDocumentTypeImpl &);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/impl/DOMElementImpl.cpp b/src/xercesc/dom/impl/DOMElementImpl.cpp
index dd438e7..c18ca7e 100644
--- a/src/xercesc/dom/impl/DOMElementImpl.cpp
+++ b/src/xercesc/dom/impl/DOMElementImpl.cpp
@@ -38,7 +38,7 @@
 #include "DOMDocumentTypeImpl.hpp"
 #include <xercesc/util/OutOfMemoryException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class DOMAttr;
 
@@ -880,4 +880,4 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/dom/impl/DOMElementImpl.hpp b/src/xercesc/dom/impl/DOMElementImpl.hpp
index e4eb193..5d59f69 100644
--- a/src/xercesc/dom/impl/DOMElementImpl.hpp
+++ b/src/xercesc/dom/impl/DOMElementImpl.hpp
@@ -43,7 +43,7 @@
 
 #include "DOMAttrMapImpl.hpp"
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class DOMTypeInfo;
 class DOMNodeList;
@@ -145,6 +145,6 @@
     DOMElementImpl & operator = (const DOMElementImpl &);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/impl/DOMElementNSImpl.cpp b/src/xercesc/dom/impl/DOMElementNSImpl.cpp
index 609860d..c34fba5 100644
--- a/src/xercesc/dom/impl/DOMElementNSImpl.cpp
+++ b/src/xercesc/dom/impl/DOMElementNSImpl.cpp
@@ -28,7 +28,7 @@
 #include <xercesc/util/XMLUri.hpp>
 #include <xercesc/util/OutOfMemoryException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 DOMElementNSImpl::DOMElementNSImpl(DOMDocument *ownerDoc, const XMLCh *nam) :
     DOMElementImpl(ownerDoc, nam)
@@ -261,4 +261,4 @@
     return DOMElementImpl::getFeature(feature, version);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/dom/impl/DOMElementNSImpl.hpp b/src/xercesc/dom/impl/DOMElementNSImpl.hpp
index 8e55288..dbe47ce 100644
--- a/src/xercesc/dom/impl/DOMElementNSImpl.hpp
+++ b/src/xercesc/dom/impl/DOMElementNSImpl.hpp
@@ -34,7 +34,7 @@
 
 #include "DOMElementImpl.hpp"
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class DOMTypeInfoImpl;
 
@@ -90,6 +90,6 @@
     DOMElementNSImpl & operator = (const DOMElementNSImpl &);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/impl/DOMEntityImpl.cpp b/src/xercesc/dom/impl/DOMEntityImpl.cpp
index 59a6d2f..9e0d13a 100644
--- a/src/xercesc/dom/impl/DOMEntityImpl.cpp
+++ b/src/xercesc/dom/impl/DOMEntityImpl.cpp
@@ -25,7 +25,7 @@
 #include "DOMEntityImpl.hpp"
 #include "DOMDocumentImpl.hpp"
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 DOMEntityImpl::DOMEntityImpl(DOMDocument *ownerDoc, const XMLCh *eName)
    : fNode(this, ownerDoc),
@@ -295,4 +295,4 @@
     fXmlVersion = doc->cloneString(version);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/dom/impl/DOMEntityImpl.hpp b/src/xercesc/dom/impl/DOMEntityImpl.hpp
index 0c50ecb..086d727 100644
--- a/src/xercesc/dom/impl/DOMEntityImpl.hpp
+++ b/src/xercesc/dom/impl/DOMEntityImpl.hpp
@@ -37,7 +37,7 @@
 #include "DOMParentNode.hpp"
 #include <xercesc/dom/DOMEntity.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 class    DOMEntityReference;
@@ -106,7 +106,7 @@
     DOMEntityImpl & operator = (const DOMEntityImpl &);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/dom/impl/DOMEntityReferenceImpl.cpp b/src/xercesc/dom/impl/DOMEntityReferenceImpl.cpp
index 5d525b0..7c5f976 100644
--- a/src/xercesc/dom/impl/DOMEntityReferenceImpl.cpp
+++ b/src/xercesc/dom/impl/DOMEntityReferenceImpl.cpp
@@ -28,7 +28,7 @@
 #include <xercesc/dom/DOMNode.hpp>
 #include <xercesc/dom/DOMNamedNodeMap.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 DOMEntityReferenceImpl::DOMEntityReferenceImpl(DOMDocument *ownerDoc,
                                          const XMLCh *entityName)
@@ -224,4 +224,4 @@
 DOMPARENTIMPL_IMPL(DOMEntityReferenceImpl);
 DOMCHILDIMPL_IMPL(DOMEntityReferenceImpl);
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/dom/impl/DOMEntityReferenceImpl.hpp b/src/xercesc/dom/impl/DOMEntityReferenceImpl.hpp
index 4afc436..73b9252 100644
--- a/src/xercesc/dom/impl/DOMEntityReferenceImpl.hpp
+++ b/src/xercesc/dom/impl/DOMEntityReferenceImpl.hpp
@@ -38,7 +38,7 @@
 #include "DOMChildNode.hpp"
 #include "DOMNodeImpl.hpp"
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 class CDOM_EXPORT DOMEntityReferenceImpl: public DOMEntityReference,
@@ -79,7 +79,7 @@
     DOMEntityReferenceImpl & operator = (const DOMEntityReferenceImpl &);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/dom/impl/DOMErrorImpl.cpp b/src/xercesc/dom/impl/DOMErrorImpl.cpp
index a4b06e0..3ff24f0 100644
--- a/src/xercesc/dom/impl/DOMErrorImpl.cpp
+++ b/src/xercesc/dom/impl/DOMErrorImpl.cpp
@@ -23,7 +23,7 @@
 #include <xercesc/dom/DOMException.hpp>
 #include <xercesc/dom/DOMLocator.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 // ---------------------------------------------------------------------------
@@ -87,4 +87,4 @@
     throw DOMException(DOMException::NOT_SUPPORTED_ERR, 0);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/dom/impl/DOMErrorImpl.hpp b/src/xercesc/dom/impl/DOMErrorImpl.hpp
index 1a83a4c..9dc9f24 100644
--- a/src/xercesc/dom/impl/DOMErrorImpl.hpp
+++ b/src/xercesc/dom/impl/DOMErrorImpl.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/dom/DOMError.hpp>
 #include <xercesc/util/XMLString.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 /**
@@ -183,6 +183,6 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/impl/DOMImplementationImpl.cpp b/src/xercesc/dom/impl/DOMImplementationImpl.cpp
index 69fe65a..d522af4 100644
--- a/src/xercesc/dom/impl/DOMImplementationImpl.cpp
+++ b/src/xercesc/dom/impl/DOMImplementationImpl.cpp
@@ -39,7 +39,7 @@
 #include <xercesc/util/XMLMsgLoader.hpp>
 #include <xercesc/parsers/DOMLSParserImpl.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 // ------------------------------------------------------------
@@ -288,4 +288,4 @@
     return list;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/dom/impl/DOMImplementationImpl.hpp b/src/xercesc/dom/impl/DOMImplementationImpl.hpp
index f1ae178..f79332e 100644
--- a/src/xercesc/dom/impl/DOMImplementationImpl.hpp
+++ b/src/xercesc/dom/impl/DOMImplementationImpl.hpp
@@ -35,7 +35,7 @@
 #include <xercesc/dom/DOMImplementation.hpp>
 #include <xercesc/dom/DOMImplementationSource.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLMsgLoader;
 
@@ -97,6 +97,6 @@
 };
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/impl/DOMImplementationListImpl.cpp b/src/xercesc/dom/impl/DOMImplementationListImpl.cpp
index 6ed1e04..7ef3908 100644
--- a/src/xercesc/dom/impl/DOMImplementationListImpl.cpp
+++ b/src/xercesc/dom/impl/DOMImplementationListImpl.cpp
@@ -22,7 +22,7 @@
 #include "DOMImplementationListImpl.hpp"
 #include <xercesc/dom/DOMImplementation.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 DOMImplementationListImpl::DOMImplementationListImpl()
 {
@@ -56,4 +56,4 @@
     delete this;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/dom/impl/DOMImplementationListImpl.hpp b/src/xercesc/dom/impl/DOMImplementationListImpl.hpp
index 5142a2a..48bc114 100644
--- a/src/xercesc/dom/impl/DOMImplementationListImpl.hpp
+++ b/src/xercesc/dom/impl/DOMImplementationListImpl.hpp
@@ -26,7 +26,7 @@
 #include <xercesc/util/RefVectorOf.hpp>
 #include <xercesc/dom/DOMImplementationList.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 class DOMImplementation;
@@ -51,6 +51,6 @@
     virtual void                 release();
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/impl/DOMImplementationRegistry.cpp b/src/xercesc/dom/impl/DOMImplementationRegistry.cpp
index 8597169..8b9a263 100644
--- a/src/xercesc/dom/impl/DOMImplementationRegistry.cpp
+++ b/src/xercesc/dom/impl/DOMImplementationRegistry.cpp
@@ -29,7 +29,7 @@
 #include "DOMImplementationImpl.hpp"
 #include "DOMImplementationListImpl.hpp"
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // Points to the singleton instance of a registry of DOMImplementationSource.
 //
@@ -113,5 +113,5 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
diff --git a/src/xercesc/dom/impl/DOMLSInputImpl.cpp b/src/xercesc/dom/impl/DOMLSInputImpl.cpp
index 6b101f8..3c30bac 100644
--- a/src/xercesc/dom/impl/DOMLSInputImpl.cpp
+++ b/src/xercesc/dom/impl/DOMLSInputImpl.cpp
@@ -23,7 +23,7 @@
 
 #include <xercesc/util/XMLString.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 DOMLSInputImpl::DOMLSInputImpl(MemoryManager* const manager /*= XMLPlatformUtils::fgMemoryManager*/)
 :fStringData(0)
@@ -91,5 +91,5 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
diff --git a/src/xercesc/dom/impl/DOMLSInputImpl.hpp b/src/xercesc/dom/impl/DOMLSInputImpl.hpp
index 7594809..ab01ae6 100644
--- a/src/xercesc/dom/impl/DOMLSInputImpl.hpp
+++ b/src/xercesc/dom/impl/DOMLSInputImpl.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/dom/DOM.hpp>
 #include <xercesc/dom/DOMLSInput.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class CDOM_EXPORT DOMLSInputImpl : public XMemory, public DOMLSInput
 {
@@ -129,6 +129,6 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/impl/DOMLSOutputImpl.cpp b/src/xercesc/dom/impl/DOMLSOutputImpl.cpp
index 8a24c6a..0bc3697 100644
--- a/src/xercesc/dom/impl/DOMLSOutputImpl.cpp
+++ b/src/xercesc/dom/impl/DOMLSOutputImpl.cpp
@@ -23,7 +23,7 @@
 
 #include <xercesc/util/XMLString.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 DOMLSOutputImpl::DOMLSOutputImpl(MemoryManager* const manager /*= XMLPlatformUtils::fgMemoryManager*/)
 :fByteStream(0)
@@ -62,5 +62,5 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
diff --git a/src/xercesc/dom/impl/DOMLSOutputImpl.hpp b/src/xercesc/dom/impl/DOMLSOutputImpl.hpp
index 523e90c..ca9cd25 100644
--- a/src/xercesc/dom/impl/DOMLSOutputImpl.hpp
+++ b/src/xercesc/dom/impl/DOMLSOutputImpl.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/dom/DOM.hpp>
 #include <xercesc/dom/DOMLSOutput.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class CDOM_EXPORT DOMLSOutputImpl : public XMemory, public DOMLSOutput
 {
@@ -87,6 +87,6 @@
     return fSystemId;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/impl/DOMLSSerializerImpl.cpp b/src/xercesc/dom/impl/DOMLSSerializerImpl.cpp
index fc59de0..7322b3b 100644
--- a/src/xercesc/dom/impl/DOMLSSerializerImpl.cpp
+++ b/src/xercesc/dom/impl/DOMLSSerializerImpl.cpp
@@ -39,7 +39,7 @@
 #include <xercesc/util/OutOfMemoryException.hpp>
 #include <xercesc/util/XMLChar.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 // ---------------------------------------------------------------------------
@@ -1764,4 +1764,4 @@
     }
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/dom/impl/DOMLSSerializerImpl.hpp b/src/xercesc/dom/impl/DOMLSSerializerImpl.hpp
index af115fd..824bcad 100644
--- a/src/xercesc/dom/impl/DOMLSSerializerImpl.hpp
+++ b/src/xercesc/dom/impl/DOMLSSerializerImpl.hpp
@@ -29,7 +29,7 @@
 #include <xercesc/util/RefVectorOf.hpp>
 #include <xercesc/framework/XMLFormatter.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class DOMStringListImpl;
 
@@ -229,6 +229,6 @@
     fFormatter->setUnRepFlags(XMLFormatter::UnRep_CharRef);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/impl/DOMLocatorImpl.cpp b/src/xercesc/dom/impl/DOMLocatorImpl.cpp
index d83e99c..43ebec9 100644
--- a/src/xercesc/dom/impl/DOMLocatorImpl.cpp
+++ b/src/xercesc/dom/impl/DOMLocatorImpl.cpp
@@ -21,7 +21,7 @@
 
 #include "DOMLocatorImpl.hpp"
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 // ---------------------------------------------------------------------------
@@ -57,4 +57,4 @@
 {
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/dom/impl/DOMLocatorImpl.hpp b/src/xercesc/dom/impl/DOMLocatorImpl.hpp
index 235bab5..677a633 100644
--- a/src/xercesc/dom/impl/DOMLocatorImpl.hpp
+++ b/src/xercesc/dom/impl/DOMLocatorImpl.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/dom/DOMLocator.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
   * Introduced in DOM Level 3
@@ -182,6 +182,6 @@
     fURI = uri;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/impl/DOMNamedNodeMapImpl.cpp b/src/xercesc/dom/impl/DOMNamedNodeMapImpl.cpp
index adceddf..43a1b46 100644
--- a/src/xercesc/dom/impl/DOMNamedNodeMapImpl.cpp
+++ b/src/xercesc/dom/impl/DOMNamedNodeMapImpl.cpp
@@ -31,7 +31,7 @@
 #include "DOMDocumentImpl.hpp"
 #include "DOMNodeImpl.hpp"
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 DOMNamedNodeMapImpl::DOMNamedNodeMapImpl(DOMNode *ownerNod)
 {
@@ -337,4 +337,4 @@
     return 0;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/dom/impl/DOMNamedNodeMapImpl.hpp b/src/xercesc/dom/impl/DOMNamedNodeMapImpl.hpp
index b8c334e..3376d9d 100644
--- a/src/xercesc/dom/impl/DOMNamedNodeMapImpl.hpp
+++ b/src/xercesc/dom/impl/DOMNamedNodeMapImpl.hpp
@@ -34,7 +34,7 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/dom/DOMNamedNodeMap.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 class       DOMNodeVector;
@@ -75,6 +75,6 @@
     DOMNamedNodeMapImpl & operator = (const DOMNamedNodeMapImpl &);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/impl/DOMNodeBase.hpp b/src/xercesc/dom/impl/DOMNodeBase.hpp
index 443e2dd..d6e95f3 100644
--- a/src/xercesc/dom/impl/DOMNodeBase.hpp
+++ b/src/xercesc/dom/impl/DOMNodeBase.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XercesDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 class DOMNodeImpl;
@@ -239,6 +239,6 @@
     const DOMChildNode* classname::getChildNodeImpl() const {return &fChild;}
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/impl/DOMNodeIDMap.cpp b/src/xercesc/dom/impl/DOMNodeIDMap.cpp
index 3e90029..9d7cbb6 100644
--- a/src/xercesc/dom/impl/DOMNodeIDMap.cpp
+++ b/src/xercesc/dom/impl/DOMNodeIDMap.cpp
@@ -25,9 +25,9 @@
 
 #include <xercesc/util/XMLString.hpp>
 #include <xercesc/util/RuntimeException.hpp>
-#include <stdio.h>
+#include <cstdio>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 static const XMLSize_t gPrimes[] = {997, 9973, 99991, 999983, 0 };  // To do - add a few more.
@@ -227,4 +227,4 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/dom/impl/DOMNodeIDMap.hpp b/src/xercesc/dom/impl/DOMNodeIDMap.hpp
index faf12ad..2c698e5 100644
--- a/src/xercesc/dom/impl/DOMNodeIDMap.hpp
+++ b/src/xercesc/dom/impl/DOMNodeIDMap.hpp
@@ -32,7 +32,7 @@
 //
 
 #include <xercesc/util/XercesDefs.hpp>
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 //
@@ -81,6 +81,6 @@
     DOMDocument *fDoc;                      // The owning document.
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/impl/DOMNodeImpl.cpp b/src/xercesc/dom/impl/DOMNodeImpl.cpp
index d2f8a8b..0945eee 100644
--- a/src/xercesc/dom/impl/DOMNodeImpl.cpp
+++ b/src/xercesc/dom/impl/DOMNodeImpl.cpp
@@ -36,10 +36,10 @@
 #include <xercesc/util/XMLUniDefs.hpp>
 #include <xercesc/util/PlatformUtils.hpp>
 #include <xercesc/util/XMLInitializer.hpp>
-#include <stdio.h>
+#include <cstdio>
 #include <assert.h>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //Though DOMNodeImpl does not derivate from DOMNode, it shares
 //the same GetDOMNodeMemoryManager
@@ -1041,5 +1041,5 @@
     throw DOMException(DOMException::INVALID_ACCESS_ERR,0, GetDOMNodeMemoryManager);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
diff --git a/src/xercesc/dom/impl/DOMNodeImpl.hpp b/src/xercesc/dom/impl/DOMNodeImpl.hpp
index 5f82e5a..4eec7a7 100644
--- a/src/xercesc/dom/impl/DOMNodeImpl.hpp
+++ b/src/xercesc/dom/impl/DOMNodeImpl.hpp
@@ -52,7 +52,7 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/dom/DOMUserDataHandler.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 class DOMNamedNodeMap;
@@ -386,6 +386,6 @@
 
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/impl/DOMNodeIteratorImpl.cpp b/src/xercesc/dom/impl/DOMNodeIteratorImpl.cpp
index 8c88603..624b50d 100644
--- a/src/xercesc/dom/impl/DOMNodeIteratorImpl.cpp
+++ b/src/xercesc/dom/impl/DOMNodeIteratorImpl.cpp
@@ -29,7 +29,7 @@
 #include <xercesc/dom/DOMDocument.hpp>
 #include <xercesc/dom/DOMException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //////////////////////////////////////////////////////////////////////
 // Construction/Destruction
@@ -362,4 +362,4 @@
     // chance that this is allocated again and again is not usual
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/dom/impl/DOMNodeIteratorImpl.hpp b/src/xercesc/dom/impl/DOMNodeIteratorImpl.hpp
index e6cb537..158129d 100644
--- a/src/xercesc/dom/impl/DOMNodeIteratorImpl.hpp
+++ b/src/xercesc/dom/impl/DOMNodeIteratorImpl.hpp
@@ -39,7 +39,7 @@
 #include <xercesc/dom/DOMNode.hpp>
 #include <xercesc/dom/DOMNodeIterator.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class CDOM_EXPORT DOMNodeIteratorImpl : public DOMNodeIterator {
     protected:
@@ -117,6 +117,6 @@
 
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/impl/DOMNodeListImpl.cpp b/src/xercesc/dom/impl/DOMNodeListImpl.cpp
index bdd2637..0e7590e 100644
--- a/src/xercesc/dom/impl/DOMNodeListImpl.cpp
+++ b/src/xercesc/dom/impl/DOMNodeListImpl.cpp
@@ -24,7 +24,7 @@
 #include "DOMNodeListImpl.hpp"
 #include "DOMCasts.hpp"
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 // revisit
@@ -69,4 +69,4 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/dom/impl/DOMNodeListImpl.hpp b/src/xercesc/dom/impl/DOMNodeListImpl.hpp
index e7a79c8..0bce518 100644
--- a/src/xercesc/dom/impl/DOMNodeListImpl.hpp
+++ b/src/xercesc/dom/impl/DOMNodeListImpl.hpp
@@ -45,7 +45,7 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/dom/DOMNodeList.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class DOMParentNode;
 class DOMNode;
@@ -68,6 +68,6 @@
     virtual XMLSize_t    getLength() const;
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/impl/DOMNodeVector.cpp b/src/xercesc/dom/impl/DOMNodeVector.cpp
index b146898..5fd5827 100644
--- a/src/xercesc/dom/impl/DOMNodeVector.cpp
+++ b/src/xercesc/dom/impl/DOMNodeVector.cpp
@@ -32,7 +32,7 @@
 #include "DOMDocumentImpl.hpp"
 #include <assert.h>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 DOMNodeVector::DOMNodeVector(DOMDocument *doc)
@@ -120,4 +120,4 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/dom/impl/DOMNodeVector.hpp b/src/xercesc/dom/impl/DOMNodeVector.hpp
index d3e5e02..55bf829 100644
--- a/src/xercesc/dom/impl/DOMNodeVector.hpp
+++ b/src/xercesc/dom/impl/DOMNodeVector.hpp
@@ -33,7 +33,7 @@
 
 #include <xercesc/util/XercesDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 class DOMNode;
@@ -83,6 +83,6 @@
 	return nextFreeSlot;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/impl/DOMNormalizer.cpp b/src/xercesc/dom/impl/DOMNormalizer.cpp
index 649c5a1..66138bb 100644
--- a/src/xercesc/dom/impl/DOMNormalizer.cpp
+++ b/src/xercesc/dom/impl/DOMNormalizer.cpp
@@ -38,7 +38,7 @@
 #include "DOMNormalizer.hpp"
 #include "DOMTextImpl.hpp"
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 static XMLMsgLoader*   gMsgLoader = 0;
 
@@ -497,4 +497,4 @@
 
 
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/dom/impl/DOMNormalizer.hpp b/src/xercesc/dom/impl/DOMNormalizer.hpp
index e37604f..841c119 100644
--- a/src/xercesc/dom/impl/DOMNormalizer.hpp
+++ b/src/xercesc/dom/impl/DOMNormalizer.hpp
@@ -37,7 +37,7 @@
 #include <xercesc/framework/XMLErrorCodes.hpp>
 
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class DOMConfigurationImpl;
 class DOMErrorHandler;
@@ -161,6 +161,6 @@
 
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/impl/DOMNotationImpl.cpp b/src/xercesc/dom/impl/DOMNotationImpl.cpp
index 2e5fc1c..a7d6597 100644
--- a/src/xercesc/dom/impl/DOMNotationImpl.cpp
+++ b/src/xercesc/dom/impl/DOMNotationImpl.cpp
@@ -24,7 +24,7 @@
 #include <xercesc/dom/DOMException.hpp>
 #include <xercesc/dom/DOMNode.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 DOMNotationImpl::DOMNotationImpl(DOMDocument *ownerDoc, const XMLCh *nName)
     : fNode(this, ownerDoc), fName(0), fPublicId(0), fSystemId(0), fBaseURI(0)
@@ -179,4 +179,4 @@
 DOMNODEIMPL_IMPL(DOMNotationImpl);
 
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/dom/impl/DOMNotationImpl.hpp b/src/xercesc/dom/impl/DOMNotationImpl.hpp
index 23ff621..e2c858a 100644
--- a/src/xercesc/dom/impl/DOMNotationImpl.hpp
+++ b/src/xercesc/dom/impl/DOMNotationImpl.hpp
@@ -34,7 +34,7 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/dom/DOMNotation.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 #include "DOMNodeBase.hpp"
 #include "DOMNodeImpl.hpp"
@@ -91,6 +91,6 @@
     DOMNotationImpl& operator= (const DOMNotationImpl& other);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/impl/DOMParentNode.cpp b/src/xercesc/dom/impl/DOMParentNode.cpp
index 73920f9..5dbaf4d 100644
--- a/src/xercesc/dom/impl/DOMParentNode.cpp
+++ b/src/xercesc/dom/impl/DOMParentNode.cpp
@@ -29,7 +29,7 @@
 #include "DOMParentNode.hpp"
 #include "DOMCasts.hpp"
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 DOMParentNode::DOMParentNode(DOMNode* containingNode, DOMDocument *ownerDoc)
     : fContainingNode(containingNode), fOwnerDocument(ownerDoc), fFirstChild(0), fChildNodeList(this)
@@ -488,4 +488,4 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/dom/impl/DOMParentNode.hpp b/src/xercesc/dom/impl/DOMParentNode.hpp
index 72b9794..6b20780 100644
--- a/src/xercesc/dom/impl/DOMParentNode.hpp
+++ b/src/xercesc/dom/impl/DOMParentNode.hpp
@@ -45,7 +45,7 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include "DOMNodeListImpl.hpp"
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 class DOMChildNode;
@@ -120,6 +120,6 @@
 
 #define GetDOMParentNodeMemoryManager GET_DIRECT_MM(fOwnerDocument)
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/impl/DOMProcessingInstructionImpl.cpp b/src/xercesc/dom/impl/DOMProcessingInstructionImpl.cpp
index 104ea12..4b8a36a 100644
--- a/src/xercesc/dom/impl/DOMProcessingInstructionImpl.cpp
+++ b/src/xercesc/dom/impl/DOMProcessingInstructionImpl.cpp
@@ -28,7 +28,7 @@
 #include <xercesc/dom/DOMException.hpp>
 #include <xercesc/dom/DOMNode.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 DOMProcessingInstructionImpl::DOMProcessingInstructionImpl(DOMDocument *ownerDoc,
                                                      const XMLCh *targt,
@@ -216,4 +216,4 @@
            void             DOMProcessingInstructionImpl::setNodeValue(const XMLCh  *nodeValue)   {fCharacterData.setNodeValue (this, nodeValue); }
 
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/dom/impl/DOMProcessingInstructionImpl.hpp b/src/xercesc/dom/impl/DOMProcessingInstructionImpl.hpp
index c336b67..0921bc6 100644
--- a/src/xercesc/dom/impl/DOMProcessingInstructionImpl.hpp
+++ b/src/xercesc/dom/impl/DOMProcessingInstructionImpl.hpp
@@ -39,7 +39,7 @@
 #include "DOMNodeImpl.hpp"
 #include "DOMChildNode.hpp"
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 class    DocumentImpl;
@@ -92,7 +92,7 @@
     DOMProcessingInstructionImpl & operator = (const DOMProcessingInstructionImpl &);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/dom/impl/DOMRangeImpl.cpp b/src/xercesc/dom/impl/DOMRangeImpl.cpp
index 4e74bd0..e040d3b 100644
--- a/src/xercesc/dom/impl/DOMRangeImpl.cpp
+++ b/src/xercesc/dom/impl/DOMRangeImpl.cpp
@@ -35,7 +35,7 @@
 #include <xercesc/framework/XMLBuffer.hpp>
 #include <xercesc/util/Janitor.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 //---------------------
@@ -2112,5 +2112,5 @@
 
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
diff --git a/src/xercesc/dom/impl/DOMRangeImpl.hpp b/src/xercesc/dom/impl/DOMRangeImpl.hpp
index 9f3b606..05a5659 100644
--- a/src/xercesc/dom/impl/DOMRangeImpl.hpp
+++ b/src/xercesc/dom/impl/DOMRangeImpl.hpp
@@ -35,7 +35,7 @@
 #include <xercesc/dom/DOMRange.hpp>
 #include <xercesc/util/PlatformUtils.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 
@@ -171,6 +171,6 @@
     DOMRangeImpl & operator = (const DOMRangeImpl &);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/impl/DOMStringListImpl.cpp b/src/xercesc/dom/impl/DOMStringListImpl.cpp
index 34a7f07..862fc68 100644
--- a/src/xercesc/dom/impl/DOMStringListImpl.cpp
+++ b/src/xercesc/dom/impl/DOMStringListImpl.cpp
@@ -22,7 +22,7 @@
 #include "DOMStringListImpl.hpp"
 #include <xercesc/util/XMLString.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 DOMStringListImpl::DOMStringListImpl(int nInitialSize, MemoryManager* manager)
 {
@@ -61,4 +61,4 @@
     delete this;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/dom/impl/DOMStringListImpl.hpp b/src/xercesc/dom/impl/DOMStringListImpl.hpp
index b6c5c07..cb2238c 100644
--- a/src/xercesc/dom/impl/DOMStringListImpl.hpp
+++ b/src/xercesc/dom/impl/DOMStringListImpl.hpp
@@ -26,7 +26,7 @@
 #include <xercesc/util/RefVectorOf.hpp>
 #include <xercesc/dom/DOMStringList.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 class CDOM_EXPORT DOMStringListImpl: public XMemory,
@@ -51,6 +51,6 @@
     virtual void         release();
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/impl/DOMStringPool.cpp b/src/xercesc/dom/impl/DOMStringPool.cpp
index 5ae6ccf..2cbc713 100644
--- a/src/xercesc/dom/impl/DOMStringPool.cpp
+++ b/src/xercesc/dom/impl/DOMStringPool.cpp
@@ -25,7 +25,7 @@
 #include "DOMStringPool.hpp"
 #include "DOMDocumentImpl.hpp"
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 DOMBuffer::
 DOMBuffer(DOMDocumentImpl *doc, XMLSize_t capacity) :
@@ -64,4 +64,4 @@
     fCapacity = newCap;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/dom/impl/DOMStringPool.hpp b/src/xercesc/dom/impl/DOMStringPool.hpp
index f26e611..80f3f0d 100644
--- a/src/xercesc/dom/impl/DOMStringPool.hpp
+++ b/src/xercesc/dom/impl/DOMStringPool.hpp
@@ -33,7 +33,7 @@
 
 #include <xercesc/util/XercesDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class   DOMDocumentImpl;
 
@@ -221,6 +221,6 @@
   fBuffer[fIndex] = 0;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/impl/DOMTextImpl.cpp b/src/xercesc/dom/impl/DOMTextImpl.cpp
index da700eb..91c20f5 100644
--- a/src/xercesc/dom/impl/DOMTextImpl.cpp
+++ b/src/xercesc/dom/impl/DOMTextImpl.cpp
@@ -39,7 +39,7 @@
 
 #include <assert.h>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class DOMDocument;
 
@@ -333,4 +333,4 @@
           void              DOMTextImpl::appendData(const XMLCh *arg, XMLSize_t n) {fCharacterData.appendData(this, arg, n);}
           void              DOMTextImpl::appendDataFast(const XMLCh *arg, XMLSize_t n) {fCharacterData.appendDataFast(this, arg, n);}
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/dom/impl/DOMTextImpl.hpp b/src/xercesc/dom/impl/DOMTextImpl.hpp
index ecd3b98..d6d7651 100644
--- a/src/xercesc/dom/impl/DOMTextImpl.hpp
+++ b/src/xercesc/dom/impl/DOMTextImpl.hpp
@@ -40,7 +40,7 @@
 #include "DOMNodeImpl.hpp"
 #include "DOMCharacterDataImpl.hpp"
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 class CDOM_EXPORT DOMTextImpl: public DOMText, public HasDOMNodeImpl, public HasDOMChildImpl {
@@ -103,6 +103,6 @@
     DOMTextImpl & operator = (const DOMTextImpl &);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/impl/DOMTreeWalkerImpl.cpp b/src/xercesc/dom/impl/DOMTreeWalkerImpl.cpp
index 92d2fbd..2e17a36 100644
--- a/src/xercesc/dom/impl/DOMTreeWalkerImpl.cpp
+++ b/src/xercesc/dom/impl/DOMTreeWalkerImpl.cpp
@@ -25,7 +25,7 @@
 #include <xercesc/dom/DOMDocument.hpp>
 #include <xercesc/dom/DOMException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /** constructor */
 DOMTreeWalkerImpl::DOMTreeWalkerImpl (
@@ -481,4 +481,4 @@
     // chance that this is allocated again and again is not usual
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/dom/impl/DOMTreeWalkerImpl.hpp b/src/xercesc/dom/impl/DOMTreeWalkerImpl.hpp
index 4ecbbb4..c619eec 100644
--- a/src/xercesc/dom/impl/DOMTreeWalkerImpl.hpp
+++ b/src/xercesc/dom/impl/DOMTreeWalkerImpl.hpp
@@ -33,7 +33,7 @@
 
 #include <xercesc/dom/DOMTreeWalker.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 class CDOM_EXPORT DOMTreeWalkerImpl : public DOMTreeWalker {
@@ -163,6 +163,6 @@
 
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/impl/DOMTypeInfoImpl.cpp b/src/xercesc/dom/impl/DOMTypeInfoImpl.cpp
index 90786b1..7f4726a 100644
--- a/src/xercesc/dom/impl/DOMTypeInfoImpl.cpp
+++ b/src/xercesc/dom/impl/DOMTypeInfoImpl.cpp
@@ -20,7 +20,7 @@
 #include <xercesc/framework/psvi/PSVIItem.hpp>
 #include <xercesc/framework/psvi/XSTypeDefinition.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /*static*/ DOMTypeInfoImpl DOMTypeInfoImpl::g_DtdValidatedElement;
 /*static*/ DOMTypeInfoImpl DOMTypeInfoImpl::g_DtdNotValidatedAttribute;
@@ -180,7 +180,7 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
 /**
  * End of file DOMTypeInfo.cpp
  */
diff --git a/src/xercesc/dom/impl/DOMTypeInfoImpl.hpp b/src/xercesc/dom/impl/DOMTypeInfoImpl.hpp
index f290fe1..24dc1ae 100644
--- a/src/xercesc/dom/impl/DOMTypeInfoImpl.hpp
+++ b/src/xercesc/dom/impl/DOMTypeInfoImpl.hpp
@@ -34,7 +34,7 @@
 #include <xercesc/dom/DOMTypeInfo.hpp>
 #include <xercesc/dom/DOMPSVITypeInfo.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class DOMDocumentImpl;
 
@@ -97,7 +97,7 @@
     DOMTypeInfoImpl & operator = (const DOMTypeInfoImpl &);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/dom/impl/DOMXPathExpressionImpl.cpp b/src/xercesc/dom/impl/DOMXPathExpressionImpl.cpp
index f832d8a..b9c4fa7 100644
--- a/src/xercesc/dom/impl/DOMXPathExpressionImpl.cpp
+++ b/src/xercesc/dom/impl/DOMXPathExpressionImpl.cpp
@@ -26,7 +26,7 @@
 #include <xercesc/dom/DOMXPathException.hpp>
 #include <xercesc/dom/DOM.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class WrapperForXPathNSResolver : public XercesNamespaceResolver
 {
@@ -213,4 +213,4 @@
     delete me;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/dom/impl/DOMXPathExpressionImpl.hpp b/src/xercesc/dom/impl/DOMXPathExpressionImpl.hpp
index 1065fb6..a053f90 100644
--- a/src/xercesc/dom/impl/DOMXPathExpressionImpl.hpp
+++ b/src/xercesc/dom/impl/DOMXPathExpressionImpl.hpp
@@ -26,7 +26,7 @@
 #include <xercesc/util/PlatformUtils.hpp>
 #include <xercesc/dom/DOMXPathExpression.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class DOMElement;
 class XercesXPath;
@@ -64,6 +64,6 @@
     MemoryManager* const        fMemoryManager;
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/impl/DOMXPathNSResolverImpl.cpp b/src/xercesc/dom/impl/DOMXPathNSResolverImpl.cpp
index 960046e..a1cb31b 100644
--- a/src/xercesc/dom/impl/DOMXPathNSResolverImpl.cpp
+++ b/src/xercesc/dom/impl/DOMXPathNSResolverImpl.cpp
@@ -21,7 +21,7 @@
 #include <xercesc/util/Janitor.hpp>
 #include <xercesc/util/XMLString.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 DOMXPathNSResolverImpl::DOMXPathNSResolverImpl(const DOMNode *nodeResolver, MemoryManager* const manager) :
     fNamespaceBindings(0),
@@ -106,4 +106,4 @@
     delete me;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/dom/impl/DOMXPathNSResolverImpl.hpp b/src/xercesc/dom/impl/DOMXPathNSResolverImpl.hpp
index 0435200..f0c7cc8 100644
--- a/src/xercesc/dom/impl/DOMXPathNSResolverImpl.hpp
+++ b/src/xercesc/dom/impl/DOMXPathNSResolverImpl.hpp
@@ -28,7 +28,7 @@
 #include <xercesc/dom/DOMXPathNSResolver.hpp>
 #include <xercesc/util/KVStringPair.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class DOMNode;
 
@@ -51,7 +51,7 @@
     MemoryManager*                fManager;
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/dom/impl/DOMXPathResultImpl.cpp b/src/xercesc/dom/impl/DOMXPathResultImpl.cpp
index ffaf4f6..8ef82c8 100644
--- a/src/xercesc/dom/impl/DOMXPathResultImpl.cpp
+++ b/src/xercesc/dom/impl/DOMXPathResultImpl.cpp
@@ -19,7 +19,7 @@
 #include <xercesc/dom/DOMNode.hpp>
 #include <xercesc/dom/DOMXPathException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 DOMXPathResultImpl::DOMXPathResultImpl(ResultType type,
                                        MemoryManager* const manager)
@@ -135,4 +135,4 @@
     fSnapshot->addElement(node);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/dom/impl/DOMXPathResultImpl.hpp b/src/xercesc/dom/impl/DOMXPathResultImpl.hpp
index ae0aa62..d267998 100644
--- a/src/xercesc/dom/impl/DOMXPathResultImpl.hpp
+++ b/src/xercesc/dom/impl/DOMXPathResultImpl.hpp
@@ -26,7 +26,7 @@
 #include <xercesc/dom/DOMXPathResult.hpp>
 #include <xercesc/util/RefVectorOf.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class CDOM_EXPORT DOMXPathResultImpl :  public XMemory,
                                         public DOMXPathResult
@@ -61,6 +61,6 @@
     XMLSize_t               fIndex;
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/dom/impl/XSDElementNSImpl.cpp b/src/xercesc/dom/impl/XSDElementNSImpl.cpp
index 4e60762..fcac087 100644
--- a/src/xercesc/dom/impl/XSDElementNSImpl.cpp
+++ b/src/xercesc/dom/impl/XSDElementNSImpl.cpp
@@ -24,7 +24,7 @@
 #include "DOMDocumentImpl.hpp"
 #include "XSDElementNSImpl.hpp"
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 XSDElementNSImpl::XSDElementNSImpl(DOMDocument *ownerDoc, const XMLCh *nam) :
@@ -60,4 +60,4 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/dom/impl/XSDElementNSImpl.hpp b/src/xercesc/dom/impl/XSDElementNSImpl.hpp
index fd78772..9f3b045 100644
--- a/src/xercesc/dom/impl/XSDElementNSImpl.hpp
+++ b/src/xercesc/dom/impl/XSDElementNSImpl.hpp
@@ -35,7 +35,7 @@
 
 #include "DOMElementNSImpl.hpp"
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 
@@ -66,6 +66,6 @@
     XSDElementNSImpl& operator=(const XSDElementNSImpl&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/BinOutputStream.cpp b/src/xercesc/framework/BinOutputStream.cpp
index f7b2ae1..99e311d 100644
--- a/src/xercesc/framework/BinOutputStream.cpp
+++ b/src/xercesc/framework/BinOutputStream.cpp
@@ -25,7 +25,7 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/framework/BinOutputStream.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  BinOutputStream: Virtual destructor!
@@ -42,4 +42,4 @@
 {
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/framework/BinOutputStream.hpp b/src/xercesc/framework/BinOutputStream.hpp
index b750862..cb3e41e 100644
--- a/src/xercesc/framework/BinOutputStream.hpp
+++ b/src/xercesc/framework/BinOutputStream.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XMemory.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLUTIL_EXPORT BinOutputStream : public XMemory
 {
@@ -60,6 +60,6 @@
     BinOutputStream& operator=(const BinOutputStream&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/LocalFileFormatTarget.cpp b/src/xercesc/framework/LocalFileFormatTarget.cpp
index fdd8266..4d3473b 100644
--- a/src/xercesc/framework/LocalFileFormatTarget.cpp
+++ b/src/xercesc/framework/LocalFileFormatTarget.cpp
@@ -24,9 +24,9 @@
 #include <xercesc/util/IOException.hpp>
 #include <xercesc/util/OutOfMemoryException.hpp>
 #include <assert.h>
-#include <string.h>
+#include <cstring>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 const XMLSize_t MAX_BUFFER_SIZE = 65536;
 
@@ -151,4 +151,4 @@
     fCapacity = newCap;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/framework/LocalFileFormatTarget.hpp b/src/xercesc/framework/LocalFileFormatTarget.hpp
index 9cae3d9..f15a69e 100644
--- a/src/xercesc/framework/LocalFileFormatTarget.hpp
+++ b/src/xercesc/framework/LocalFileFormatTarget.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/framework/XMLFormatter.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLPARSER_EXPORT LocalFileFormatTarget : public XMLFormatTarget {
 public:
@@ -94,6 +94,6 @@
 };
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/LocalFileInputSource.cpp b/src/xercesc/framework/LocalFileInputSource.cpp
index f5adce8..f7cebcc 100644
--- a/src/xercesc/framework/LocalFileInputSource.cpp
+++ b/src/xercesc/framework/LocalFileInputSource.cpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/XMLString.hpp>
 #include <xercesc/util/XMLUniDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /***
  *
@@ -168,5 +168,5 @@
     return retStrm;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
diff --git a/src/xercesc/framework/LocalFileInputSource.hpp b/src/xercesc/framework/LocalFileInputSource.hpp
index acbd922..d14827f 100644
--- a/src/xercesc/framework/LocalFileInputSource.hpp
+++ b/src/xercesc/framework/LocalFileInputSource.hpp
@@ -25,7 +25,7 @@
 
 #include <xercesc/sax/InputSource.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class BinInputStream;
 
@@ -147,6 +147,6 @@
 
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/MemBufFormatTarget.cpp b/src/xercesc/framework/MemBufFormatTarget.cpp
index 0cc5919..084f817 100644
--- a/src/xercesc/framework/MemBufFormatTarget.cpp
+++ b/src/xercesc/framework/MemBufFormatTarget.cpp
@@ -21,9 +21,9 @@
 
 #include <xercesc/framework/MemBufFormatTarget.hpp>
 #include <xercesc/util/XMLString.hpp>
-#include <string.h>
+#include <cstring>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 MemBufFormatTarget::MemBufFormatTarget( XMLSize_t            initCapacity
                                       , MemoryManager* const manager)
@@ -102,4 +102,4 @@
     fCapacity = newCap;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/framework/MemBufFormatTarget.hpp b/src/xercesc/framework/MemBufFormatTarget.hpp
index e6ac33f..4a23f41 100644
--- a/src/xercesc/framework/MemBufFormatTarget.hpp
+++ b/src/xercesc/framework/MemBufFormatTarget.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/framework/XMLFormatter.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /*
  * The MemBufFormatTarget is a derivative from XMLFormatTarget, which user code
@@ -130,7 +130,7 @@
 
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/framework/MemBufInputSource.cpp b/src/xercesc/framework/MemBufInputSource.cpp
index a247c6a..430d343 100644
--- a/src/xercesc/framework/MemBufInputSource.cpp
+++ b/src/xercesc/framework/MemBufInputSource.cpp
@@ -26,7 +26,7 @@
 #include <xercesc/util/BinMemInputStream.hpp>
 #include <xercesc/framework/MemBufInputSource.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  MemBufInputSource: Constructors and Destructor
@@ -90,5 +90,5 @@
     );
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
diff --git a/src/xercesc/framework/MemBufInputSource.hpp b/src/xercesc/framework/MemBufInputSource.hpp
index 9bc7b5a..677271b 100644
--- a/src/xercesc/framework/MemBufInputSource.hpp
+++ b/src/xercesc/framework/MemBufInputSource.hpp
@@ -25,7 +25,7 @@
 
 #include <xercesc/sax/InputSource.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class BinInputStream;
 
@@ -225,6 +225,6 @@
     fCopyBufToStream = newState;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/MemoryManager.hpp b/src/xercesc/framework/MemoryManager.hpp
index 564eea9..1961aa6 100644
--- a/src/xercesc/framework/MemoryManager.hpp
+++ b/src/xercesc/framework/MemoryManager.hpp
@@ -24,10 +24,10 @@
 #define XERCESC_INCLUDE_GUARD_MEMORYMANAGER_HPP
 
 #include <xercesc/util/XercesDefs.hpp>
-#include <stdlib.h>
+#include <cstdlib>
 
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 /**
@@ -120,6 +120,6 @@
     MemoryManager& operator=(const MemoryManager&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/StdInInputSource.cpp b/src/xercesc/framework/StdInInputSource.cpp
index 4559a72..c7f3504 100644
--- a/src/xercesc/framework/StdInInputSource.cpp
+++ b/src/xercesc/framework/StdInInputSource.cpp
@@ -27,7 +27,7 @@
 #include <xercesc/util/PlatformUtils.hpp>
 #include <xercesc/framework/StdInInputSource.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  StdInInputSource: Implementation of the input source interface
@@ -48,5 +48,5 @@
     return retStream;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
diff --git a/src/xercesc/framework/StdInInputSource.hpp b/src/xercesc/framework/StdInInputSource.hpp
index e90dc31..3fb06d2 100644
--- a/src/xercesc/framework/StdInInputSource.hpp
+++ b/src/xercesc/framework/StdInInputSource.hpp
@@ -25,7 +25,7 @@
 
 #include <xercesc/sax/InputSource.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class BinInputStream;
 
@@ -103,6 +103,6 @@
 {
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/StdOutFormatTarget.cpp b/src/xercesc/framework/StdOutFormatTarget.cpp
index bdfa24c..0bc7df5 100644
--- a/src/xercesc/framework/StdOutFormatTarget.cpp
+++ b/src/xercesc/framework/StdOutFormatTarget.cpp
@@ -20,9 +20,9 @@
  */
 
 #include <xercesc/framework/StdOutFormatTarget.hpp>
-#include <stdio.h>
+#include <cstdio>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 StdOutFormatTarget::StdOutFormatTarget()
 {}
@@ -47,5 +47,5 @@
     fflush(stdout);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
diff --git a/src/xercesc/framework/StdOutFormatTarget.hpp b/src/xercesc/framework/StdOutFormatTarget.hpp
index c58502c..b36a691 100644
--- a/src/xercesc/framework/StdOutFormatTarget.hpp
+++ b/src/xercesc/framework/StdOutFormatTarget.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/framework/XMLFormatter.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLPARSER_EXPORT StdOutFormatTarget : public XMLFormatTarget {
 public:
@@ -52,6 +52,6 @@
     StdOutFormatTarget& operator=(const StdOutFormatTarget&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/URLInputSource.cpp b/src/xercesc/framework/URLInputSource.cpp
index 814fcae..5186414 100644
--- a/src/xercesc/framework/URLInputSource.cpp
+++ b/src/xercesc/framework/URLInputSource.cpp
@@ -29,7 +29,7 @@
 #include <xercesc/util/XMLString.hpp>
 #include <xercesc/framework/URLInputSource.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  URLInputSource: Constructors and Destructor
@@ -96,5 +96,5 @@
     return fURL.makeNewStream();
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
diff --git a/src/xercesc/framework/URLInputSource.hpp b/src/xercesc/framework/URLInputSource.hpp
index 0cdcfe2..b3f2d88 100644
--- a/src/xercesc/framework/URLInputSource.hpp
+++ b/src/xercesc/framework/URLInputSource.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/XMLURL.hpp>
 #include <xercesc/sax/InputSource.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class BinInputStream;
 
@@ -231,6 +231,6 @@
     return fURL;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/ValidationContext.hpp b/src/xercesc/framework/ValidationContext.hpp
index edb3231..662f096 100644
--- a/src/xercesc/framework/ValidationContext.hpp
+++ b/src/xercesc/framework/ValidationContext.hpp
@@ -27,7 +27,7 @@
 #include <xercesc/util/NameIdPool.hpp>
 #include <xercesc/util/XMemory.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLRefInfo;
 class DTDEntityDecl;
@@ -133,7 +133,7 @@
 
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/framework/Wrapper4DOMLSInput.cpp b/src/xercesc/framework/Wrapper4DOMLSInput.cpp
index 4e3c9e5..38ee5fa 100644
--- a/src/xercesc/framework/Wrapper4DOMLSInput.cpp
+++ b/src/xercesc/framework/Wrapper4DOMLSInput.cpp
@@ -32,7 +32,7 @@
 #include <xercesc/framework/LocalFileInputSource.hpp>
 #include <xercesc/framework/URLInputSource.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Wrapper4DOMLSInput: Constructor and Destructor
@@ -156,5 +156,5 @@
     return 0;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
diff --git a/src/xercesc/framework/Wrapper4DOMLSInput.hpp b/src/xercesc/framework/Wrapper4DOMLSInput.hpp
index aaa5187..17928d1 100644
--- a/src/xercesc/framework/Wrapper4DOMLSInput.hpp
+++ b/src/xercesc/framework/Wrapper4DOMLSInput.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/sax/InputSource.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class DOMLSInput;
 class DOMLSResourceResolver;
@@ -224,7 +224,7 @@
     DOMLSResourceResolver*  fEntityResolver;
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 
 #endif
diff --git a/src/xercesc/framework/Wrapper4InputSource.cpp b/src/xercesc/framework/Wrapper4InputSource.cpp
index e628fbd..f5b12d0 100644
--- a/src/xercesc/framework/Wrapper4InputSource.cpp
+++ b/src/xercesc/framework/Wrapper4InputSource.cpp
@@ -27,7 +27,7 @@
 #include <xercesc/sax/InputSource.hpp>
 #include <xercesc/util/NullPointerException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Wrapper4InputSource: Constructor and Destructor
@@ -117,5 +117,5 @@
     delete src;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
diff --git a/src/xercesc/framework/Wrapper4InputSource.hpp b/src/xercesc/framework/Wrapper4InputSource.hpp
index 9c88699..11bfddb 100644
--- a/src/xercesc/framework/Wrapper4InputSource.hpp
+++ b/src/xercesc/framework/Wrapper4InputSource.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/dom/DOMLSInput.hpp>
 #include <xercesc/util/PlatformUtils.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class InputSource;
 
@@ -285,6 +285,6 @@
 {
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/XMLAttDef.cpp b/src/xercesc/framework/XMLAttDef.cpp
index 849454a..e13f4f1 100644
--- a/src/xercesc/framework/XMLAttDef.cpp
+++ b/src/xercesc/framework/XMLAttDef.cpp
@@ -28,7 +28,7 @@
 #include <xercesc/util/XMLUni.hpp>
 #include <xercesc/util/OutOfMemoryException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Local const data
@@ -217,4 +217,4 @@
     }
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/framework/XMLAttDef.hpp b/src/xercesc/framework/XMLAttDef.hpp
index f5e479d..c72bd4e 100644
--- a/src/xercesc/framework/XMLAttDef.hpp
+++ b/src/xercesc/framework/XMLAttDef.hpp
@@ -27,7 +27,7 @@
 #include <xercesc/util/XMemory.hpp>
 #include <xercesc/internal/XSerializable.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLAttr;
 
@@ -534,6 +534,6 @@
     fExternalAttribute = aValue;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/XMLAttDefList.cpp b/src/xercesc/framework/XMLAttDefList.cpp
index eb2c9c1..ac4a882 100644
--- a/src/xercesc/framework/XMLAttDefList.cpp
+++ b/src/xercesc/framework/XMLAttDefList.cpp
@@ -25,7 +25,7 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/framework/XMLAttDefList.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /***
  * Support for Serialization/De-serialization
@@ -38,5 +38,5 @@
     //no data
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
diff --git a/src/xercesc/framework/XMLAttDefList.hpp b/src/xercesc/framework/XMLAttDefList.hpp
index f0353a9..76d505e 100644
--- a/src/xercesc/framework/XMLAttDefList.hpp
+++ b/src/xercesc/framework/XMLAttDefList.hpp
@@ -26,7 +26,7 @@
 #include <xercesc/util/XMemory.hpp>
 #include <xercesc/internal/XSerializable.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLAttDef;
 
@@ -166,6 +166,6 @@
 {
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/XMLAttr.cpp b/src/xercesc/framework/XMLAttr.cpp
index 4c61550..4aa8a0f 100644
--- a/src/xercesc/framework/XMLAttr.cpp
+++ b/src/xercesc/framework/XMLAttr.cpp
@@ -27,7 +27,7 @@
 #include <xercesc/framework/MemoryManager.hpp>
 #include <xercesc/util/OutOfMemoryException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  XMLAttr: Constructors and Destructor
@@ -169,4 +169,4 @@
     fMemoryManager->deallocate(fValue); //delete [] fValue;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/framework/XMLAttr.hpp b/src/xercesc/framework/XMLAttr.hpp
index 27a1ecb..e1eb921 100644
--- a/src/xercesc/framework/XMLAttr.hpp
+++ b/src/xercesc/framework/XMLAttr.hpp
@@ -27,7 +27,7 @@
 #include <xercesc/framework/XMLAttDef.hpp>
 #include <xercesc/validators/datatype/DatatypeValidator.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
  *  This class defines the information about an attribute that will come out
@@ -496,6 +496,6 @@
     fSpecified = newValue;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/XMLBuffer.cpp b/src/xercesc/framework/XMLBuffer.cpp
index 5ae3a14..b7810a9 100644
--- a/src/xercesc/framework/XMLBuffer.cpp
+++ b/src/xercesc/framework/XMLBuffer.cpp
@@ -27,7 +27,7 @@
 #include <xercesc/util/XMLString.hpp>
 #include <xercesc/util/RuntimeException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  XMLBuffer: Buffer management
@@ -82,5 +82,5 @@
     }
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
diff --git a/src/xercesc/framework/XMLBuffer.hpp b/src/xercesc/framework/XMLBuffer.hpp
index 1062f6d..c2e57cf 100644
--- a/src/xercesc/framework/XMLBuffer.hpp
+++ b/src/xercesc/framework/XMLBuffer.hpp
@@ -25,9 +25,9 @@
 #include <xercesc/util/XMemory.hpp>
 #include <xercesc/util/PlatformUtils.hpp>
 #include <xercesc/framework/MemoryManager.hpp>
-#include <string.h>
+#include <cstring>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLBufferFullHandler;
 
@@ -276,6 +276,6 @@
 
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/XMLBufferMgr.cpp b/src/xercesc/framework/XMLBufferMgr.cpp
index a0a4799..f6dc508 100644
--- a/src/xercesc/framework/XMLBufferMgr.cpp
+++ b/src/xercesc/framework/XMLBufferMgr.cpp
@@ -23,11 +23,11 @@
 // ---------------------------------------------------------------------------
 //  Includes
 // ---------------------------------------------------------------------------
-//#include <string.h>
+//#include <cstring>
 #include <xercesc/framework/XMLBufferMgr.hpp>
 #include <xercesc/util/RuntimeException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Constructors and Destructor
@@ -111,4 +111,4 @@
     ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::BufMgr_BufferNotInPool, fMemoryManager);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/framework/XMLBufferMgr.hpp b/src/xercesc/framework/XMLBufferMgr.hpp
index a77405f..66ca261 100644
--- a/src/xercesc/framework/XMLBufferMgr.hpp
+++ b/src/xercesc/framework/XMLBufferMgr.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/framework/XMLBuffer.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLBufBid;
 
@@ -207,6 +207,6 @@
     XMLBufferMgr* const fMgr;
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/XMLContentModel.cpp b/src/xercesc/framework/XMLContentModel.cpp
index a92c3f3..9e6f227 100644
--- a/src/xercesc/framework/XMLContentModel.cpp
+++ b/src/xercesc/framework/XMLContentModel.cpp
@@ -25,7 +25,7 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/framework/XMLContentModel.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  public static data
@@ -34,5 +34,5 @@
 const unsigned int   XMLContentModel::gEOCFakeId      = 0xFFFFFFF1;
 const unsigned int   XMLContentModel::gEpsilonFakeId  = 0xFFFFFFF2;
 
-XERCES_CPP_NAMESPACE_END
+}
 
diff --git a/src/xercesc/framework/XMLContentModel.hpp b/src/xercesc/framework/XMLContentModel.hpp
index 24d23ac..31fde21 100644
--- a/src/xercesc/framework/XMLContentModel.hpp
+++ b/src/xercesc/framework/XMLContentModel.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/XMemory.hpp>
 #include <xercesc/util/QName.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class ContentLeafNameTypeVector;
 class GrammarResolver;
@@ -140,6 +140,6 @@
     XMLContentModel& operator=(const XMLContentModel&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/XMLDTDDescription.cpp b/src/xercesc/framework/XMLDTDDescription.cpp
index 058e56a..58b5dc9 100644
--- a/src/xercesc/framework/XMLDTDDescription.cpp
+++ b/src/xercesc/framework/XMLDTDDescription.cpp
@@ -25,7 +25,7 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/framework/XMLDTDDescription.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 XMLDTDDescription::~XMLDTDDescription()
 {
@@ -50,5 +50,5 @@
     //no data
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
diff --git a/src/xercesc/framework/XMLDTDDescription.hpp b/src/xercesc/framework/XMLDTDDescription.hpp
index e4a5455..3ef2532 100644
--- a/src/xercesc/framework/XMLDTDDescription.hpp
+++ b/src/xercesc/framework/XMLDTDDescription.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/framework/XMLGrammarDescription.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLPARSER_EXPORT XMLDTDDescription : public XMLGrammarDescription
 {
@@ -98,6 +98,6 @@
 };
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/XMLDocumentHandler.hpp b/src/xercesc/framework/XMLDocumentHandler.hpp
index 29d10ab..65b30d4 100644
--- a/src/xercesc/framework/XMLDocumentHandler.hpp
+++ b/src/xercesc/framework/XMLDocumentHandler.hpp
@@ -26,7 +26,7 @@
 #include <xercesc/util/RefVectorOf.hpp>
 #include <xercesc/framework/XMLAttr.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLElementDecl;
 class XMLEntityDecl;
@@ -278,6 +278,6 @@
     XMLDocumentHandler& operator=(const XMLDocumentHandler&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/XMLElementDecl.cpp b/src/xercesc/framework/XMLElementDecl.cpp
index a0f4353..104cb8f 100644
--- a/src/xercesc/framework/XMLElementDecl.cpp
+++ b/src/xercesc/framework/XMLElementDecl.cpp
@@ -30,7 +30,7 @@
 #include <xercesc/validators/schema/SchemaElementDecl.hpp>
 #include <xercesc/validators/DTD/DTDElementDecl.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  XMLElementDecl: Public, static data
@@ -167,4 +167,4 @@
     }
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/framework/XMLElementDecl.hpp b/src/xercesc/framework/XMLElementDecl.hpp
index 4501362..f73ca4c 100644
--- a/src/xercesc/framework/XMLElementDecl.hpp
+++ b/src/xercesc/framework/XMLElementDecl.hpp
@@ -28,7 +28,7 @@
 #include <xercesc/util/PlatformUtils.hpp>
 #include <xercesc/internal/XSerializable.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class ContentSpecNode;
 class XMLContentModel;
@@ -547,6 +547,6 @@
     fExternalElement = aValue;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/XMLEntityDecl.cpp b/src/xercesc/framework/XMLEntityDecl.cpp
index 43204b2..b6a7308 100644
--- a/src/xercesc/framework/XMLEntityDecl.cpp
+++ b/src/xercesc/framework/XMLEntityDecl.cpp
@@ -27,7 +27,7 @@
 #include <xercesc/util/XMLUniDefs.hpp>
 #include <xercesc/util/OutOfMemoryException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  XMLEntityDecl: Constructors and Destructor
@@ -197,4 +197,4 @@
     }
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/framework/XMLEntityDecl.hpp b/src/xercesc/framework/XMLEntityDecl.hpp
index 25c6049..048e2fb 100644
--- a/src/xercesc/framework/XMLEntityDecl.hpp
+++ b/src/xercesc/framework/XMLEntityDecl.hpp
@@ -27,7 +27,7 @@
 #include <xercesc/util/XMLString.hpp>
 #include <xercesc/internal/XSerializable.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
  *  This class defines that core information that defines an XML entity, no
@@ -507,6 +507,6 @@
     return fName;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/XMLEntityHandler.hpp b/src/xercesc/framework/XMLEntityHandler.hpp
index 67e1ec7..d46ff68 100644
--- a/src/xercesc/framework/XMLEntityHandler.hpp
+++ b/src/xercesc/framework/XMLEntityHandler.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XercesDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class InputSource;
 class XMLBuffer;
@@ -152,6 +152,6 @@
     XMLEntityHandler& operator=(const XMLEntityHandler&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/XMLErrorCodes.hpp b/src/xercesc/framework/XMLErrorCodes.hpp
index ea3a629..3431d67 100644
--- a/src/xercesc/framework/XMLErrorCodes.hpp
+++ b/src/xercesc/framework/XMLErrorCodes.hpp
@@ -7,7 +7,7 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/dom/DOMError.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLErrs
 {
@@ -345,7 +345,7 @@
     XMLErrs();
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/framework/XMLErrorReporter.hpp b/src/xercesc/framework/XMLErrorReporter.hpp
index e49cf65..ef80e24 100644
--- a/src/xercesc/framework/XMLErrorReporter.hpp
+++ b/src/xercesc/framework/XMLErrorReporter.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XercesDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 /**
@@ -157,6 +157,6 @@
     XMLErrorReporter& operator=(const XMLErrorReporter&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/XMLFormatter.cpp b/src/xercesc/framework/XMLFormatter.cpp
index 797335d..07dbc3d 100644
--- a/src/xercesc/framework/XMLFormatter.cpp
+++ b/src/xercesc/framework/XMLFormatter.cpp
@@ -33,9 +33,9 @@
 #include <xercesc/util/Janitor.hpp>
 #include <xercesc/util/XMLChar.hpp>
 
-#include <string.h>
+#include <cstring>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Local data
@@ -701,4 +701,4 @@
     }
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/framework/XMLFormatter.hpp b/src/xercesc/framework/XMLFormatter.hpp
index af3845c..f9c30eb 100644
--- a/src/xercesc/framework/XMLFormatter.hpp
+++ b/src/xercesc/framework/XMLFormatter.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/PlatformUtils.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLFormatTarget;
 class XMLTranscoder;
@@ -533,6 +533,6 @@
     return fUnRepFlags;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/XMLGrammarDescription.cpp b/src/xercesc/framework/XMLGrammarDescription.cpp
index 942f730..3f5ebd5 100644
--- a/src/xercesc/framework/XMLGrammarDescription.cpp
+++ b/src/xercesc/framework/XMLGrammarDescription.cpp
@@ -25,7 +25,7 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/framework/XMLGrammarDescription.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 XMLGrammarDescription::~XMLGrammarDescription()
 {
@@ -47,5 +47,5 @@
     //no data
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
diff --git a/src/xercesc/framework/XMLGrammarDescription.hpp b/src/xercesc/framework/XMLGrammarDescription.hpp
index 12e309d..eeee885 100644
--- a/src/xercesc/framework/XMLGrammarDescription.hpp
+++ b/src/xercesc/framework/XMLGrammarDescription.hpp
@@ -27,7 +27,7 @@
 
 #include <xercesc/internal/XSerializable.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLPARSER_EXPORT XMLGrammarDescription : public XSerializable, public XMemory
 {
@@ -100,6 +100,6 @@
     return fMemMgr;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/XMLGrammarPool.hpp b/src/xercesc/framework/XMLGrammarPool.hpp
index ae9d654..abe038c 100644
--- a/src/xercesc/framework/XMLGrammarPool.hpp
+++ b/src/xercesc/framework/XMLGrammarPool.hpp
@@ -28,7 +28,7 @@
 #include <xercesc/framework/psvi/XSModel.hpp>
 
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class Grammar;
 class XMLGrammarDescription;
@@ -317,6 +317,6 @@
 
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/XMLGrammarPoolImpl.cpp b/src/xercesc/framework/XMLGrammarPoolImpl.cpp
index 7e67c2d..506b68c 100644
--- a/src/xercesc/framework/XMLGrammarPoolImpl.cpp
+++ b/src/xercesc/framework/XMLGrammarPoolImpl.cpp
@@ -33,7 +33,7 @@
 #include <xercesc/util/OutOfMemoryException.hpp>
 #include <xercesc/util/SynchronizedStringPool.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // private function used to update fXSModel
 void XMLGrammarPoolImpl::createXSModel()
@@ -361,4 +361,4 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/framework/XMLGrammarPoolImpl.hpp b/src/xercesc/framework/XMLGrammarPoolImpl.hpp
index 877a170..5fc5eaf 100644
--- a/src/xercesc/framework/XMLGrammarPoolImpl.hpp
+++ b/src/xercesc/framework/XMLGrammarPoolImpl.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/framework/XMLGrammarPool.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLSynchronizedStringPool;
 
@@ -274,6 +274,6 @@
     bool                                fXSModelIsValid;
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/XMLNotationDecl.cpp b/src/xercesc/framework/XMLNotationDecl.cpp
index 0fcf4cb..816634f 100644
--- a/src/xercesc/framework/XMLNotationDecl.cpp
+++ b/src/xercesc/framework/XMLNotationDecl.cpp
@@ -26,7 +26,7 @@
 #include <xercesc/framework/XMLNotationDecl.hpp>
 #include <xercesc/util/OutOfMemoryException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  XMLNotationDecl: Constructors and operators
@@ -137,4 +137,4 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/framework/XMLNotationDecl.hpp b/src/xercesc/framework/XMLNotationDecl.hpp
index 5f1e4ac..6396f13 100644
--- a/src/xercesc/framework/XMLNotationDecl.hpp
+++ b/src/xercesc/framework/XMLNotationDecl.hpp
@@ -27,7 +27,7 @@
 #include <xercesc/util/XMLString.hpp>
 #include <xercesc/internal/XSerializable.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
  *  This class represents the core information about a notation declaration
@@ -226,6 +226,6 @@
     return fName;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/XMLPScanToken.hpp b/src/xercesc/framework/XMLPScanToken.hpp
index f816396..5ddcde5 100644
--- a/src/xercesc/framework/XMLPScanToken.hpp
+++ b/src/xercesc/framework/XMLPScanToken.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XMemory.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLScanner;
 
@@ -146,6 +146,6 @@
     fSequenceId = sequenceId;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/XMLRecognizer.cpp b/src/xercesc/framework/XMLRecognizer.cpp
index 6fbf978..f173c7a 100644
--- a/src/xercesc/framework/XMLRecognizer.cpp
+++ b/src/xercesc/framework/XMLRecognizer.cpp
@@ -27,7 +27,7 @@
 #include <xercesc/util/RuntimeException.hpp>
 #include <xercesc/util/XMLString.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Local data
@@ -267,4 +267,4 @@
     return gEncodingNameMap[theEncoding];
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/framework/XMLRecognizer.hpp b/src/xercesc/framework/XMLRecognizer.hpp
index 255e5b2..91cab6e 100644
--- a/src/xercesc/framework/XMLRecognizer.hpp
+++ b/src/xercesc/framework/XMLRecognizer.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/util/PlatformUtils.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
  *  This class provides some simple code to recognize the encodings of
@@ -133,6 +133,6 @@
     XMLRecognizer& operator=(const XMLRecognizer&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/XMLRefInfo.cpp b/src/xercesc/framework/XMLRefInfo.cpp
index 37529fa..05d88b3 100644
--- a/src/xercesc/framework/XMLRefInfo.cpp
+++ b/src/xercesc/framework/XMLRefInfo.cpp
@@ -24,7 +24,7 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/framework/XMLRefInfo.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /***
  * Support for Serialization/De-serialization
@@ -57,4 +57,4 @@
 {
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/framework/XMLRefInfo.hpp b/src/xercesc/framework/XMLRefInfo.hpp
index f2c7137..413001e 100644
--- a/src/xercesc/framework/XMLRefInfo.hpp
+++ b/src/xercesc/framework/XMLRefInfo.hpp
@@ -28,7 +28,7 @@
 
 #include <xercesc/internal/XSerializable.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
  *  This class provides a simple means to track ID Ref usage. Since id/idref
@@ -176,6 +176,6 @@
     fUsed = newValue;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/XMLSchemaDescription.cpp b/src/xercesc/framework/XMLSchemaDescription.cpp
index 7396105..927e6d0 100644
--- a/src/xercesc/framework/XMLSchemaDescription.cpp
+++ b/src/xercesc/framework/XMLSchemaDescription.cpp
@@ -25,7 +25,7 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/framework/XMLSchemaDescription.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 XMLSchemaDescription::~XMLSchemaDescription()
 {
@@ -49,5 +49,5 @@
     //no data
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
diff --git a/src/xercesc/framework/XMLSchemaDescription.hpp b/src/xercesc/framework/XMLSchemaDescription.hpp
index f0c2920..2b7b25c 100644
--- a/src/xercesc/framework/XMLSchemaDescription.hpp
+++ b/src/xercesc/framework/XMLSchemaDescription.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/framework/XMLGrammarDescription.hpp>
 #include <xercesc/util/RefArrayVectorOf.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 typedef const XMLCh* const LocationHint;
 
@@ -173,6 +173,6 @@
 };
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/XMLValidator.cpp b/src/xercesc/framework/XMLValidator.cpp
index 233ea23..d6982d5 100644
--- a/src/xercesc/framework/XMLValidator.cpp
+++ b/src/xercesc/framework/XMLValidator.cpp
@@ -28,7 +28,7 @@
 #include <xercesc/util/XMLMsgLoader.hpp>
 #include <xercesc/internal/XMLScanner.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 static XMLMsgLoader* sMsgLoader = 0;
 
@@ -293,4 +293,4 @@
 {
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/framework/XMLValidator.hpp b/src/xercesc/framework/XMLValidator.hpp
index 959483c..355df07 100644
--- a/src/xercesc/framework/XMLValidator.hpp
+++ b/src/xercesc/framework/XMLValidator.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/framework/XMLAttr.hpp>
 #include <xercesc/framework/XMLValidityCodes.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class ReaderMgr;
 class XMLBufferMgr;
@@ -421,6 +421,6 @@
     return fScanner;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/XMLValidityCodes.hpp b/src/xercesc/framework/XMLValidityCodes.hpp
index aed00fb..08339bf 100644
--- a/src/xercesc/framework/XMLValidityCodes.hpp
+++ b/src/xercesc/framework/XMLValidityCodes.hpp
@@ -7,7 +7,7 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/dom/DOMError.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLValid
 {
@@ -141,7 +141,7 @@
     XMLValid();
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/framework/psvi/PSVIAttribute.cpp b/src/xercesc/framework/psvi/PSVIAttribute.cpp
index 9500bb4..1e0839a 100644
--- a/src/xercesc/framework/psvi/PSVIAttribute.cpp
+++ b/src/xercesc/framework/psvi/PSVIAttribute.cpp
@@ -21,7 +21,7 @@
 
 #include <xercesc/framework/psvi/PSVIAttribute.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 PSVIAttribute::PSVIAttribute( MemoryManager* const manager ):  
         PSVIItem(manager)
@@ -66,6 +66,6 @@
     }
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 
diff --git a/src/xercesc/framework/psvi/PSVIAttribute.hpp b/src/xercesc/framework/psvi/PSVIAttribute.hpp
index ecc2100..6711d09 100644
--- a/src/xercesc/framework/psvi/PSVIAttribute.hpp
+++ b/src/xercesc/framework/psvi/PSVIAttribute.hpp
@@ -26,7 +26,7 @@
 #include <xercesc/framework/psvi/XSSimpleTypeDefinition.hpp>
 #include <xercesc/validators/datatype/DatatypeValidator.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
  * Represent the PSVI contributions for one attribute information item.
@@ -174,6 +174,6 @@
     fValidityState = newValue;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/psvi/PSVIAttributeList.cpp b/src/xercesc/framework/psvi/PSVIAttributeList.cpp
index a44882e..5ea441c 100644
--- a/src/xercesc/framework/psvi/PSVIAttributeList.cpp
+++ b/src/xercesc/framework/psvi/PSVIAttributeList.cpp
@@ -23,7 +23,7 @@
 #include <xercesc/framework/psvi/XSAttributeDeclaration.hpp>
 #include <xercesc/util/XMLString.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 PSVIAttributeList::PSVIAttributeList( MemoryManager* const manager ):
     fMemoryManager(manager)
@@ -107,4 +107,4 @@
     return 0;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/framework/psvi/PSVIAttributeList.hpp b/src/xercesc/framework/psvi/PSVIAttributeList.hpp
index 2e0c59e..58cb7ca 100644
--- a/src/xercesc/framework/psvi/PSVIAttributeList.hpp
+++ b/src/xercesc/framework/psvi/PSVIAttributeList.hpp
@@ -26,7 +26,7 @@
 #include <xercesc/framework/psvi/PSVIAttribute.hpp>
 #include <xercesc/util/RefVectorOf.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
  * A container for the PSVI contributions to attributes that occur
@@ -210,6 +210,6 @@
     fAttrPos = 0;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/psvi/PSVIElement.cpp b/src/xercesc/framework/psvi/PSVIElement.cpp
index fa93b9c..ba7b93b 100644
--- a/src/xercesc/framework/psvi/PSVIElement.cpp
+++ b/src/xercesc/framework/psvi/PSVIElement.cpp
@@ -24,7 +24,7 @@
 #include <xercesc/framework/psvi/XSComplexTypeDefinition.hpp>
 #include <xercesc/framework/psvi/XSSimpleTypeDefinition.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 PSVIElement::PSVIElement(MemoryManager* const manager):  
         PSVIItem(manager),
@@ -88,6 +88,6 @@
     fCanonicalValue = canonicalValue;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 
diff --git a/src/xercesc/framework/psvi/PSVIElement.hpp b/src/xercesc/framework/psvi/PSVIElement.hpp
index 40a3991..517b7e6 100644
--- a/src/xercesc/framework/psvi/PSVIElement.hpp
+++ b/src/xercesc/framework/psvi/PSVIElement.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/framework/psvi/PSVIItem.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
  * Represent the PSVI contributions for one element information item.
@@ -169,6 +169,6 @@
     return fSchemaInfo;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/psvi/PSVIHandler.hpp b/src/xercesc/framework/psvi/PSVIHandler.hpp
index 07d4887..c47ffed 100644
--- a/src/xercesc/framework/psvi/PSVIHandler.hpp
+++ b/src/xercesc/framework/psvi/PSVIHandler.hpp
@@ -23,7 +23,7 @@
 #define XERCESC_INCLUDE_GUARD_PSVIHANDLER_HPP
 
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 class PSVIElement;
@@ -143,6 +143,6 @@
 {
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/psvi/PSVIItem.cpp b/src/xercesc/framework/psvi/PSVIItem.cpp
index 641f708..1e463d1 100644
--- a/src/xercesc/framework/psvi/PSVIItem.cpp
+++ b/src/xercesc/framework/psvi/PSVIItem.cpp
@@ -24,7 +24,7 @@
 #include <xercesc/framework/psvi/XSComplexTypeDefinition.hpp>
 #include <xercesc/validators/datatype/DatatypeValidatorFactory.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 PSVIItem::PSVIItem( MemoryManager* const manager ):  
         fMemoryManager(manager),
@@ -140,6 +140,6 @@
 
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 
diff --git a/src/xercesc/framework/psvi/PSVIItem.hpp b/src/xercesc/framework/psvi/PSVIItem.hpp
index ab8a135..3e89dff 100644
--- a/src/xercesc/framework/psvi/PSVIItem.hpp
+++ b/src/xercesc/framework/psvi/PSVIItem.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/PlatformUtils.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
  * Represent the PSVI contributions for one element or one attribute information item.
@@ -304,6 +304,6 @@
     return fAssessmentType;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/psvi/XSAnnotation.cpp b/src/xercesc/framework/psvi/XSAnnotation.cpp
index c714e3a..171a5be 100644
--- a/src/xercesc/framework/psvi/XSAnnotation.cpp
+++ b/src/xercesc/framework/psvi/XSAnnotation.cpp
@@ -29,7 +29,7 @@
 #include <xercesc/parsers/XercesDOMParser.hpp>
 #include <xercesc/dom/DOMElement.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 XSAnnotation::XSAnnotation(const XMLCh*          const content,
                                  MemoryManager * const manager)
@@ -187,4 +187,4 @@
     }
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/framework/psvi/XSAnnotation.hpp b/src/xercesc/framework/psvi/XSAnnotation.hpp
index f10755a..a53efd0 100644
--- a/src/xercesc/framework/psvi/XSAnnotation.hpp
+++ b/src/xercesc/framework/psvi/XSAnnotation.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/framework/psvi/XSObject.hpp>
 #include <xercesc/internal/XSerializable.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
  * This class describes all properties of a Schema Annotation
@@ -190,6 +190,6 @@
     fCol  = col;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/psvi/XSAttributeDeclaration.cpp b/src/xercesc/framework/psvi/XSAttributeDeclaration.cpp
index 43aab76..def0aaf 100644
--- a/src/xercesc/framework/psvi/XSAttributeDeclaration.cpp
+++ b/src/xercesc/framework/psvi/XSAttributeDeclaration.cpp
@@ -27,7 +27,7 @@
 #include <xercesc/validators/schema/SchemaGrammar.hpp>
 #include <xercesc/validators/schema/SchemaAttDef.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  XSAttributeDeclaration: Constructors and Destructor
@@ -107,6 +107,6 @@
     return false;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 
diff --git a/src/xercesc/framework/psvi/XSAttributeDeclaration.hpp b/src/xercesc/framework/psvi/XSAttributeDeclaration.hpp
index 8a3fa6b..1cf4b8b 100644
--- a/src/xercesc/framework/psvi/XSAttributeDeclaration.hpp
+++ b/src/xercesc/framework/psvi/XSAttributeDeclaration.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/framework/psvi/XSObject.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
  * This class describes all properties of a Schema Attribute
@@ -205,6 +205,6 @@
     fEnclosingCTDefinition = toSet;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/psvi/XSAttributeGroupDefinition.cpp b/src/xercesc/framework/psvi/XSAttributeGroupDefinition.cpp
index f4e24bc..5d0a1b1 100644
--- a/src/xercesc/framework/psvi/XSAttributeGroupDefinition.cpp
+++ b/src/xercesc/framework/psvi/XSAttributeGroupDefinition.cpp
@@ -24,7 +24,7 @@
 #include <xercesc/validators/schema/XercesAttGroupInfo.hpp>
 #include <xercesc/framework/psvi/XSModel.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  XSAttributeGroupDefinition: Constructors and Destructor
@@ -71,6 +71,6 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
 
diff --git a/src/xercesc/framework/psvi/XSAttributeGroupDefinition.hpp b/src/xercesc/framework/psvi/XSAttributeGroupDefinition.hpp
index fc610de..3cf41c9 100644
--- a/src/xercesc/framework/psvi/XSAttributeGroupDefinition.hpp
+++ b/src/xercesc/framework/psvi/XSAttributeGroupDefinition.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/framework/psvi/XSObject.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
  * This class describes all properties of a Schema Attribute
@@ -162,6 +162,6 @@
     return fAnnotation;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/psvi/XSAttributeUse.cpp b/src/xercesc/framework/psvi/XSAttributeUse.cpp
index c9e407a..5cb981a 100644
--- a/src/xercesc/framework/psvi/XSAttributeUse.cpp
+++ b/src/xercesc/framework/psvi/XSAttributeUse.cpp
@@ -21,7 +21,7 @@
 
 #include <xercesc/framework/psvi/XSAttributeUse.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  XSAttributeUse: Constructors and Destructor
@@ -56,6 +56,6 @@
     fConstraintValue = constraintValue;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 
diff --git a/src/xercesc/framework/psvi/XSAttributeUse.hpp b/src/xercesc/framework/psvi/XSAttributeUse.hpp
index a3b7629..7534b62 100644
--- a/src/xercesc/framework/psvi/XSAttributeUse.hpp
+++ b/src/xercesc/framework/psvi/XSAttributeUse.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/framework/psvi/XSObject.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
  * This class describes all properties of a Schema Attribute
@@ -151,6 +151,6 @@
     return fConstraintValue;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/psvi/XSComplexTypeDefinition.cpp b/src/xercesc/framework/psvi/XSComplexTypeDefinition.cpp
index 70b2acb..60b30f2 100644
--- a/src/xercesc/framework/psvi/XSComplexTypeDefinition.cpp
+++ b/src/xercesc/framework/psvi/XSComplexTypeDefinition.cpp
@@ -31,7 +31,7 @@
 #include <xercesc/validators/schema/SchemaAttDefList.hpp>
 
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  XSComplexTypeDefinition: Constructors and Destructor
@@ -204,4 +204,4 @@
     return (type == ancestorType);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/framework/psvi/XSComplexTypeDefinition.hpp b/src/xercesc/framework/psvi/XSComplexTypeDefinition.hpp
index 8ee1a4f..269dd60 100644
--- a/src/xercesc/framework/psvi/XSComplexTypeDefinition.hpp
+++ b/src/xercesc/framework/psvi/XSComplexTypeDefinition.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/framework/psvi/XSTypeDefinition.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
  * This class represents a complexType definition
@@ -289,6 +289,6 @@
     fBaseType = xsBaseType;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/psvi/XSConstants.hpp b/src/xercesc/framework/psvi/XSConstants.hpp
index 897dea2..2bf90b2 100644
--- a/src/xercesc/framework/psvi/XSConstants.hpp
+++ b/src/xercesc/framework/psvi/XSConstants.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/RefVectorOf.hpp>
 #include <xercesc/util/RefArrayVectorOf.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
  * This contains constants needed in the schema component model.
@@ -53,9 +53,8 @@
 typedef RefVectorOf <XSSimpleTypeDefinition> XSSimpleTypeDefinitionList;
 typedef RefArrayVectorOf <XMLCh> StringList;
 
-class XMLPARSER_EXPORT XSConstants 
+namespace XSConstants
 {
-public:
 
     // XML Schema Components
     enum COMPONENT_TYPE {
@@ -184,13 +183,8 @@
 	     VALUE_CONSTRAINT_FIXED         = 2
     };
 
-private:
-    // -----------------------------------------------------------------------
-    //  Unimplemented constructors and operators
-    // -----------------------------------------------------------------------
-    XSConstants();
-};
+}
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/psvi/XSElementDeclaration.cpp b/src/xercesc/framework/psvi/XSElementDeclaration.cpp
index bd83bbf..98832c0 100644
--- a/src/xercesc/framework/psvi/XSElementDeclaration.cpp
+++ b/src/xercesc/framework/psvi/XSElementDeclaration.cpp
@@ -27,7 +27,7 @@
 #include <xercesc/validators/schema/SchemaElementDecl.hpp>
 #include <xercesc/util/StringPool.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
    
 // ---------------------------------------------------------------------------
 //  XSElementDeclaration: Constructors and Destructor
@@ -160,4 +160,4 @@
     return false;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/framework/psvi/XSElementDeclaration.hpp b/src/xercesc/framework/psvi/XSElementDeclaration.hpp
index 4bb1000..9df80bd 100644
--- a/src/xercesc/framework/psvi/XSElementDeclaration.hpp
+++ b/src/xercesc/framework/psvi/XSElementDeclaration.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/framework/psvi/XSObject.hpp>
 #include <xercesc/framework/psvi/XSNamedMap.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
  * This class describes all properties of a Schema Element Declaration
@@ -302,6 +302,6 @@
     fEnclosingTypeDefinition = toSet;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/psvi/XSFacet.cpp b/src/xercesc/framework/psvi/XSFacet.cpp
index 9c45d04..58ea2e1 100644
--- a/src/xercesc/framework/psvi/XSFacet.cpp
+++ b/src/xercesc/framework/psvi/XSFacet.cpp
@@ -21,7 +21,7 @@
 
 #include <xercesc/framework/psvi/XSFacet.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  XSFacet: Constructors and Destructor
@@ -44,6 +44,6 @@
 {
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 
diff --git a/src/xercesc/framework/psvi/XSFacet.hpp b/src/xercesc/framework/psvi/XSFacet.hpp
index 51a6184..faa4b02 100644
--- a/src/xercesc/framework/psvi/XSFacet.hpp
+++ b/src/xercesc/framework/psvi/XSFacet.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/framework/psvi/XSSimpleTypeDefinition.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
  * This represents all Schema Facet components with the exception 
@@ -146,6 +146,6 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/psvi/XSIDCDefinition.cpp b/src/xercesc/framework/psvi/XSIDCDefinition.cpp
index d2ccae1..b3f212d 100644
--- a/src/xercesc/framework/psvi/XSIDCDefinition.cpp
+++ b/src/xercesc/framework/psvi/XSIDCDefinition.cpp
@@ -27,7 +27,7 @@
 #include <xercesc/framework/psvi/XSAnnotation.hpp>
 #include <xercesc/util/StringPool.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  XSIDCDefinition: Constructors and Destructor
@@ -117,6 +117,6 @@
     return fXSAnnotationList;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 
diff --git a/src/xercesc/framework/psvi/XSIDCDefinition.hpp b/src/xercesc/framework/psvi/XSIDCDefinition.hpp
index ffeec1e..e5fdf93 100644
--- a/src/xercesc/framework/psvi/XSIDCDefinition.hpp
+++ b/src/xercesc/framework/psvi/XSIDCDefinition.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/framework/psvi/XSObject.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
  * This class describes all properties of a Schema Identity Constraint
@@ -185,6 +185,6 @@
     return fKey;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/psvi/XSModel.cpp b/src/xercesc/framework/psvi/XSModel.cpp
index fbb170b..7ae94cb 100644
--- a/src/xercesc/framework/psvi/XSModel.cpp
+++ b/src/xercesc/framework/psvi/XSModel.cpp
@@ -34,7 +34,7 @@
 #include <xercesc/framework/psvi/XSComplexTypeDefinition.hpp>
 #include <xercesc/framework/psvi/XSModelGroupDefinition.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  XSModel: Constructors and Destructor
@@ -796,4 +796,4 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/framework/psvi/XSModel.hpp b/src/xercesc/framework/psvi/XSModel.hpp
index 35b818a..a68b35d 100644
--- a/src/xercesc/framework/psvi/XSModel.hpp
+++ b/src/xercesc/framework/psvi/XSModel.hpp
@@ -29,7 +29,7 @@
 #include <xercesc/util/ValueVectorOf.hpp>
 #include <xercesc/validators/schema/SchemaElementDecl.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
  * This class contains all properties of the Schema infoitem as determined
@@ -333,6 +333,6 @@
     return fXSNamespaceItemList;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/psvi/XSModelGroup.cpp b/src/xercesc/framework/psvi/XSModelGroup.cpp
index 924f341..1ebef3d 100644
--- a/src/xercesc/framework/psvi/XSModelGroup.cpp
+++ b/src/xercesc/framework/psvi/XSModelGroup.cpp
@@ -22,7 +22,7 @@
 #include <xercesc/framework/psvi/XSModelGroup.hpp>
 #include <xercesc/framework/psvi/XSParticle.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  XSModelGroup: Constructors and Destructor
@@ -45,6 +45,6 @@
         delete fParticleList;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 
diff --git a/src/xercesc/framework/psvi/XSModelGroup.hpp b/src/xercesc/framework/psvi/XSModelGroup.hpp
index a7bce75..c025968 100644
--- a/src/xercesc/framework/psvi/XSModelGroup.hpp
+++ b/src/xercesc/framework/psvi/XSModelGroup.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/framework/psvi/XSObject.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
  * This class describes all properties of a Schema Model Group
@@ -151,6 +151,6 @@
     return fAnnotation;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/psvi/XSModelGroupDefinition.cpp b/src/xercesc/framework/psvi/XSModelGroupDefinition.cpp
index 8e1878d..73a308b 100644
--- a/src/xercesc/framework/psvi/XSModelGroupDefinition.cpp
+++ b/src/xercesc/framework/psvi/XSModelGroupDefinition.cpp
@@ -25,7 +25,7 @@
 #include <xercesc/validators/schema/XercesGroupInfo.hpp>
 
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  XSModelGroupDefinition: Constructors and Destructors
@@ -78,6 +78,6 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
 
diff --git a/src/xercesc/framework/psvi/XSModelGroupDefinition.hpp b/src/xercesc/framework/psvi/XSModelGroupDefinition.hpp
index 87b81b3..68a7ed3 100644
--- a/src/xercesc/framework/psvi/XSModelGroupDefinition.hpp
+++ b/src/xercesc/framework/psvi/XSModelGroupDefinition.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/framework/psvi/XSObject.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
  * This class describes all properties of a Schema Model Group
@@ -145,6 +145,6 @@
 
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/psvi/XSMultiValueFacet.cpp b/src/xercesc/framework/psvi/XSMultiValueFacet.cpp
index 57cb093..c6e9c33 100644
--- a/src/xercesc/framework/psvi/XSMultiValueFacet.cpp
+++ b/src/xercesc/framework/psvi/XSMultiValueFacet.cpp
@@ -22,7 +22,7 @@
 #include <xercesc/framework/psvi/XSMultiValueFacet.hpp>
 #include <xercesc/framework/psvi/XSAnnotation.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  XSMultiValueFacet: Constructors and Destructors
@@ -59,6 +59,6 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
 
diff --git a/src/xercesc/framework/psvi/XSMultiValueFacet.hpp b/src/xercesc/framework/psvi/XSMultiValueFacet.hpp
index e22dc7a..127c12c 100644
--- a/src/xercesc/framework/psvi/XSMultiValueFacet.hpp
+++ b/src/xercesc/framework/psvi/XSMultiValueFacet.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/framework/psvi/XSObject.hpp>
 #include <xercesc/framework/psvi/XSSimpleTypeDefinition.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
  * This class represents all Schema Facets which may possess multiple
@@ -147,6 +147,6 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/psvi/XSNamedMap.c b/src/xercesc/framework/psvi/XSNamedMap.c
index ad01e59..e2297ab 100644
--- a/src/xercesc/framework/psvi/XSNamedMap.c
+++ b/src/xercesc/framework/psvi/XSNamedMap.c
@@ -30,7 +30,7 @@
 #include <xercesc/util/RefVectorOf.hpp>
 #include <xercesc/util/StringPool.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  XSNamedMap: Constructors and Destructor
@@ -121,4 +121,4 @@
     fHash->put((void*)key1, fURIStringPool->getId(key2), toAdd);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/framework/psvi/XSNamedMap.hpp b/src/xercesc/framework/psvi/XSNamedMap.hpp
index 2fe5346..f523247 100644
--- a/src/xercesc/framework/psvi/XSNamedMap.hpp
+++ b/src/xercesc/framework/psvi/XSNamedMap.hpp
@@ -27,7 +27,7 @@
 #include <xercesc/util/RefHash2KeysTableOf.hpp>
 #include <xercesc/util/RefVectorOf.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLStringPool;
 
@@ -129,7 +129,7 @@
 
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #if !defined(XERCES_TMPLSINC)
 #include <xercesc/framework/psvi/XSNamedMap.c>
diff --git a/src/xercesc/framework/psvi/XSNamespaceItem.cpp b/src/xercesc/framework/psvi/XSNamespaceItem.cpp
index 2816932..c1f57e3 100644
--- a/src/xercesc/framework/psvi/XSNamespaceItem.cpp
+++ b/src/xercesc/framework/psvi/XSNamespaceItem.cpp
@@ -25,7 +25,7 @@
 #include <xercesc/framework/psvi/XSAnnotation.hpp>
 #include <xercesc/validators/schema/XMLSchemaDescriptionImpl.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  XSNamespaceItem: Constructors and Destructors
@@ -215,4 +215,4 @@
     return 0;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/framework/psvi/XSNamespaceItem.hpp b/src/xercesc/framework/psvi/XSNamespaceItem.hpp
index 8446cd0..1876c5f 100644
--- a/src/xercesc/framework/psvi/XSNamespaceItem.hpp
+++ b/src/xercesc/framework/psvi/XSNamespaceItem.hpp
@@ -26,7 +26,7 @@
 #include <xercesc/framework/psvi/XSObject.hpp>
 #include <xercesc/framework/psvi/XSNamedMap.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
  * This class contains all properties of the Schema Namespace Information infoitem.  
@@ -240,6 +240,6 @@
 
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/psvi/XSNotationDeclaration.cpp b/src/xercesc/framework/psvi/XSNotationDeclaration.cpp
index af6525b..9295945 100644
--- a/src/xercesc/framework/psvi/XSNotationDeclaration.cpp
+++ b/src/xercesc/framework/psvi/XSNotationDeclaration.cpp
@@ -24,7 +24,7 @@
 #include <xercesc/framework/XMLNotationDecl.hpp>
 #include <xercesc/framework/psvi/XSModel.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  XSNotationDeclaration: Constructors and Destructors
@@ -78,6 +78,6 @@
    return fXMLNotationDecl->getPublicId();
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 
diff --git a/src/xercesc/framework/psvi/XSNotationDeclaration.hpp b/src/xercesc/framework/psvi/XSNotationDeclaration.hpp
index 2e2cf74..8499a02 100644
--- a/src/xercesc/framework/psvi/XSNotationDeclaration.hpp
+++ b/src/xercesc/framework/psvi/XSNotationDeclaration.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/framework/psvi/XSObject.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
  * This class describes all properties of a Schema Notation Declaration
@@ -149,6 +149,6 @@
 
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/psvi/XSObject.cpp b/src/xercesc/framework/psvi/XSObject.cpp
index d0e4154..af00d49 100644
--- a/src/xercesc/framework/psvi/XSObject.cpp
+++ b/src/xercesc/framework/psvi/XSObject.cpp
@@ -22,7 +22,7 @@
 #include <xercesc/framework/psvi/XSObject.hpp>
 #include <xercesc/framework/psvi/XSModel.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  XSObject: Constructors and Destructor
@@ -73,4 +73,4 @@
     fId = id;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/framework/psvi/XSObject.hpp b/src/xercesc/framework/psvi/XSObject.hpp
index b1e28a4..e1b0a6f 100644
--- a/src/xercesc/framework/psvi/XSObject.hpp
+++ b/src/xercesc/framework/psvi/XSObject.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/PlatformUtils.hpp>
 #include <xercesc/framework/psvi/XSConstants.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
  * The XSObject forms the base of the Schema Component Model.  It contains
@@ -147,6 +147,6 @@
     return fComponentType;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/psvi/XSParticle.cpp b/src/xercesc/framework/psvi/XSParticle.cpp
index 2a74275..56ff5f7 100644
--- a/src/xercesc/framework/psvi/XSParticle.cpp
+++ b/src/xercesc/framework/psvi/XSParticle.cpp
@@ -24,7 +24,7 @@
 #include <xercesc/framework/psvi/XSModelGroup.hpp>
 #include <xercesc/framework/psvi/XSWildcard.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  XSParticle: Constructors and Destructor
@@ -78,4 +78,4 @@
     return 0;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/framework/psvi/XSParticle.hpp b/src/xercesc/framework/psvi/XSParticle.hpp
index 8d3769b..479cd3e 100644
--- a/src/xercesc/framework/psvi/XSParticle.hpp
+++ b/src/xercesc/framework/psvi/XSParticle.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/framework/psvi/XSObject.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
  * This class describes all properties of a Schema Particle
@@ -193,6 +193,6 @@
     return fTermType;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/psvi/XSSimpleTypeDefinition.cpp b/src/xercesc/framework/psvi/XSSimpleTypeDefinition.cpp
index 0755c4f..b8a8185 100644
--- a/src/xercesc/framework/psvi/XSSimpleTypeDefinition.cpp
+++ b/src/xercesc/framework/psvi/XSSimpleTypeDefinition.cpp
@@ -29,7 +29,7 @@
 #include <xercesc/util/XMLStringTokenizer.hpp>
 #include <xercesc/util/XMLUniDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Local, static functions
@@ -246,4 +246,4 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/framework/psvi/XSSimpleTypeDefinition.hpp b/src/xercesc/framework/psvi/XSSimpleTypeDefinition.hpp
index 3c1f5e2..8c8e55d 100644
--- a/src/xercesc/framework/psvi/XSSimpleTypeDefinition.hpp
+++ b/src/xercesc/framework/psvi/XSSimpleTypeDefinition.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/framework/psvi/XSTypeDefinition.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
  * This class represents a simpleType definition
@@ -453,6 +453,6 @@
     return fDatatypeValidator;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/psvi/XSTypeDefinition.cpp b/src/xercesc/framework/psvi/XSTypeDefinition.cpp
index 3063999..1ea53c8 100644
--- a/src/xercesc/framework/psvi/XSTypeDefinition.cpp
+++ b/src/xercesc/framework/psvi/XSTypeDefinition.cpp
@@ -23,7 +23,7 @@
 #include <xercesc/framework/psvi/XSModel.hpp>
 #include <xercesc/util/XMLString.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  XSTypeDefinition: Constructors and Destructor
@@ -69,6 +69,6 @@
     return derivedFromType(type);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 
diff --git a/src/xercesc/framework/psvi/XSTypeDefinition.hpp b/src/xercesc/framework/psvi/XSTypeDefinition.hpp
index 9f8bf9c..1e89d8d 100644
--- a/src/xercesc/framework/psvi/XSTypeDefinition.hpp
+++ b/src/xercesc/framework/psvi/XSTypeDefinition.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/framework/psvi/XSObject.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // forward declarations
 class XSNamespaceItem;
@@ -209,6 +209,6 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/psvi/XSValue.cpp b/src/xercesc/framework/psvi/XSValue.cpp
index caed61c..107252e 100644
--- a/src/xercesc/framework/psvi/XSValue.cpp
+++ b/src/xercesc/framework/psvi/XSValue.cpp
@@ -21,7 +21,7 @@
 
 #include <limits.h>
 #include <errno.h>
-#include <string.h>
+#include <cstring>
 #include <ctype.h>
 #include <math.h>
 #include <float.h>
@@ -48,7 +48,7 @@
 #include <xercesc/util/TransService.hpp>
 #include <xercesc/util/NumberFormatException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /*** issues
  *
@@ -1686,4 +1686,4 @@
     return true;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/framework/psvi/XSValue.hpp b/src/xercesc/framework/psvi/XSValue.hpp
index 2f131b9..8ec086b 100644
--- a/src/xercesc/framework/psvi/XSValue.hpp
+++ b/src/xercesc/framework/psvi/XSValue.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/PlatformUtils.hpp>
 #include <xercesc/util/ValueHashTableOf.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class RegularExpression;
 
@@ -401,6 +401,6 @@
 
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/framework/psvi/XSWildcard.cpp b/src/xercesc/framework/psvi/XSWildcard.cpp
index a417e64..331bcae 100644
--- a/src/xercesc/framework/psvi/XSWildcard.cpp
+++ b/src/xercesc/framework/psvi/XSWildcard.cpp
@@ -26,7 +26,7 @@
 #include <xercesc/validators/common/ContentSpecNode.hpp>
 #include <xercesc/validators/schema/SchemaAttDef.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  XSWildcard: Constructors and Destructor
@@ -178,4 +178,4 @@
     }
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/framework/psvi/XSWildcard.hpp b/src/xercesc/framework/psvi/XSWildcard.hpp
index f709058..eab8fe9 100644
--- a/src/xercesc/framework/psvi/XSWildcard.hpp
+++ b/src/xercesc/framework/psvi/XSWildcard.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/framework/psvi/XSObject.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
  * This class describes all properties of a Schema Wildcard
@@ -196,6 +196,6 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/internal/BinFileOutputStream.cpp b/src/xercesc/internal/BinFileOutputStream.cpp
index 7cbd7f3..4ab55ec 100644
--- a/src/xercesc/internal/BinFileOutputStream.cpp
+++ b/src/xercesc/internal/BinFileOutputStream.cpp
@@ -29,7 +29,7 @@
 #include <xercesc/util/XMLExceptMsgs.hpp>
 #include <xercesc/util/XMLString.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  BinFileOutputStream: Constructors and Destructor
@@ -101,4 +101,4 @@
     XMLPlatformUtils::writeBufferToFile(fSource, maxToWrite, toGo, fMemoryManager);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/internal/BinFileOutputStream.hpp b/src/xercesc/internal/BinFileOutputStream.hpp
index ba4cb85..aa092d4 100644
--- a/src/xercesc/internal/BinFileOutputStream.hpp
+++ b/src/xercesc/internal/BinFileOutputStream.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/framework/BinOutputStream.hpp>
 #include <xercesc/util/PlatformUtils.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLUTIL_EXPORT BinFileOutputStream : public BinOutputStream
 {
@@ -95,6 +95,6 @@
     return (fSource != (FileHandle) XERCES_Invalid_File_Handle);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/internal/BinMemOutputStream.cpp b/src/xercesc/internal/BinMemOutputStream.cpp
index a59ecd8..27cf8c4 100644
--- a/src/xercesc/internal/BinMemOutputStream.cpp
+++ b/src/xercesc/internal/BinMemOutputStream.cpp
@@ -21,9 +21,9 @@
 
 #include <xercesc/internal/BinMemOutputStream.hpp>
 #include <xercesc/util/XMLString.hpp>
-#include <string.h>
+#include <cstring>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 BinMemOutputStream::BinMemOutputStream( XMLSize_t            initCapacity
                                       , MemoryManager* const manager)
@@ -116,5 +116,5 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
diff --git a/src/xercesc/internal/BinMemOutputStream.hpp b/src/xercesc/internal/BinMemOutputStream.hpp
index 13e9885..2a3a4af 100644
--- a/src/xercesc/internal/BinMemOutputStream.hpp
+++ b/src/xercesc/internal/BinMemOutputStream.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/framework/BinOutputStream.hpp>
 #include <xercesc/util/PlatformUtils.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLUTIL_EXPORT BinMemOutputStream : public BinOutputStream 
 {
@@ -97,7 +97,7 @@
 };
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/internal/CharTypeTables.hpp b/src/xercesc/internal/CharTypeTables.hpp
index fca46d8..be314ff 100644
--- a/src/xercesc/internal/CharTypeTables.hpp
+++ b/src/xercesc/internal/CharTypeTables.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XercesDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  These are character type lookup tables. They are included into XMLReader
@@ -252,6 +252,6 @@
 };
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/internal/DGXMLScanner.cpp b/src/xercesc/internal/DGXMLScanner.cpp
index 4334223..38e58f4 100644
--- a/src/xercesc/internal/DGXMLScanner.cpp
+++ b/src/xercesc/internal/DGXMLScanner.cpp
@@ -43,7 +43,7 @@
 #include <xercesc/util/OutOfMemoryException.hpp>
 #include <xercesc/util/XMLResourceIdentifier.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 typedef JanitorMemFunCall<DGXMLScanner> CleanupType;
@@ -3575,4 +3575,4 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/internal/DGXMLScanner.hpp b/src/xercesc/internal/DGXMLScanner.hpp
index 68e1463..f35f404 100644
--- a/src/xercesc/internal/DGXMLScanner.hpp
+++ b/src/xercesc/internal/DGXMLScanner.hpp
@@ -28,7 +28,7 @@
 #include <xercesc/util/Hash2KeysSetOf.hpp>
 #include <xercesc/validators/common/Grammar.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class DTDElementDecl;
 class DTDGrammar;
@@ -187,6 +187,6 @@
     return Grammar::DTDGrammarType;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/internal/ElemStack.cpp b/src/xercesc/internal/ElemStack.cpp
index baff845..1d8d9c1 100644
--- a/src/xercesc/internal/ElemStack.cpp
+++ b/src/xercesc/internal/ElemStack.cpp
@@ -22,14 +22,14 @@
 // ---------------------------------------------------------------------------
 //  Includes
 // ---------------------------------------------------------------------------
-#include <string.h>
+#include <cstring>
 #include <xercesc/util/EmptyStackException.hpp>
 #include <xercesc/util/NoSuchElementException.hpp>
 #include <xercesc/framework/XMLElementDecl.hpp>
 #include <xercesc/internal/ElemStack.hpp>
 #include <xercesc/validators/common/Grammar.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  ElemStack: Constructors and Destructor
@@ -888,4 +888,4 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/internal/ElemStack.hpp b/src/xercesc/internal/ElemStack.hpp
index 4634ae0..4655871 100644
--- a/src/xercesc/internal/ElemStack.hpp
+++ b/src/xercesc/internal/ElemStack.hpp
@@ -26,7 +26,7 @@
 #include <xercesc/util/QName.hpp>
 #include <xercesc/util/ValueVectorOf.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLElementDecl;
 class Grammar;
@@ -587,6 +587,6 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/internal/EndOfEntityException.hpp b/src/xercesc/internal/EndOfEntityException.hpp
index 25039d5..93a6918 100644
--- a/src/xercesc/internal/EndOfEntityException.hpp
+++ b/src/xercesc/internal/EndOfEntityException.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XercesDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLEntityDecl;
 
@@ -111,6 +111,6 @@
     return fReaderNum;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/internal/IANAEncodings.hpp b/src/xercesc/internal/IANAEncodings.hpp
index c8c546a..2764ce2 100644
--- a/src/xercesc/internal/IANAEncodings.hpp
+++ b/src/xercesc/internal/IANAEncodings.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XercesDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ----------------------------------------------------------------
 //  This file was generated from the IANA charset source.
@@ -828,7 +828,7 @@
 };
 const unsigned int gEncodingArraySize = 791;
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/internal/IGXMLScanner.cpp b/src/xercesc/internal/IGXMLScanner.cpp
index 0062400..7ee8b7f 100644
--- a/src/xercesc/internal/IGXMLScanner.cpp
+++ b/src/xercesc/internal/IGXMLScanner.cpp
@@ -45,7 +45,7 @@
 #include <xercesc/validators/schema/identity/IC_Selector.hpp>
 #include <xercesc/util/OutOfMemoryException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 typedef JanitorMemFunCall<IGXMLScanner> CleanupType;
@@ -3268,4 +3268,4 @@
     fPSVIElemContext.fNormalizedValue = 0;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/internal/IGXMLScanner.hpp b/src/xercesc/internal/IGXMLScanner.hpp
index d3e1046..7908854 100644
--- a/src/xercesc/internal/IGXMLScanner.hpp
+++ b/src/xercesc/internal/IGXMLScanner.hpp
@@ -32,7 +32,7 @@
 #include <xercesc/validators/schema/SchemaInfo.hpp>
 #include <xercesc/validators/schema/SchemaElementDecl.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class DTDElementDecl;
 class DTDGrammar;
@@ -303,6 +303,6 @@
     return fGrammarType;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/internal/IGXMLScanner2.cpp b/src/xercesc/internal/IGXMLScanner2.cpp
index 6498fea..4c043ef 100644
--- a/src/xercesc/internal/IGXMLScanner2.cpp
+++ b/src/xercesc/internal/IGXMLScanner2.cpp
@@ -56,7 +56,7 @@
 #include <xercesc/validators/schema/identity/ValueStore.hpp>
 #include <xercesc/util/XMLStringTokenizer.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 inline XMLAttDefList& getAttDefList(bool              isSchemaGrammar
                                   , ComplexTypeInfo*  currType
@@ -3493,4 +3493,4 @@
         return elemDecl->getAttDefList();
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/internal/MemoryManagerImpl.cpp b/src/xercesc/internal/MemoryManagerImpl.cpp
index 2c2c928..81f6716 100644
--- a/src/xercesc/internal/MemoryManagerImpl.cpp
+++ b/src/xercesc/internal/MemoryManagerImpl.cpp
@@ -26,7 +26,7 @@
 #include <xercesc/internal/MemoryManagerImpl.hpp>
 #include <xercesc/util/OutOfMemoryException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 MemoryManager* MemoryManagerImpl::getExceptionMemoryManager()
 {
@@ -53,4 +53,4 @@
         ::operator delete(p);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/internal/MemoryManagerImpl.hpp b/src/xercesc/internal/MemoryManagerImpl.hpp
index 5aeb168..f91bcda 100644
--- a/src/xercesc/internal/MemoryManagerImpl.hpp
+++ b/src/xercesc/internal/MemoryManagerImpl.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/framework/MemoryManager.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
   * Configurable memory manager
@@ -101,6 +101,6 @@
 
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/internal/ReaderMgr.cpp b/src/xercesc/internal/ReaderMgr.cpp
index d14483e..0d92fc9 100644
--- a/src/xercesc/internal/ReaderMgr.cpp
+++ b/src/xercesc/internal/ReaderMgr.cpp
@@ -43,7 +43,7 @@
 #include <xercesc/util/OutOfMemoryException.hpp>
 #include <xercesc/util/XMLResourceIdentifier.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  ReaderMgr: Constructors and Destructor
@@ -1120,4 +1120,4 @@
     return true;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/internal/ReaderMgr.hpp b/src/xercesc/internal/ReaderMgr.hpp
index f63b219..d362af5 100644
--- a/src/xercesc/internal/ReaderMgr.hpp
+++ b/src/xercesc/internal/ReaderMgr.hpp
@@ -28,7 +28,7 @@
 #include <xercesc/sax/Locator.hpp>
 #include <xercesc/framework/XMLBuffer.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLEntityDecl;
 class XMLEntityHandler;
@@ -442,6 +442,6 @@
     ReaderMgr*  fMgr;
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/internal/SGXMLScanner.cpp b/src/xercesc/internal/SGXMLScanner.cpp
index cde24fe..f43c693 100644
--- a/src/xercesc/internal/SGXMLScanner.cpp
+++ b/src/xercesc/internal/SGXMLScanner.cpp
@@ -51,7 +51,7 @@
 #include <xercesc/util/OutOfMemoryException.hpp>
 #include <xercesc/util/XMLStringTokenizer.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 inline XMLAttDefList& getAttDefList(ComplexTypeInfo* currType, XMLElementDecl* elemDecl);
 
@@ -4961,4 +4961,4 @@
     fPSVIElemContext.fNormalizedValue = 0;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/internal/SGXMLScanner.hpp b/src/xercesc/internal/SGXMLScanner.hpp
index fe280b0..86659d3 100644
--- a/src/xercesc/internal/SGXMLScanner.hpp
+++ b/src/xercesc/internal/SGXMLScanner.hpp
@@ -33,7 +33,7 @@
 #include <xercesc/validators/schema/SchemaElementDecl.hpp>
 
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class SchemaGrammar;
 class SchemaValidator;
@@ -302,6 +302,6 @@
     return fGrammarType;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/internal/ValidationContextImpl.cpp b/src/xercesc/internal/ValidationContextImpl.cpp
index 3a79f70..9fddb76 100644
--- a/src/xercesc/internal/ValidationContextImpl.cpp
+++ b/src/xercesc/internal/ValidationContextImpl.cpp
@@ -31,7 +31,7 @@
 #include <xercesc/internal/ElemStack.hpp>
 #include <xercesc/internal/XMLScanner.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Constructor and Destructor
@@ -214,4 +214,4 @@
     return XMLUni::fgZeroLenString;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/internal/ValidationContextImpl.hpp b/src/xercesc/internal/ValidationContextImpl.hpp
index 3cdc0d8..2086140 100644
--- a/src/xercesc/internal/ValidationContextImpl.hpp
+++ b/src/xercesc/internal/ValidationContextImpl.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/framework/ValidationContext.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 class ElemStack;
 class NamespaceScope;
 
@@ -167,7 +167,7 @@
     fNamespaceScope = nsStack;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/internal/VecAttrListImpl.cpp b/src/xercesc/internal/VecAttrListImpl.cpp
index 322a83a..bb7c869 100644
--- a/src/xercesc/internal/VecAttrListImpl.cpp
+++ b/src/xercesc/internal/VecAttrListImpl.cpp
@@ -26,7 +26,7 @@
 #include <xercesc/util/Janitor.hpp>
 #include <xercesc/internal/VecAttrListImpl.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Constructors and Destructor
@@ -156,4 +156,4 @@
     fVector = srcVec;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/internal/VecAttrListImpl.hpp b/src/xercesc/internal/VecAttrListImpl.hpp
index 2d28a90..0f384f8 100644
--- a/src/xercesc/internal/VecAttrListImpl.hpp
+++ b/src/xercesc/internal/VecAttrListImpl.hpp
@@ -26,7 +26,7 @@
 #include <xercesc/framework/XMLAttr.hpp>
 #include <xercesc/util/RefVectorOf.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLPARSER_EXPORT VecAttrListImpl : public XMemory, public AttributeList
 {
@@ -91,6 +91,6 @@
     const RefVectorOf<XMLAttr>* fVector;
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/internal/VecAttributesImpl.cpp b/src/xercesc/internal/VecAttributesImpl.cpp
index fac84b9..b476101 100644
--- a/src/xercesc/internal/VecAttributesImpl.cpp
+++ b/src/xercesc/internal/VecAttributesImpl.cpp
@@ -26,7 +26,7 @@
 #include <xercesc/util/Janitor.hpp>
 #include <xercesc/internal/VecAttributesImpl.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Constructors and Destructor
@@ -246,4 +246,4 @@
     fScanner = scanner ;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/internal/VecAttributesImpl.hpp b/src/xercesc/internal/VecAttributesImpl.hpp
index d0d412c..c891bb7 100644
--- a/src/xercesc/internal/VecAttributesImpl.hpp
+++ b/src/xercesc/internal/VecAttributesImpl.hpp
@@ -28,7 +28,7 @@
 #include <xercesc/internal/XMLScanner.hpp>
 #include <xercesc/framework/XMLBuffer.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLPARSER_EXPORT VecAttributesImpl : public Attributes
 {
@@ -112,6 +112,6 @@
     const XMLScanner *		fScanner ;
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif // ! VECATTRIBUTESIMPL_HPP
diff --git a/src/xercesc/internal/WFXMLScanner.cpp b/src/xercesc/internal/WFXMLScanner.cpp
index dc83cc5..cc1e8a3 100644
--- a/src/xercesc/internal/WFXMLScanner.cpp
+++ b/src/xercesc/internal/WFXMLScanner.cpp
@@ -35,7 +35,7 @@
 #include <xercesc/internal/EndOfEntityException.hpp>
 #include <xercesc/util/OutOfMemoryException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  WFXMLScanner: Constructors and Destructor
@@ -2052,4 +2052,4 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/internal/WFXMLScanner.hpp b/src/xercesc/internal/WFXMLScanner.hpp
index b88b034..47962fc 100644
--- a/src/xercesc/internal/WFXMLScanner.hpp
+++ b/src/xercesc/internal/WFXMLScanner.hpp
@@ -27,7 +27,7 @@
 #include <xercesc/util/ValueVectorOf.hpp>
 #include <xercesc/validators/DTD/DTDElementDecl.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 //  This is a a non-validating scanner. No DOCTYPE or XML Schema processing
@@ -148,6 +148,6 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/internal/XMLInternalErrorHandler.hpp b/src/xercesc/internal/XMLInternalErrorHandler.hpp
index d56c229..38def8a 100644
--- a/src/xercesc/internal/XMLInternalErrorHandler.hpp
+++ b/src/xercesc/internal/XMLInternalErrorHandler.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/sax/ErrorHandler.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLInternalErrorHandler : public ErrorHandler
 {
@@ -134,6 +134,6 @@
     fSawFatal = false;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/internal/XMLReader.cpp b/src/xercesc/internal/XMLReader.cpp
index 405474a..1facb53 100644
--- a/src/xercesc/internal/XMLReader.cpp
+++ b/src/xercesc/internal/XMLReader.cpp
@@ -32,7 +32,7 @@
 #include <xercesc/util/XMLString.hpp>
 #include <xercesc/util/Janitor.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  XMLReader: Query Methods
@@ -2038,4 +2038,4 @@
     }
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/internal/XMLReader.hpp b/src/xercesc/internal/XMLReader.hpp
index 966ca22..adb66cc 100644
--- a/src/xercesc/internal/XMLReader.hpp
+++ b/src/xercesc/internal/XMLReader.hpp
@@ -27,7 +27,7 @@
 #include <xercesc/framework/XMLBuffer.hpp>
 #include <xercesc/util/TranscodingException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class InputSource;
 class BinInputStream;
@@ -785,6 +785,6 @@
     return true;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/internal/XMLScanner.cpp b/src/xercesc/internal/XMLScanner.cpp
index 72327e5..e7532f5 100644
--- a/src/xercesc/internal/XMLScanner.cpp
+++ b/src/xercesc/internal/XMLScanner.cpp
@@ -43,7 +43,7 @@
 #include <xercesc/util/OutOfMemoryException.hpp>
 #include <xercesc/util/XMLResourceIdentifier.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Local static data
@@ -2411,4 +2411,4 @@
     }
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/internal/XMLScanner.hpp b/src/xercesc/internal/XMLScanner.hpp
index c8bdaf1..30fc72d 100644
--- a/src/xercesc/internal/XMLScanner.hpp
+++ b/src/xercesc/internal/XMLScanner.hpp
@@ -36,7 +36,7 @@
 #include <xercesc/framework/ValidationContext.hpp>
 #include <xercesc/validators/common/GrammarResolver.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class InputSource;
 class XMLDocumentHandler;
@@ -1443,6 +1443,6 @@
     return Grammar::UnKnown;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/internal/XMLScannerResolver.cpp b/src/xercesc/internal/XMLScannerResolver.cpp
index d4711bc..b8db0e9 100644
--- a/src/xercesc/internal/XMLScannerResolver.cpp
+++ b/src/xercesc/internal/XMLScannerResolver.cpp
@@ -29,7 +29,7 @@
 #include <xercesc/internal/SGXMLScanner.hpp>
 #include <xercesc/internal/IGXMLScanner.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  XMLScannerResolver: Public static methods
@@ -85,4 +85,4 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/internal/XMLScannerResolver.hpp b/src/xercesc/internal/XMLScannerResolver.hpp
index 26b7e39..56c48c3 100644
--- a/src/xercesc/internal/XMLScannerResolver.hpp
+++ b/src/xercesc/internal/XMLScannerResolver.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/internal/XMLScanner.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLValidator;
 class XMLDocumentHandler;
@@ -74,6 +74,6 @@
     ~XMLScannerResolver();
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/internal/XProtoType.cpp b/src/xercesc/internal/XProtoType.cpp
index c0b85f1..8080690 100644
--- a/src/xercesc/internal/XProtoType.cpp
+++ b/src/xercesc/internal/XProtoType.cpp
@@ -26,7 +26,7 @@
 #include <xercesc/internal/XSerializeEngine.hpp>
 #include <xercesc/util/XMLString.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /***
  *
@@ -104,5 +104,5 @@
 
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
diff --git a/src/xercesc/internal/XProtoType.hpp b/src/xercesc/internal/XProtoType.hpp
index 5af22a1..a652a75 100644
--- a/src/xercesc/internal/XProtoType.hpp
+++ b/src/xercesc/internal/XProtoType.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/PlatformUtils.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XSerializeEngine;
 class XSerializable;
@@ -88,6 +88,6 @@
 XProtoType class_name::class##class_name = \
 {const_cast<XMLByte*>(reinterpret_cast<const XMLByte *>(#class_name)), class_name::createObject };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/internal/XSAXMLScanner.cpp b/src/xercesc/internal/XSAXMLScanner.cpp
index 7a0c2cd..bb63c23 100644
--- a/src/xercesc/internal/XSAXMLScanner.cpp
+++ b/src/xercesc/internal/XSAXMLScanner.cpp
@@ -32,7 +32,7 @@
 #include <xercesc/validators/schema/SchemaValidator.hpp>
 
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  XSAXMLScanner: Constructors and Destructor
@@ -722,4 +722,4 @@
     }
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/internal/XSAXMLScanner.hpp b/src/xercesc/internal/XSAXMLScanner.hpp
index 4935e6c..26a2908 100644
--- a/src/xercesc/internal/XSAXMLScanner.hpp
+++ b/src/xercesc/internal/XSAXMLScanner.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/internal/SGXMLScanner.hpp>
 
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //
 //  This is a scanner class, which processes/validates contents of XML Schema
@@ -93,6 +93,6 @@
     return XMLUni::fgXSAXMLScanner;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/internal/XSObjectFactory.cpp b/src/xercesc/internal/XSObjectFactory.cpp
index 3ac9a6e..8bbb630 100644
--- a/src/xercesc/internal/XSObjectFactory.cpp
+++ b/src/xercesc/internal/XSObjectFactory.cpp
@@ -52,7 +52,7 @@
 #include <xercesc/validators/schema/identity/XercesXPath.hpp>
 #include <xercesc/util/XMLStringTokenizer.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 static XMLCh regexSeparator[] = {chPipe, chNull};
 
@@ -1053,4 +1053,4 @@
     return false;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/internal/XSObjectFactory.hpp b/src/xercesc/internal/XSObjectFactory.hpp
index e42d32e..a5d3036 100644
--- a/src/xercesc/internal/XSObjectFactory.hpp
+++ b/src/xercesc/internal/XSObjectFactory.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/framework/psvi/XSConstants.hpp>
 #include <xercesc/util/RefHashTableOf.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XSObject;
 class XSAttributeUse;
@@ -232,6 +232,6 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/internal/XSerializable.hpp b/src/xercesc/internal/XSerializable.hpp
index 1b0fb7a..c1e10e6 100644
--- a/src/xercesc/internal/XSerializable.hpp
+++ b/src/xercesc/internal/XSerializable.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/internal/XSerializeEngine.hpp>
 #include <xercesc/internal/XProtoType.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLUTIL_EXPORT XSerializable
 {
@@ -111,7 +111,7 @@
     if (( lptr && !rptr) || (!lptr &&  rptr))  \
         return false;
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/internal/XSerializationException.hpp b/src/xercesc/internal/XSerializationException.hpp
index 62dbc3d..12891e5 100644
--- a/src/xercesc/internal/XSerializationException.hpp
+++ b/src/xercesc/internal/XSerializationException.hpp
@@ -25,10 +25,10 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/util/XMLException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 MakeXMLException(XSerializationException, XMLUTIL_EXPORT)
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/internal/XSerializeEngine.cpp b/src/xercesc/internal/XSerializeEngine.cpp
index 5804bb0..a2ddb80 100644
--- a/src/xercesc/internal/XSerializeEngine.cpp
+++ b/src/xercesc/internal/XSerializeEngine.cpp
@@ -31,10 +31,10 @@
 #include <xercesc/framework/BinOutputStream.hpp>
 #include <xercesc/util/BinInputStream.hpp>
 
-#include <stdio.h>
+#include <cstdio>
 #include <assert.h>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 const bool XSerializeEngine::toWriteBufferLen = true;
 const bool XSerializeEngine::toReadBufferLen  = true;
@@ -1155,4 +1155,4 @@
 */
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/internal/XSerializeEngine.hpp b/src/xercesc/internal/XSerializeEngine.hpp
index 025dc11..8ec9d69 100644
--- a/src/xercesc/internal/XSerializeEngine.hpp
+++ b/src/xercesc/internal/XSerializeEngine.hpp
@@ -28,7 +28,7 @@
 
 #include <xercesc/internal/XSerializationException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XSerializable;
 class XProtoType;
@@ -836,6 +836,6 @@
 };
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/internal/XTemplateSerializer.cpp b/src/xercesc/internal/XTemplateSerializer.cpp
index b07454c..14712fb 100644
--- a/src/xercesc/internal/XTemplateSerializer.cpp
+++ b/src/xercesc/internal/XTemplateSerializer.cpp
@@ -24,11 +24,11 @@
 #include <xercesc/framework/XMLGrammarPool.hpp>
 #include <xercesc/validators/common/Grammar.hpp>
 
-#include <stdio.h>
-#include <stdlib.h>
+#include <cstdio>
+#include <cstdlib>
 #include <assert.h>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /***
  * internal class meant to be comsumed by XTemplateSerializer only
@@ -2319,4 +2319,4 @@
     }
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/internal/XTemplateSerializer.hpp b/src/xercesc/internal/XTemplateSerializer.hpp
index 108d900..3882a2b 100644
--- a/src/xercesc/internal/XTemplateSerializer.hpp
+++ b/src/xercesc/internal/XTemplateSerializer.hpp
@@ -47,7 +47,7 @@
 #include <xercesc/validators/schema/identity/XercesXPath.hpp>
 #include <xercesc/framework/psvi/XSAnnotation.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLUTIL_EXPORT XTemplateSerializer
 {
@@ -360,6 +360,6 @@
 
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/parsers/AbstractDOMParser.cpp b/src/xercesc/parsers/AbstractDOMParser.cpp
index b721b53..4526e87 100644
--- a/src/xercesc/parsers/AbstractDOMParser.cpp
+++ b/src/xercesc/parsers/AbstractDOMParser.cpp
@@ -65,7 +65,7 @@
 #include <xercesc/util/OutOfMemoryException.hpp>
 #include <xercesc/xinclude/XIncludeUtils.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 // ---------------------------------------------------------------------------
@@ -736,8 +736,8 @@
     if(fCreateSchemaInfo)
     {
         for (XMLSize_t index=0; index < psviAttributes->getLength(); index++) {
-            XERCES_CPP_NAMESPACE_QUALIFIER PSVIAttribute *attrInfo=psviAttributes->getAttributePSVIAtIndex(index);
-            XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* pAttrNode=fCurrentNode->getAttributes()->getNamedItemNS(psviAttributes->getAttributeNamespaceAtIndex(index),
+            xercesc::PSVIAttribute *attrInfo=psviAttributes->getAttributePSVIAtIndex(index);
+            xercesc::DOMNode* pAttrNode=fCurrentNode->getAttributes()->getNamedItemNS(psviAttributes->getAttributeNamespaceAtIndex(index),
                                                                                                             psviAttributes->getAttributeNameAtIndex(index));
             if(pAttrNode!=NULL)
             {
@@ -1781,4 +1781,4 @@
                    qName);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/parsers/AbstractDOMParser.hpp b/src/xercesc/parsers/AbstractDOMParser.hpp
index be4e0ea..664a887 100644
--- a/src/xercesc/parsers/AbstractDOMParser.hpp
+++ b/src/xercesc/parsers/AbstractDOMParser.hpp
@@ -34,7 +34,7 @@
 #include <xercesc/framework/XMLBufferMgr.hpp>
 #include <xercesc/framework/psvi/PSVIHandler.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLPScanToken;
 class XMLScanner;
@@ -1895,6 +1895,6 @@
     fParseInProgress = toSet;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/parsers/DOMLSParserImpl.cpp b/src/xercesc/parsers/DOMLSParserImpl.cpp
index 8f09387..a0dcfec 100644
--- a/src/xercesc/parsers/DOMLSParserImpl.cpp
+++ b/src/xercesc/parsers/DOMLSParserImpl.cpp
@@ -54,7 +54,7 @@
 #include <xercesc/util/RuntimeException.hpp>
 #include <xercesc/util/XMLDOMMsg.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 // ---------------------------------------------------------------------------
@@ -1375,4 +1375,4 @@
         endElement(elemDecl, urlId, isRoot, elemPrefix);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/parsers/DOMLSParserImpl.hpp b/src/xercesc/parsers/DOMLSParserImpl.hpp
index 6e3bf0e..9c240cb 100644
--- a/src/xercesc/parsers/DOMLSParserImpl.hpp
+++ b/src/xercesc/parsers/DOMLSParserImpl.hpp
@@ -31,7 +31,7 @@
 #include <xercesc/util/RefVectorOf.hpp>
 #include <xercesc/util/ValueHashTableOf.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLEntityResolver;
 class XMLResourceIdentifier;
@@ -710,6 +710,6 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/parsers/SAX2XMLFilterImpl.cpp b/src/xercesc/parsers/SAX2XMLFilterImpl.cpp
index 888e780..b2186a2 100644
--- a/src/xercesc/parsers/SAX2XMLFilterImpl.cpp
+++ b/src/xercesc/parsers/SAX2XMLFilterImpl.cpp
@@ -21,7 +21,7 @@
 
 #include <xercesc/parsers/SAX2XMLFilterImpl.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 SAX2XMLFilterImpl::SAX2XMLFilterImpl(SAX2XMLReader* parent) :
     fParentReader(0)
@@ -413,4 +413,4 @@
         fErrorHandler->resetErrors();
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/parsers/SAX2XMLFilterImpl.hpp b/src/xercesc/parsers/SAX2XMLFilterImpl.hpp
index 008d78a..eac84e7 100644
--- a/src/xercesc/parsers/SAX2XMLFilterImpl.hpp
+++ b/src/xercesc/parsers/SAX2XMLFilterImpl.hpp
@@ -28,7 +28,7 @@
 #include <xercesc/sax2/ContentHandler.hpp>
 #include <xercesc/sax/ErrorHandler.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
   * This class implements the SAX2 'XMLFilterImpl' interface and should be
@@ -1440,6 +1440,6 @@
     return false;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/parsers/SAX2XMLReaderImpl.cpp b/src/xercesc/parsers/SAX2XMLReaderImpl.cpp
index fda4a8b..23f2923 100644
--- a/src/xercesc/parsers/SAX2XMLReaderImpl.cpp
+++ b/src/xercesc/parsers/SAX2XMLReaderImpl.cpp
@@ -39,9 +39,9 @@
 #include <xercesc/framework/XMLSchemaDescription.hpp>
 #include <xercesc/util/OutOfMemoryException.hpp>
 #include <xercesc/util/XMLEntityResolver.hpp>
-#include <string.h>
+#include <cstring>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 SAX2XMLReader * XMLReaderFactory::createXMLReader(  MemoryManager* const  manager
@@ -1622,4 +1622,4 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/parsers/SAX2XMLReaderImpl.hpp b/src/xercesc/parsers/SAX2XMLReaderImpl.hpp
index dcac0b7..6bc3b07 100644
--- a/src/xercesc/parsers/SAX2XMLReaderImpl.hpp
+++ b/src/xercesc/parsers/SAX2XMLReaderImpl.hpp
@@ -31,7 +31,7 @@
 #include <xercesc/util/SecurityManager.hpp>
 #include <xercesc/util/ValueStackOf.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 class ContentHandler;
@@ -1744,6 +1744,6 @@
     return fScanner->getSrcOffset();
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/parsers/SAXParser.cpp b/src/xercesc/parsers/SAXParser.cpp
index 0c80a13..8a46ad3 100644
--- a/src/xercesc/parsers/SAXParser.cpp
+++ b/src/xercesc/parsers/SAXParser.cpp
@@ -38,9 +38,9 @@
 #include <xercesc/util/Janitor.hpp>
 #include <xercesc/util/OutOfMemoryException.hpp>
 #include <xercesc/util/XMLEntityResolver.hpp>
-#include <string.h>
+#include <cstring>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 // ---------------------------------------------------------------------------
@@ -1348,4 +1348,4 @@
     fScanner->resetCachedGrammar();
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/parsers/SAXParser.hpp b/src/xercesc/parsers/SAXParser.hpp
index 5590f20..c0c903d 100644
--- a/src/xercesc/parsers/SAXParser.hpp
+++ b/src/xercesc/parsers/SAXParser.hpp
@@ -34,7 +34,7 @@
 #include <xercesc/validators/DTD/DocTypeHandler.hpp>
 
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 class DocumentHandler;
@@ -2199,6 +2199,6 @@
     return fGrammarResolver;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/parsers/XercesDOMParser.cpp b/src/xercesc/parsers/XercesDOMParser.cpp
index 9ff0ac3..9c7f88b 100644
--- a/src/xercesc/parsers/XercesDOMParser.cpp
+++ b/src/xercesc/parsers/XercesDOMParser.cpp
@@ -42,7 +42,7 @@
 #include <xercesc/util/OutOfMemoryException.hpp>
 #include <xercesc/util/XMLEntityResolver.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 
@@ -346,4 +346,4 @@
     getScanner()->resetCachedGrammar();
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/parsers/XercesDOMParser.hpp b/src/xercesc/parsers/XercesDOMParser.hpp
index f257d2e..541c0d5 100644
--- a/src/xercesc/parsers/XercesDOMParser.hpp
+++ b/src/xercesc/parsers/XercesDOMParser.hpp
@@ -26,7 +26,7 @@
 #include <xercesc/parsers/AbstractDOMParser.hpp>
 #include <xercesc/validators/common/Grammar.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 class EntityResolver;
@@ -691,6 +691,6 @@
     return fXMLEntityResolver;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/sax/AttributeList.hpp b/src/xercesc/sax/AttributeList.hpp
index 34ccc81..57ebcfb 100644
--- a/src/xercesc/sax/AttributeList.hpp
+++ b/src/xercesc/sax/AttributeList.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XercesDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
   * Interface for an element's attribute specifications.
@@ -224,6 +224,6 @@
 
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/sax/DTDHandler.hpp b/src/xercesc/sax/DTDHandler.hpp
index 70eb79a..be86996 100644
--- a/src/xercesc/sax/DTDHandler.hpp
+++ b/src/xercesc/sax/DTDHandler.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XercesDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
   * Receive notification of basic DTD-related events.
@@ -154,6 +154,6 @@
 
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/sax/DocumentHandler.hpp b/src/xercesc/sax/DocumentHandler.hpp
index 6aecddb..a7210df 100644
--- a/src/xercesc/sax/DocumentHandler.hpp
+++ b/src/xercesc/sax/DocumentHandler.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XercesDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class AttributeList;
 class Locator;
@@ -278,6 +278,6 @@
     DocumentHandler& operator=(const DocumentHandler&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/sax/Dummy.cpp b/src/xercesc/sax/Dummy.cpp
index 75056a8..100855e 100644
--- a/src/xercesc/sax/Dummy.cpp
+++ b/src/xercesc/sax/Dummy.cpp
@@ -32,5 +32,5 @@
 #include <xercesc/sax/SAXException.hpp>
 #include <xercesc/sax/SAXParseException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
-XERCES_CPP_NAMESPACE_END
+namespace XERCES_CPP_NAMESPACE {
+}
diff --git a/src/xercesc/sax/EntityResolver.hpp b/src/xercesc/sax/EntityResolver.hpp
index 1b1a122..ddf5359 100644
--- a/src/xercesc/sax/EntityResolver.hpp
+++ b/src/xercesc/sax/EntityResolver.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XercesDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class InputSource;
 
@@ -160,6 +160,6 @@
 
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/sax/ErrorHandler.hpp b/src/xercesc/sax/ErrorHandler.hpp
index eb517fc..9ed32d1 100644
--- a/src/xercesc/sax/ErrorHandler.hpp
+++ b/src/xercesc/sax/ErrorHandler.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XercesDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class SAXParseException;
 
@@ -163,6 +163,6 @@
 
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/sax/HandlerBase.hpp b/src/xercesc/sax/HandlerBase.hpp
index 12a5cbe..f2090c0 100644
--- a/src/xercesc/sax/HandlerBase.hpp
+++ b/src/xercesc/sax/HandlerBase.hpp
@@ -28,7 +28,7 @@
 #include <xercesc/sax/ErrorHandler.hpp>
 #include <xercesc/sax/SAXParseException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class Locator;
 class AttributeList;
@@ -461,6 +461,6 @@
 {
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/sax/InputSource.cpp b/src/xercesc/sax/InputSource.cpp
index 4a6452e..42f59e0 100644
--- a/src/xercesc/sax/InputSource.cpp
+++ b/src/xercesc/sax/InputSource.cpp
@@ -26,7 +26,7 @@
 #include    <xercesc/sax/InputSource.hpp>
 #include    <xercesc/util/XMLString.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  InputSource: Destructor
@@ -129,5 +129,5 @@
     fSystemId = XMLString::transcode(systemId, fMemoryManager);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
diff --git a/src/xercesc/sax/InputSource.hpp b/src/xercesc/sax/InputSource.hpp
index 58334b7..509a451 100644
--- a/src/xercesc/sax/InputSource.hpp
+++ b/src/xercesc/sax/InputSource.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/PlatformUtils.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class BinInputStream;
 
@@ -332,6 +332,6 @@
     fFatalErrorIfNotFound = flag;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/sax/Locator.hpp b/src/xercesc/sax/Locator.hpp
index 68eb188..a113ebf 100644
--- a/src/xercesc/sax/Locator.hpp
+++ b/src/xercesc/sax/Locator.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XercesDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
   * Interface for associating a SAX event with a document location.
@@ -120,6 +120,6 @@
     Locator& operator=(const Locator&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/sax/Parser.hpp b/src/xercesc/sax/Parser.hpp
index 16772eb..0b0e264 100644
--- a/src/xercesc/sax/Parser.hpp
+++ b/src/xercesc/sax/Parser.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XercesDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class DTDHandler;
 class EntityResolver;
@@ -240,6 +240,6 @@
     Parser& operator=(const Parser&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/sax/SAXException.cpp b/src/xercesc/sax/SAXException.cpp
index 418d16f..17fc540 100644
--- a/src/xercesc/sax/SAXException.cpp
+++ b/src/xercesc/sax/SAXException.cpp
@@ -21,7 +21,7 @@
 
 #include "SAXException.hpp"
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 // SAXNotSupportedException Constructors
@@ -70,5 +70,5 @@
 {
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
diff --git a/src/xercesc/sax/SAXException.hpp b/src/xercesc/sax/SAXException.hpp
index 95098a3..a673dd5 100644
--- a/src/xercesc/sax/SAXException.hpp
+++ b/src/xercesc/sax/SAXException.hpp
@@ -26,7 +26,7 @@
 #include <xercesc/util/XMLUni.hpp>
 #include <xercesc/util/XMemory.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 /**
@@ -225,6 +225,6 @@
     SAXNotRecognizedException(const SAXException& toCopy);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/sax/SAXParseException.cpp b/src/xercesc/sax/SAXParseException.cpp
index fbe464b..8d01bf4 100644
--- a/src/xercesc/sax/SAXParseException.cpp
+++ b/src/xercesc/sax/SAXParseException.cpp
@@ -27,7 +27,7 @@
 #include    <xercesc/sax/Locator.hpp>
 #include    <xercesc/sax/SAXParseException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  SAXParseException: Constructors and Destructor
@@ -122,4 +122,4 @@
     return fColumnNumber;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/sax/SAXParseException.hpp b/src/xercesc/sax/SAXParseException.hpp
index a9df449..f6bd512 100644
--- a/src/xercesc/sax/SAXParseException.hpp
+++ b/src/xercesc/sax/SAXParseException.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/sax/SAXException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class Locator;
 
@@ -180,6 +180,6 @@
 
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/sax2/Attributes.hpp b/src/xercesc/sax2/Attributes.hpp
index 2c482a2..be80412 100644
--- a/src/xercesc/sax2/Attributes.hpp
+++ b/src/xercesc/sax2/Attributes.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XercesDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
   * Interface for an element's attribute specifications.
@@ -308,6 +308,6 @@
 
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/sax2/ContentHandler.hpp b/src/xercesc/sax2/ContentHandler.hpp
index 4224fd5..432158f 100644
--- a/src/xercesc/sax2/ContentHandler.hpp
+++ b/src/xercesc/sax2/ContentHandler.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XercesDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class Attributes;
 class Locator;
@@ -335,6 +335,6 @@
     ContentHandler& operator=(const ContentHandler&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/sax2/DeclHandler.hpp b/src/xercesc/sax2/DeclHandler.hpp
index 5ed0105..349ff47 100644
--- a/src/xercesc/sax2/DeclHandler.hpp
+++ b/src/xercesc/sax2/DeclHandler.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XercesDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
   * Receive notification of DTD declaration events.
@@ -158,6 +158,6 @@
     DeclHandler& operator=(const DeclHandler&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/sax2/DefaultHandler.hpp b/src/xercesc/sax2/DefaultHandler.hpp
index 528d44e..fb1087d 100644
--- a/src/xercesc/sax2/DefaultHandler.hpp
+++ b/src/xercesc/sax2/DefaultHandler.hpp
@@ -30,7 +30,7 @@
 #include <xercesc/sax/ErrorHandler.hpp>
 #include <xercesc/sax/SAXParseException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class Locator;
 class Attributes;
@@ -801,6 +801,6 @@
 {
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif // ! DEFAULTHANDLER_HPP
diff --git a/src/xercesc/sax2/LexicalHandler.hpp b/src/xercesc/sax2/LexicalHandler.hpp
index e6ac3e4..5d7c12b 100644
--- a/src/xercesc/sax2/LexicalHandler.hpp
+++ b/src/xercesc/sax2/LexicalHandler.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XercesDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
   * Receive notification of lexical events.
@@ -167,6 +167,6 @@
     LexicalHandler& operator=(const LexicalHandler&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/sax2/SAX2XMLFilter.hpp b/src/xercesc/sax2/SAX2XMLFilter.hpp
index 1ea2212..874e1d6 100644
--- a/src/xercesc/sax2/SAX2XMLFilter.hpp
+++ b/src/xercesc/sax2/SAX2XMLFilter.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/sax2/SAX2XMLReader.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class SAX2_EXPORT SAX2XMLFilter : public SAX2XMLReader
 {
@@ -77,6 +77,6 @@
 
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/sax2/SAX2XMLReader.hpp b/src/xercesc/sax2/SAX2XMLReader.hpp
index b50fadb..9ba9c66 100644
--- a/src/xercesc/sax2/SAX2XMLReader.hpp
+++ b/src/xercesc/sax2/SAX2XMLReader.hpp
@@ -28,7 +28,7 @@
 #include <xercesc/framework/XMLPScanToken.hpp>
 #include <xercesc/validators/common/Grammar.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class ContentHandler ;
 class DTDHandler;
@@ -891,6 +891,6 @@
 {
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/sax2/XMLReaderFactory.hpp b/src/xercesc/sax2/XMLReaderFactory.hpp
index a63bcac..be52576 100644
--- a/src/xercesc/sax2/XMLReaderFactory.hpp
+++ b/src/xercesc/sax2/XMLReaderFactory.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/sax2/SAX2XMLReader.hpp>
 #include <xercesc/sax/SAXException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class MemoryManager;
 class XMLGrammarPool;
@@ -66,6 +66,6 @@
 	return 0;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/sax2/sax2Dummy.cpp b/src/xercesc/sax2/sax2Dummy.cpp
index 9f35bb9..72db48e 100644
--- a/src/xercesc/sax2/sax2Dummy.cpp
+++ b/src/xercesc/sax2/sax2Dummy.cpp
@@ -26,5 +26,5 @@
 #include <xercesc/sax2/DefaultHandler.hpp>
 #include <xercesc/sax2/Attributes.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
-XERCES_CPP_NAMESPACE_END
+namespace XERCES_CPP_NAMESPACE {
+}
diff --git a/src/xercesc/util/ArrayIndexOutOfBoundsException.hpp b/src/xercesc/util/ArrayIndexOutOfBoundsException.hpp
index 4fc2e38..0e3fec4 100644
--- a/src/xercesc/util/ArrayIndexOutOfBoundsException.hpp
+++ b/src/xercesc/util/ArrayIndexOutOfBoundsException.hpp
@@ -24,10 +24,10 @@
 
 #include <xercesc/util/XMLException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 MakeXMLException(ArrayIndexOutOfBoundsException, XMLUTIL_EXPORT)
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/Base64.cpp b/src/xercesc/util/Base64.cpp
index 9bba500..baa8f25 100644
--- a/src/xercesc/util/Base64.cpp
+++ b/src/xercesc/util/Base64.cpp
@@ -24,7 +24,7 @@
 #include <xercesc/internal/XMLReader.hpp>
 #include <xercesc/framework/MemoryManager.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  constants
@@ -638,4 +638,4 @@
     return (base64Inverse[octet]!=(XMLByte)-1);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/Base64.hpp b/src/xercesc/util/Base64.hpp
index 4104de7..f4d1295 100644
--- a/src/xercesc/util/Base64.hpp
+++ b/src/xercesc/util/Base64.hpp
@@ -26,7 +26,7 @@
 #include <xercesc/util/XMLUniDefs.hpp>
 #include <xercesc/framework/MemoryManager.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //
 // This class provides encode/decode for RFC 2045 Base64 as
@@ -261,6 +261,6 @@
     b4 = ( ch & 0x3f );
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/BaseRefVectorOf.c b/src/xercesc/util/BaseRefVectorOf.c
index 31e03bf..be120cd 100644
--- a/src/xercesc/util/BaseRefVectorOf.c
+++ b/src/xercesc/util/BaseRefVectorOf.c
@@ -21,7 +21,7 @@
 #include <xercesc/util/BaseRefVectorOf.hpp>
 #endif
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  BaseRefVectorOf: Constructors and Destructor
@@ -341,4 +341,4 @@
     fCurIndex = 0;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/BaseRefVectorOf.hpp b/src/xercesc/util/BaseRefVectorOf.hpp
index 360b99c..ba3e278 100644
--- a/src/xercesc/util/BaseRefVectorOf.hpp
+++ b/src/xercesc/util/BaseRefVectorOf.hpp
@@ -27,7 +27,7 @@
 #include <xercesc/util/PlatformUtils.hpp>
 #include <xercesc/framework/MemoryManager.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /** 
  * Abstract base class for the xerces internal representation of Vector. 
@@ -149,7 +149,7 @@
     BaseRefVectorOf<TElem>*    fToEnum;
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #if !defined(XERCES_TMPLSINC)
 #include <xercesc/util/BaseRefVectorOf.c>
diff --git a/src/xercesc/util/BinFileInputStream.cpp b/src/xercesc/util/BinFileInputStream.cpp
index 0cea34a..b6c7626 100644
--- a/src/xercesc/util/BinFileInputStream.cpp
+++ b/src/xercesc/util/BinFileInputStream.cpp
@@ -29,7 +29,7 @@
 #include <xercesc/util/XMLExceptMsgs.hpp>
 #include <xercesc/util/XMLString.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  BinFileInputStream: Constructors and Destructor
@@ -116,4 +116,4 @@
     return 0;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/BinFileInputStream.hpp b/src/xercesc/util/BinFileInputStream.hpp
index 3b4ba03..6718bbc 100644
--- a/src/xercesc/util/BinFileInputStream.hpp
+++ b/src/xercesc/util/BinFileInputStream.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/BinInputStream.hpp>
 #include <xercesc/util/PlatformUtils.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLUTIL_EXPORT BinFileInputStream : public BinInputStream
 {
@@ -102,6 +102,6 @@
     return (fSource != (FileHandle) XERCES_Invalid_File_Handle);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/BinInputStream.cpp b/src/xercesc/util/BinInputStream.cpp
index addcb92..50e11d1 100644
--- a/src/xercesc/util/BinInputStream.cpp
+++ b/src/xercesc/util/BinInputStream.cpp
@@ -25,7 +25,7 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/util/BinInputStream.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  BinInputStream: Virtual destructor!
@@ -50,4 +50,4 @@
     return 0;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/BinInputStream.hpp b/src/xercesc/util/BinInputStream.hpp
index 6023f48..d8ea39e 100644
--- a/src/xercesc/util/BinInputStream.hpp
+++ b/src/xercesc/util/BinInputStream.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XMemory.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLUTIL_EXPORT BinInputStream : public XMemory
 {
@@ -99,6 +99,6 @@
     BinInputStream& operator=(const BinInputStream&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/BinMemInputStream.cpp b/src/xercesc/util/BinMemInputStream.cpp
index 5ebdf99..bc01d1c 100644
--- a/src/xercesc/util/BinMemInputStream.cpp
+++ b/src/xercesc/util/BinMemInputStream.cpp
@@ -25,9 +25,9 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/util/BinMemInputStream.hpp>
 #include <xercesc/framework/MemoryManager.hpp>
-#include <string.h>
+#include <cstring>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  BinMemInputStream: Constructors and Destructor
@@ -95,4 +95,4 @@
     return 0;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/BinMemInputStream.hpp b/src/xercesc/util/BinMemInputStream.hpp
index 1617b65..9f52f68 100644
--- a/src/xercesc/util/BinMemInputStream.hpp
+++ b/src/xercesc/util/BinMemInputStream.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/BinInputStream.hpp>
 #include <xercesc/util/PlatformUtils.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLUTIL_EXPORT BinMemInputStream : public BinInputStream
 {
@@ -129,6 +129,6 @@
     return fCapacity;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/BitOps.hpp b/src/xercesc/util/BitOps.hpp
index 1b3d420..3f9d871 100644
--- a/src/xercesc/util/BitOps.hpp
+++ b/src/xercesc/util/BitOps.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XercesDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLUTIL_EXPORT BitOps
 {
@@ -62,6 +62,6 @@
     BitOps& operator=(const BitOps&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/BitSet.cpp b/src/xercesc/util/BitSet.cpp
index 3f8390c..c8e49cc 100644
--- a/src/xercesc/util/BitSet.cpp
+++ b/src/xercesc/util/BitSet.cpp
@@ -26,7 +26,7 @@
 #include <xercesc/util/BitSet.hpp>
 #include <xercesc/framework/MemoryManager.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Local const data
@@ -267,4 +267,4 @@
     fUnitLen = unitsNeeded;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/BitSet.hpp b/src/xercesc/util/BitSet.hpp
index 684a328..e1445b2 100644
--- a/src/xercesc/util/BitSet.hpp
+++ b/src/xercesc/util/BitSet.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/XMemory.hpp>
 #include <xercesc/util/PlatformUtils.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLUTIL_EXPORT BitSet : public XMemory
 {
@@ -102,6 +102,6 @@
     XMLSize_t       fUnitLen;
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/CountedPointer.c b/src/xercesc/util/CountedPointer.c
index 5eefd71..dce3820 100644
--- a/src/xercesc/util/CountedPointer.c
+++ b/src/xercesc/util/CountedPointer.c
@@ -27,7 +27,7 @@
 #include <xercesc/util/CountedPointer.hpp>
 #endif
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  CountedPointerTo: Constructors and Destructor
@@ -104,4 +104,4 @@
     return *fPtr;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/CountedPointer.hpp b/src/xercesc/util/CountedPointer.hpp
index a8f3cd8..2777ed3 100644
--- a/src/xercesc/util/CountedPointer.hpp
+++ b/src/xercesc/util/CountedPointer.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/NullPointerException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 template <class T> class CountedPointerTo : public XMemory
 {
@@ -60,7 +60,7 @@
     T*  fPtr;
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #if !defined(XERCES_TMPLSINC)
 #include <xercesc/util/CountedPointer.c>
diff --git a/src/xercesc/util/DefaultPanicHandler.cpp b/src/xercesc/util/DefaultPanicHandler.cpp
index 1a29cf7..cc6b17d 100644
--- a/src/xercesc/util/DefaultPanicHandler.cpp
+++ b/src/xercesc/util/DefaultPanicHandler.cpp
@@ -25,10 +25,10 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/util/DefaultPanicHandler.hpp>
 
-#include <stdio.h>
-#include <stdlib.h>
+#include <cstdio>
+#include <cstdlib>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 void DefaultPanicHandler::panic(const PanicHandler::PanicReasons reason)
 {
@@ -36,5 +36,5 @@
     exit(-1);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
diff --git a/src/xercesc/util/DefaultPanicHandler.hpp b/src/xercesc/util/DefaultPanicHandler.hpp
index dd00c26..e143c96 100644
--- a/src/xercesc/util/DefaultPanicHandler.hpp
+++ b/src/xercesc/util/DefaultPanicHandler.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/PanicHandler.hpp>
 #include <xercesc/util/PlatformUtils.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
   * Receive notification of panic.
@@ -75,6 +75,6 @@
 
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/EmptyStackException.hpp b/src/xercesc/util/EmptyStackException.hpp
index 3e1ba27..4ad8476 100644
--- a/src/xercesc/util/EmptyStackException.hpp
+++ b/src/xercesc/util/EmptyStackException.hpp
@@ -25,10 +25,10 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/util/XMLException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 MakeXMLException(EmptyStackException, XMLUTIL_EXPORT)
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/EncodingValidator.cpp b/src/xercesc/util/EncodingValidator.cpp
index 97e20f7..fe96795 100644
--- a/src/xercesc/util/EncodingValidator.cpp
+++ b/src/xercesc/util/EncodingValidator.cpp
@@ -26,7 +26,7 @@
 #include <xercesc/internal/IANAEncodings.hpp>
 #include <xercesc/util/XMLInitializer.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 EncodingValidator* EncodingValidator::fInstance = 0;
 
@@ -89,7 +89,7 @@
     return fInstance;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file EncodingValidator.cpp
diff --git a/src/xercesc/util/EncodingValidator.hpp b/src/xercesc/util/EncodingValidator.hpp
index 340e67e..a141fe1 100644
--- a/src/xercesc/util/EncodingValidator.hpp
+++ b/src/xercesc/util/EncodingValidator.hpp
@@ -27,7 +27,7 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/util/ValueHashTableOf.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
   * A singleton class that checks whether an encoding name is a valid IANA
@@ -76,7 +76,7 @@
     friend class XMLInitializer;
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/util/FileManagers/PosixFileMgr.cpp b/src/xercesc/util/FileManagers/PosixFileMgr.cpp
index e29efe1..fb1adb5 100644
--- a/src/xercesc/util/FileManagers/PosixFileMgr.cpp
+++ b/src/xercesc/util/FileManagers/PosixFileMgr.cpp
@@ -20,7 +20,7 @@
  */
 
 #include <config.h>
-#include <stdio.h>
+#include <cstdio>
 
 #if HAVE_UNISTD_H
 #include <unistd.h>
@@ -40,7 +40,7 @@
 #include <xercesc/util/XMLUniDefs.hpp>
 
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 PosixFileMgr::PosixFileMgr()
@@ -252,5 +252,5 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
diff --git a/src/xercesc/util/FileManagers/PosixFileMgr.hpp b/src/xercesc/util/FileManagers/PosixFileMgr.hpp
index b8c1493..4bbc9e1 100644
--- a/src/xercesc/util/FileManagers/PosixFileMgr.hpp
+++ b/src/xercesc/util/FileManagers/PosixFileMgr.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XMLFileMgr.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //	Concrete implementation of XMLFileMgr, implementing
 //	file access on posix compatible systems.
@@ -54,7 +54,7 @@
         virtual bool		isRelative(const XMLCh* const toCheck, MemoryManager* const manager);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/util/FileManagers/WindowsFileMgr.cpp b/src/xercesc/util/FileManagers/WindowsFileMgr.cpp
index fdc67c7..9b3c7ad 100644
--- a/src/xercesc/util/FileManagers/WindowsFileMgr.cpp
+++ b/src/xercesc/util/FileManagers/WindowsFileMgr.cpp
@@ -30,7 +30,7 @@
 #define INVALID_SET_FILE_POINTER ((DWORD)-1)
 #endif
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 static bool isBackSlash(XMLCh c) {
     return c == chBackSlash ||
@@ -427,5 +427,5 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
diff --git a/src/xercesc/util/FileManagers/WindowsFileMgr.hpp b/src/xercesc/util/FileManagers/WindowsFileMgr.hpp
index ae08670..bae89a8 100644
--- a/src/xercesc/util/FileManagers/WindowsFileMgr.hpp
+++ b/src/xercesc/util/FileManagers/WindowsFileMgr.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XMLFileMgr.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //	Concrete implementation of XMLFileMgr, implementing
 //	file access on Windows systems.
@@ -57,7 +57,7 @@
         bool _onNT;
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/util/FlagJanitor.c b/src/xercesc/util/FlagJanitor.c
index b8ea1cd..3733c9f 100644
--- a/src/xercesc/util/FlagJanitor.c
+++ b/src/xercesc/util/FlagJanitor.c
@@ -27,7 +27,7 @@
 #include <xercesc/util/FlagJanitor.hpp>
 #endif
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Constructors and Destructor
@@ -59,4 +59,4 @@
     fValPtr = 0;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/FlagJanitor.hpp b/src/xercesc/util/FlagJanitor.hpp
index 76b91db..28a2d19 100644
--- a/src/xercesc/util/FlagJanitor.hpp
+++ b/src/xercesc/util/FlagJanitor.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XercesDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 template <class T> class FlagJanitor
 {
@@ -64,7 +64,7 @@
     T*  fValPtr;
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #if !defined(XERCES_TMPLSINC)
 #include <xercesc/util/FlagJanitor.c>
diff --git a/src/xercesc/util/Hash2KeysSetOf.c b/src/xercesc/util/Hash2KeysSetOf.c
index 607a8b7..b229831 100644
--- a/src/xercesc/util/Hash2KeysSetOf.c
+++ b/src/xercesc/util/Hash2KeysSetOf.c
@@ -32,7 +32,7 @@
 #include <assert.h>
 #include <new>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Hash2KeysSetOf: Constructors and Destructor
@@ -588,4 +588,4 @@
     }
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/Hash2KeysSetOf.hpp b/src/xercesc/util/Hash2KeysSetOf.hpp
index 5fb86f4..4858381 100644
--- a/src/xercesc/util/Hash2KeysSetOf.hpp
+++ b/src/xercesc/util/Hash2KeysSetOf.hpp
@@ -29,7 +29,7 @@
 #include <xercesc/util/RuntimeException.hpp>
 #include <xercesc/util/PlatformUtils.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // This hash table is similar to Hash2KeysSetOf with an additional integer as key2
 
@@ -214,7 +214,7 @@
     const void*                             fLockPrimaryKey;
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #if !defined(XERCES_TMPLSINC)
 #include <xercesc/util/Hash2KeysSetOf.c>
diff --git a/src/xercesc/util/Hashers.hpp b/src/xercesc/util/Hashers.hpp
index cf0dbb2..3d93c57 100644
--- a/src/xercesc/util/Hashers.hpp
+++ b/src/xercesc/util/Hashers.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XMLString.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //
 // Common hashers. Only widely-used hashers should be placed here.
@@ -90,6 +90,6 @@
   }
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/HeaderDummy.cpp b/src/xercesc/util/HeaderDummy.cpp
index a9fdce1..fa0be5d 100644
--- a/src/xercesc/util/HeaderDummy.cpp
+++ b/src/xercesc/util/HeaderDummy.cpp
@@ -36,5 +36,5 @@
 #include <xercesc/util/UnsupportedEncodingException.hpp>
 #include <xercesc/util/UTFDataFormatException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
-XERCES_CPP_NAMESPACE_END
+namespace XERCES_CPP_NAMESPACE {
+}
diff --git a/src/xercesc/util/HexBin.cpp b/src/xercesc/util/HexBin.cpp
index 28e3ab2..bf74b7d 100644
--- a/src/xercesc/util/HexBin.cpp
+++ b/src/xercesc/util/HexBin.cpp
@@ -23,7 +23,7 @@
 #include <xercesc/util/XMLString.hpp>
 #include <xercesc/util/Janitor.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  constants
@@ -135,4 +135,4 @@
     return (hexNumberTable[octet] != (XMLByte) -1);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/HexBin.hpp b/src/xercesc/util/HexBin.hpp
index 0b3df78..b8ce47a 100644
--- a/src/xercesc/util/HexBin.hpp
+++ b/src/xercesc/util/HexBin.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/PlatformUtils.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLUTIL_EXPORT HexBin
 {
@@ -123,6 +123,6 @@
     static const XMLByte    hexNumberTable[];
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/IOException.hpp b/src/xercesc/util/IOException.hpp
index 33534f5..94ce586 100644
--- a/src/xercesc/util/IOException.hpp
+++ b/src/xercesc/util/IOException.hpp
@@ -25,10 +25,10 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/util/XMLException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 MakeXMLException(IOException, XMLUTIL_EXPORT)
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/IllegalArgumentException.hpp b/src/xercesc/util/IllegalArgumentException.hpp
index 960c6ec..75b861f 100644
--- a/src/xercesc/util/IllegalArgumentException.hpp
+++ b/src/xercesc/util/IllegalArgumentException.hpp
@@ -25,10 +25,10 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/util/XMLException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 MakeXMLException(IllegalArgumentException, XMLUTIL_EXPORT)
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/InvalidCastException.hpp b/src/xercesc/util/InvalidCastException.hpp
index f68fda9..dbcbec4 100644
--- a/src/xercesc/util/InvalidCastException.hpp
+++ b/src/xercesc/util/InvalidCastException.hpp
@@ -25,10 +25,10 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/util/XMLException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 MakeXMLException(InvalidCastException, XMLUTIL_EXPORT)
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/Janitor.c b/src/xercesc/util/Janitor.c
index 1f289b4..c3ec5b6 100644
--- a/src/xercesc/util/Janitor.c
+++ b/src/xercesc/util/Janitor.c
@@ -27,7 +27,7 @@
 #include <xercesc/util/Janitor.hpp>
 #endif
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Janitor: Constructors and Destructor
@@ -245,4 +245,4 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/Janitor.hpp b/src/xercesc/util/Janitor.hpp
index cf06e67..85b812a 100644
--- a/src/xercesc/util/Janitor.hpp
+++ b/src/xercesc/util/Janitor.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/XMemory.hpp>
 #include <xercesc/framework/MemoryManager.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 template <class T> class Janitor : public XMemory
 {
@@ -159,7 +159,7 @@
 XERCES_TEMPLATE_EXTERN template class XMLUTIL_EXPORT ArrayJanitor<XMLCh>;
 #endif
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #if !defined(XERCES_TMPLSINC)
 #include <xercesc/util/Janitor.c>
diff --git a/src/xercesc/util/JanitorExports.cpp b/src/xercesc/util/JanitorExports.cpp
index ec35bea..6556b99 100644
--- a/src/xercesc/util/JanitorExports.cpp
+++ b/src/xercesc/util/JanitorExports.cpp
@@ -17,9 +17,9 @@
 
 #include <xercesc/util/Janitor.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 template class ArrayJanitor<XMLByte>;
 template class ArrayJanitor<XMLCh>;
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/KVStringPair.cpp b/src/xercesc/util/KVStringPair.cpp
index 55c23e3..307e853 100644
--- a/src/xercesc/util/KVStringPair.cpp
+++ b/src/xercesc/util/KVStringPair.cpp
@@ -26,7 +26,7 @@
 #include <xercesc/util/KVStringPair.hpp>
 #include <xercesc/util/XMLString.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  KVStringPair: Constructors and Destructor
@@ -123,4 +123,4 @@
 
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/KVStringPair.hpp b/src/xercesc/util/KVStringPair.hpp
index aeb787a..bdc79ee 100644
--- a/src/xercesc/util/KVStringPair.hpp
+++ b/src/xercesc/util/KVStringPair.hpp
@@ -27,7 +27,7 @@
 
 #include <xercesc/internal/XSerializable.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //
 //  This class provides a commonly used data structure, which is that of
@@ -218,6 +218,6 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/KeyRefPair.c b/src/xercesc/util/KeyRefPair.c
index ce062fa..604025e 100644
--- a/src/xercesc/util/KeyRefPair.c
+++ b/src/xercesc/util/KeyRefPair.c
@@ -27,7 +27,7 @@
 #include <xercesc/util/KeyRefPair.hpp>
 #endif
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  KeyRefPair: Constructors and Destructor
@@ -110,4 +110,4 @@
     return fValue;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/KeyRefPair.hpp b/src/xercesc/util/KeyRefPair.hpp
index 3568c27..43d2fd6 100644
--- a/src/xercesc/util/KeyRefPair.hpp
+++ b/src/xercesc/util/KeyRefPair.hpp
@@ -25,7 +25,7 @@
 
 #include <xercesc/util/XMemory.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 template <class TKey, class TValue> class KeyRefPair : public XMemory
 {
@@ -72,7 +72,7 @@
         TValue*  fValue;
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #if !defined(XERCES_TMPLSINC)
 #include <xercesc/util/KeyRefPair.c>
diff --git a/src/xercesc/util/KeyValuePair.c b/src/xercesc/util/KeyValuePair.c
index c83bced..1628dab 100644
--- a/src/xercesc/util/KeyValuePair.c
+++ b/src/xercesc/util/KeyValuePair.c
@@ -27,7 +27,7 @@
 #include <xercesc/util/KeyValuePair.hpp>
 #endif
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  KeyValuePair: Constructors and Destructor
@@ -101,4 +101,4 @@
     return fValue;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/KeyValuePair.hpp b/src/xercesc/util/KeyValuePair.hpp
index 2abb171..c73d76e 100644
--- a/src/xercesc/util/KeyValuePair.hpp
+++ b/src/xercesc/util/KeyValuePair.hpp
@@ -25,7 +25,7 @@
 
 #include <xercesc/util/XMemory.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 template <class TKey, class TValue> class KeyValuePair : public XMemory
 {
@@ -72,7 +72,7 @@
         TValue  fValue;
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #if !defined(XERCES_TMPLSINC)
 #include <xercesc/util/KeyValuePair.c>
diff --git a/src/xercesc/util/MsgLoaders/ICU/ICUMsgLoader.cpp b/src/xercesc/util/MsgLoaders/ICU/ICUMsgLoader.cpp
index 488a04d..2b8db5e 100644
--- a/src/xercesc/util/MsgLoaders/ICU/ICUMsgLoader.cpp
+++ b/src/xercesc/util/MsgLoaders/ICU/ICUMsgLoader.cpp
@@ -34,11 +34,11 @@
 #include "unicode/uloc.h"
 #include "unicode/udata.h"
 
-#include "string.h"
-#include <stdio.h>
-#include <stdlib.h>
+#include <cstring>
+#include <cstdio>
+#include <cstdlib>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Local static methods
@@ -309,4 +309,4 @@
     return bRet;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/MsgLoaders/ICU/ICUMsgLoader.hpp b/src/xercesc/util/MsgLoaders/ICU/ICUMsgLoader.hpp
index c945a4b..abdd6b4 100644
--- a/src/xercesc/util/MsgLoaders/ICU/ICUMsgLoader.hpp
+++ b/src/xercesc/util/MsgLoaders/ICU/ICUMsgLoader.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/XMLMsgLoader.hpp>
 #include "unicode/ures.h"
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //
 //  This is the ICU specific implementation of the XMLMsgLoader interface.
@@ -102,6 +102,6 @@
     UResourceBundle*      fDomainBundle;
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/MsgLoaders/InMemory/InMemMsgLoader.cpp b/src/xercesc/util/MsgLoaders/InMemory/InMemMsgLoader.cpp
index d95a136..cda1032 100644
--- a/src/xercesc/util/MsgLoaders/InMemory/InMemMsgLoader.cpp
+++ b/src/xercesc/util/MsgLoaders/InMemory/InMemMsgLoader.cpp
@@ -31,7 +31,7 @@
 #include "InMemMsgLoader.hpp"
 #include "XercesMessages_en_US.hpp"
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Public Constructors and Destructor
@@ -176,4 +176,4 @@
     return bRet;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/MsgLoaders/InMemory/InMemMsgLoader.hpp b/src/xercesc/util/MsgLoaders/InMemory/InMemMsgLoader.hpp
index d8e5603..f539dc6 100644
--- a/src/xercesc/util/MsgLoaders/InMemory/InMemMsgLoader.hpp
+++ b/src/xercesc/util/MsgLoaders/InMemory/InMemMsgLoader.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/util/XMLMsgLoader.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //
 //  This is a simple in memory message loader implementation. For those
@@ -96,6 +96,6 @@
     XMLCh*  fMsgDomain;
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/MsgLoaders/InMemory/XercesMessages_en_US.hpp b/src/xercesc/util/MsgLoaders/InMemory/XercesMessages_en_US.hpp
index 08fdabc..58589e2 100644
--- a/src/xercesc/util/MsgLoaders/InMemory/XercesMessages_en_US.hpp
+++ b/src/xercesc/util/MsgLoaders/InMemory/XercesMessages_en_US.hpp
@@ -5,7 +5,7 @@
 
 #include <xercesc/util/XercesDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 const XMLCh gXMLErrArray[][128] = 
 {
@@ -1497,5 +1497,5 @@
 };
 const unsigned int gXMLDOMMsgArraySize = 41;
 
-XERCES_CPP_NAMESPACE_END
+}
 
diff --git a/src/xercesc/util/MsgLoaders/MsgCatalog/MsgCatalogLoader.cpp b/src/xercesc/util/MsgLoaders/MsgCatalog/MsgCatalogLoader.cpp
index a2afecb..6370f44 100644
--- a/src/xercesc/util/MsgLoaders/MsgCatalog/MsgCatalogLoader.cpp
+++ b/src/xercesc/util/MsgLoaders/MsgCatalog/MsgCatalogLoader.cpp
@@ -33,11 +33,11 @@
 #include "XMLMsgCat_Ids.hpp"
 
 #include <locale.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
+#include <cstdlib>
+#include <cstdio>
+#include <cstring>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Public Constructors and Destructor
@@ -208,4 +208,4 @@
     return bRet;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/MsgLoaders/MsgCatalog/MsgCatalogLoader.hpp b/src/xercesc/util/MsgLoaders/MsgCatalog/MsgCatalogLoader.hpp
index cf5396d..82ee570 100644
--- a/src/xercesc/util/MsgLoaders/MsgCatalog/MsgCatalogLoader.hpp
+++ b/src/xercesc/util/MsgLoaders/MsgCatalog/MsgCatalogLoader.hpp
@@ -27,7 +27,7 @@
 
 #include <nl_types.h>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //
 //  This is a simple in Iconv RC message loader implementation.
@@ -101,6 +101,6 @@
 	
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/MsgLoaders/MsgCatalog/XMLMsgCat_Ids.hpp b/src/xercesc/util/MsgLoaders/MsgCatalog/XMLMsgCat_Ids.hpp
index f28a20a..9976d8d 100644
--- a/src/xercesc/util/MsgLoaders/MsgCatalog/XMLMsgCat_Ids.hpp
+++ b/src/xercesc/util/MsgLoaders/MsgCatalog/XMLMsgCat_Ids.hpp
@@ -5,12 +5,12 @@
 
 #include <xercesc/util/XercesDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 const unsigned int CatId_XMLErrs = 1;
 const unsigned int CatId_XMLValid = 2;
 const unsigned int CatId_XMLExcepts = 3;
 const unsigned int CatId_XMLDOMMsg = 4;
 
-XERCES_CPP_NAMESPACE_END
+}
 
diff --git a/src/xercesc/util/MutexManagers/NoThreadMutexMgr.cpp b/src/xercesc/util/MutexManagers/NoThreadMutexMgr.cpp
index 7dc911f..106ad93 100644
--- a/src/xercesc/util/MutexManagers/NoThreadMutexMgr.cpp
+++ b/src/xercesc/util/MutexManagers/NoThreadMutexMgr.cpp
@@ -21,7 +21,7 @@
 
 #include <xercesc/util/MutexManagers/NoThreadMutexMgr.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /*
 	The NoThread mutex manager is for use where no threading is used
@@ -65,5 +65,5 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
diff --git a/src/xercesc/util/MutexManagers/NoThreadMutexMgr.hpp b/src/xercesc/util/MutexManagers/NoThreadMutexMgr.hpp
index 5323f3e..c4350c0 100644
--- a/src/xercesc/util/MutexManagers/NoThreadMutexMgr.hpp
+++ b/src/xercesc/util/MutexManagers/NoThreadMutexMgr.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XMLMutexMgr.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /*
 	The NoThread mutex manager is for use where no threading is used
@@ -44,7 +44,7 @@
 		virtual void			unlock(XMLMutexHandle mtx);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 
 #endif
diff --git a/src/xercesc/util/MutexManagers/PosixMutexMgr.cpp b/src/xercesc/util/MutexManagers/PosixMutexMgr.cpp
index fa8bfa1..2ddb9b3 100644
--- a/src/xercesc/util/MutexManagers/PosixMutexMgr.cpp
+++ b/src/xercesc/util/MutexManagers/PosixMutexMgr.cpp
@@ -31,7 +31,7 @@
 #include <xercesc/util/RuntimeException.hpp>
 #include <xercesc/util/PanicHandler.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 //	Wrap up the mutex with XMemory
@@ -109,5 +109,5 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
diff --git a/src/xercesc/util/MutexManagers/PosixMutexMgr.hpp b/src/xercesc/util/MutexManagers/PosixMutexMgr.hpp
index 3045b91..79481de 100644
--- a/src/xercesc/util/MutexManagers/PosixMutexMgr.hpp
+++ b/src/xercesc/util/MutexManagers/PosixMutexMgr.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XMLMutexMgr.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //	Posix mutex implementation.
 class PosixMutexMgr : public XMLMutexMgr
@@ -40,7 +40,7 @@
 		virtual void			unlock(XMLMutexHandle mtx);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 
 #endif
diff --git a/src/xercesc/util/MutexManagers/StdMutexMgr.cpp b/src/xercesc/util/MutexManagers/StdMutexMgr.cpp
index fb43a38..22f5046 100644
--- a/src/xercesc/util/MutexManagers/StdMutexMgr.cpp
+++ b/src/xercesc/util/MutexManagers/StdMutexMgr.cpp
@@ -26,8 +26,7 @@
 #include <xercesc/util/RuntimeException.hpp>
 #include <xercesc/util/PanicHandler.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
-
+namespace XERCES_CPP_NAMESPACE {
 
 //	Wrap up the mutex with XMemory
 class StdMutexWrap : public XMemory {
@@ -87,5 +86,5 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
diff --git a/src/xercesc/util/MutexManagers/StdMutexMgr.hpp b/src/xercesc/util/MutexManagers/StdMutexMgr.hpp
index 00c300d..80d2476 100644
--- a/src/xercesc/util/MutexManagers/StdMutexMgr.hpp
+++ b/src/xercesc/util/MutexManagers/StdMutexMgr.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XMLMutexMgr.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //	Std mutex implementation.
 class StdMutexMgr : public XMLMutexMgr
@@ -40,7 +40,7 @@
 		virtual void			unlock(XMLMutexHandle mtx);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 
 #endif
diff --git a/src/xercesc/util/MutexManagers/WindowsMutexMgr.cpp b/src/xercesc/util/MutexManagers/WindowsMutexMgr.cpp
index 33b063c..87b09d4 100644
--- a/src/xercesc/util/MutexManagers/WindowsMutexMgr.cpp
+++ b/src/xercesc/util/MutexManagers/WindowsMutexMgr.cpp
@@ -24,7 +24,7 @@
 #include <xercesc/util/MutexManagers/WindowsMutexMgr.hpp>
 #include <xercesc/framework/MemoryManager.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 WindowsMutexMgr::WindowsMutexMgr()
 {
@@ -67,5 +67,5 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
diff --git a/src/xercesc/util/MutexManagers/WindowsMutexMgr.hpp b/src/xercesc/util/MutexManagers/WindowsMutexMgr.hpp
index 3e20e67..b67f390 100644
--- a/src/xercesc/util/MutexManagers/WindowsMutexMgr.hpp
+++ b/src/xercesc/util/MutexManagers/WindowsMutexMgr.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XMLMutexMgr.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /*
 	The mutex manager to use on MS Windows platforms
@@ -42,7 +42,7 @@
 		virtual void			unlock(XMLMutexHandle mtx);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 
 #endif
diff --git a/src/xercesc/util/Mutexes.cpp b/src/xercesc/util/Mutexes.cpp
index bb6d828..bfced0d 100644
--- a/src/xercesc/util/Mutexes.cpp
+++ b/src/xercesc/util/Mutexes.cpp
@@ -28,7 +28,7 @@
 #include <xercesc/util/PlatformUtils.hpp>
 #include <xercesc/util/Mutexes.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  XMLMutex: Constructors and Destructor
@@ -84,4 +84,4 @@
     fToLock->unlock();
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/Mutexes.hpp b/src/xercesc/util/Mutexes.hpp
index 50d9817..16298bc 100644
--- a/src/xercesc/util/Mutexes.hpp
+++ b/src/xercesc/util/Mutexes.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/XMemory.hpp>
 #include <xercesc/util/PlatformUtils.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLUTIL_EXPORT XMLMutex : public XMemory
 {
@@ -103,6 +103,6 @@
     XMLMutex*   fToLock;
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/NameIdPool.c b/src/xercesc/util/NameIdPool.c
index 022d154..b4c8e2b 100644
--- a/src/xercesc/util/NameIdPool.c
+++ b/src/xercesc/util/NameIdPool.c
@@ -33,7 +33,7 @@
 #include <new>
 #include <assert.h>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  NameIdPool: Constructors and Destructor
@@ -281,4 +281,4 @@
     return fToEnum->fIdCounter;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/NameIdPool.hpp b/src/xercesc/util/NameIdPool.hpp
index 542b832..342922d 100644
--- a/src/xercesc/util/NameIdPool.hpp
+++ b/src/xercesc/util/NameIdPool.hpp
@@ -27,7 +27,7 @@
 #include <xercesc/util/PlatformUtils.hpp>
 #include <xercesc/util/RefHashTableOf.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //
 //  Forward declare the enumerator so he can be our friend. Can you say
@@ -198,7 +198,7 @@
     MemoryManager*          fMemoryManager;
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #if !defined(XERCES_TMPLSINC)
 #include <xercesc/util/NameIdPool.c>
diff --git a/src/xercesc/util/NetAccessors/BinHTTPInputStreamCommon.cpp b/src/xercesc/util/NetAccessors/BinHTTPInputStreamCommon.cpp
index 4c89318..8423f59 100644
--- a/src/xercesc/util/NetAccessors/BinHTTPInputStreamCommon.cpp
+++ b/src/xercesc/util/NetAccessors/BinHTTPInputStreamCommon.cpp
@@ -28,8 +28,8 @@
 #  include <config.h>
 #endif
 
-#include <stdlib.h>
-#include <string.h>
+#include <cstdlib>
+#include <cstring>
 
 #include <xercesc/util/NetAccessors/BinHTTPInputStreamCommon.hpp>
 
@@ -40,7 +40,7 @@
 #include <xercesc/util/PlatformUtils.hpp>
 #include <xercesc/util/Base64.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 BinHTTPInputStreamCommon::BinHTTPInputStreamCommon(MemoryManager *manager)
       : fBytesProcessed(0)
@@ -361,4 +361,4 @@
     return len;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/NetAccessors/BinHTTPInputStreamCommon.hpp b/src/xercesc/util/NetAccessors/BinHTTPInputStreamCommon.hpp
index b7bf5fd..cf4f106 100644
--- a/src/xercesc/util/NetAccessors/BinHTTPInputStreamCommon.hpp
+++ b/src/xercesc/util/NetAccessors/BinHTTPInputStreamCommon.hpp
@@ -26,9 +26,9 @@
 #include <xercesc/util/BinInputStream.hpp>
 #include <xercesc/util/XMLNetAccessor.hpp>
 #include <xercesc/framework/MemoryManager.hpp>
-#include <string.h>
+#include <cstring>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //
 // This class implements a simple expanding character buffer
@@ -229,6 +229,6 @@
     return fBytesProcessed;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/NetAccessors/Curl/CurlNetAccessor.cpp b/src/xercesc/util/NetAccessors/Curl/CurlNetAccessor.cpp
index c9481a1..1370439 100644
--- a/src/xercesc/util/NetAccessors/Curl/CurlNetAccessor.cpp
+++ b/src/xercesc/util/NetAccessors/Curl/CurlNetAccessor.cpp
@@ -26,7 +26,7 @@
 #include <xercesc/util/NetAccessors/Curl/CurlURLInputStream.hpp>
 #include <xercesc/util/NetAccessors/Curl/CurlNetAccessor.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 const XMLCh CurlNetAccessor::fgMyName[] =
 {
@@ -89,5 +89,5 @@
 	return retStrm;            
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
diff --git a/src/xercesc/util/NetAccessors/Curl/CurlNetAccessor.hpp b/src/xercesc/util/NetAccessors/Curl/CurlNetAccessor.hpp
index 8d9949a..40ed87e 100644
--- a/src/xercesc/util/NetAccessors/Curl/CurlNetAccessor.hpp
+++ b/src/xercesc/util/NetAccessors/Curl/CurlNetAccessor.hpp
@@ -28,7 +28,7 @@
 #include <xercesc/util/BinInputStream.hpp>
 #include <xercesc/util/XMLNetAccessor.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //
 // This class is the wrapper for the socket based code which
@@ -64,7 +64,7 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif // CURLNETACCESSOR_HPP
 
diff --git a/src/xercesc/util/NetAccessors/Curl/CurlURLInputStream.cpp b/src/xercesc/util/NetAccessors/Curl/CurlURLInputStream.cpp
index 5ed6593..a7b125d 100644
--- a/src/xercesc/util/NetAccessors/Curl/CurlURLInputStream.cpp
+++ b/src/xercesc/util/NetAccessors/Curl/CurlURLInputStream.cpp
@@ -23,9 +23,9 @@
   #include <config.h>
 #endif
 
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
 #if HAVE_ERRNO_H
   #include <errno.h>
 #endif
@@ -50,7 +50,7 @@
 #include <xercesc/util/TranscodingException.hpp>
 #include <xercesc/util/PlatformUtils.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 CurlURLInputStream::CurlURLInputStream(const XMLURL& urlSource, const XMLNetHTTPInfo* httpInfo/*=0*/)
@@ -395,4 +395,4 @@
     return fContentType;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/NetAccessors/Curl/CurlURLInputStream.hpp b/src/xercesc/util/NetAccessors/Curl/CurlURLInputStream.hpp
index f75857b..1ff2abf 100644
--- a/src/xercesc/util/NetAccessors/Curl/CurlURLInputStream.hpp
+++ b/src/xercesc/util/NetAccessors/Curl/CurlURLInputStream.hpp
@@ -32,7 +32,7 @@
 #include <xercesc/util/BinInputStream.hpp>
 #include <xercesc/util/XMLNetAccessor.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //
 // This class implements the BinInputStream interface specified by the XML
@@ -131,7 +131,7 @@
     return fTotalBytesRead;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif // CURLURLINPUTSTREAM_HPP
 
diff --git a/src/xercesc/util/NetAccessors/MacOSURLAccessCF/MacOSURLAccessCF.cpp b/src/xercesc/util/NetAccessors/MacOSURLAccessCF/MacOSURLAccessCF.cpp
index 02877c9..6d91263 100644
--- a/src/xercesc/util/NetAccessors/MacOSURLAccessCF/MacOSURLAccessCF.cpp
+++ b/src/xercesc/util/NetAccessors/MacOSURLAccessCF/MacOSURLAccessCF.cpp
@@ -27,7 +27,7 @@
 #include <xercesc/util/NetAccessors/MacOSURLAccessCF/MacOSURLAccessCF.hpp>
 #include <xercesc/util/NetAccessors/MacOSURLAccessCF/URLAccessCFBinInputStream.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 const XMLCh
 MacOSURLAccessCF::sMyID[] =
@@ -58,5 +58,5 @@
 	return result;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
diff --git a/src/xercesc/util/NetAccessors/MacOSURLAccessCF/MacOSURLAccessCF.hpp b/src/xercesc/util/NetAccessors/MacOSURLAccessCF/MacOSURLAccessCF.hpp
index 80761d5..6f14fd6 100644
--- a/src/xercesc/util/NetAccessors/MacOSURLAccessCF/MacOSURLAccessCF.hpp
+++ b/src/xercesc/util/NetAccessors/MacOSURLAccessCF/MacOSURLAccessCF.hpp
@@ -28,7 +28,7 @@
 #include <xercesc/util/BinInputStream.hpp>
 #include <xercesc/util/XMLNetAccessor.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //
 // This class is the wrapper for the Mac OS CFURLAccess code
@@ -61,6 +61,6 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif // MACOSURLACCESSCF_HPP
diff --git a/src/xercesc/util/NetAccessors/MacOSURLAccessCF/URLAccessCFBinInputStream.cpp b/src/xercesc/util/NetAccessors/MacOSURLAccessCF/URLAccessCFBinInputStream.cpp
index 2cc92ed..825f3a1 100644
--- a/src/xercesc/util/NetAccessors/MacOSURLAccessCF/URLAccessCFBinInputStream.cpp
+++ b/src/xercesc/util/NetAccessors/MacOSURLAccessCF/URLAccessCFBinInputStream.cpp
@@ -28,7 +28,7 @@
 #include <xercesc/util/XMLExceptMsgs.hpp>
 #include <xercesc/util/Janitor.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 URLAccessCFBinInputStream::URLAccessCFBinInputStream(const XMLURL& urlSource)
       : mBytesProcessed(0),
@@ -177,4 +177,4 @@
     return 0;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/NetAccessors/MacOSURLAccessCF/URLAccessCFBinInputStream.hpp b/src/xercesc/util/NetAccessors/MacOSURLAccessCF/URLAccessCFBinInputStream.hpp
index 686d1c3..d4c66b6 100644
--- a/src/xercesc/util/NetAccessors/MacOSURLAccessCF/URLAccessCFBinInputStream.hpp
+++ b/src/xercesc/util/NetAccessors/MacOSURLAccessCF/URLAccessCFBinInputStream.hpp
@@ -36,7 +36,7 @@
 	#include <CFURLAccess.h>
 #endif
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //
 // This class implements the BinInputStream interface specified by the XML
@@ -70,6 +70,6 @@
     return mBytesProcessed;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif // URLACCESSCFBININPUTSTREAM_HPP
diff --git a/src/xercesc/util/NetAccessors/Socket/SocketNetAccessor.cpp b/src/xercesc/util/NetAccessors/Socket/SocketNetAccessor.cpp
index 9da394b..60085e8 100644
--- a/src/xercesc/util/NetAccessors/Socket/SocketNetAccessor.cpp
+++ b/src/xercesc/util/NetAccessors/Socket/SocketNetAccessor.cpp
@@ -26,7 +26,7 @@
 #include <xercesc/util/NetAccessors/Socket/UnixHTTPURLInputStream.hpp>
 #include <xercesc/util/NetAccessors/Socket/SocketNetAccessor.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 const XMLCh SocketNetAccessor::fgMyName[] =
 {
@@ -72,5 +72,5 @@
     return 0;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
diff --git a/src/xercesc/util/NetAccessors/Socket/SocketNetAccessor.hpp b/src/xercesc/util/NetAccessors/Socket/SocketNetAccessor.hpp
index 039d901..5887371 100644
--- a/src/xercesc/util/NetAccessors/Socket/SocketNetAccessor.hpp
+++ b/src/xercesc/util/NetAccessors/Socket/SocketNetAccessor.hpp
@@ -28,7 +28,7 @@
 #include <xercesc/util/BinInputStream.hpp>
 #include <xercesc/util/XMLNetAccessor.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //
 // This class is the wrapper for the socket based code which
@@ -59,6 +59,6 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif // SOCKETNETACCESSOR_HPP
diff --git a/src/xercesc/util/NetAccessors/Socket/UnixHTTPURLInputStream.cpp b/src/xercesc/util/NetAccessors/Socket/UnixHTTPURLInputStream.cpp
index 9032f1a..ae6a26d 100644
--- a/src/xercesc/util/NetAccessors/Socket/UnixHTTPURLInputStream.cpp
+++ b/src/xercesc/util/NetAccessors/Socket/UnixHTTPURLInputStream.cpp
@@ -23,7 +23,7 @@
 #  include <config.h>
 #endif
 
-#include <string.h>
+#include <cstring>
 
 #if HAVE_UNISTD_H
 #  include <unistd.h>
@@ -50,7 +50,7 @@
 #include <xercesc/util/XMLExceptMsgs.hpp>
 #include <xercesc/util/Janitor.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class SocketJanitor
 {
@@ -271,4 +271,4 @@
     return ::recv(fSocket, buf, len, 0);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/NetAccessors/Socket/UnixHTTPURLInputStream.hpp b/src/xercesc/util/NetAccessors/Socket/UnixHTTPURLInputStream.hpp
index 859a395..7e6b41c 100644
--- a/src/xercesc/util/NetAccessors/Socket/UnixHTTPURLInputStream.hpp
+++ b/src/xercesc/util/NetAccessors/Socket/UnixHTTPURLInputStream.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/NetAccessors/BinHTTPInputStreamCommon.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //
 // This class implements the BinInputStream interface specified by the XML
@@ -56,6 +56,6 @@
     int                 fSocket;
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif // UNIXHTTPURLINPUTSTREAM_HPP
diff --git a/src/xercesc/util/NetAccessors/WinSock/BinHTTPURLInputStream.cpp b/src/xercesc/util/NetAccessors/WinSock/BinHTTPURLInputStream.cpp
index 289519e..7c86f62 100644
--- a/src/xercesc/util/NetAccessors/WinSock/BinHTTPURLInputStream.cpp
+++ b/src/xercesc/util/NetAccessors/WinSock/BinHTTPURLInputStream.cpp
@@ -27,8 +27,8 @@
 #include <ws2tcpip.h>
 #endif
 
-#include <stdio.h>
-#include <string.h>
+#include <cstdio>
+#include <cstring>
 
 #include <xercesc/util/PlatformUtils.hpp>
 #include <xercesc/util/XMLNetAccessor.hpp>
@@ -38,7 +38,7 @@
 #include <xercesc/util/XMLUniDefs.hpp>
 #include <xercesc/util/Mutexes.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 typedef u_short (WSAAPI * LPFN_HTONS)(u_short hostshort);
 typedef SOCKET (WSAAPI * LPFN_SOCKET)(int af, int type, int protocol);
@@ -492,4 +492,4 @@
     return iLen;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/NetAccessors/WinSock/BinHTTPURLInputStream.hpp b/src/xercesc/util/NetAccessors/WinSock/BinHTTPURLInputStream.hpp
index 0d325ab..9a7e8e9 100644
--- a/src/xercesc/util/NetAccessors/WinSock/BinHTTPURLInputStream.hpp
+++ b/src/xercesc/util/NetAccessors/WinSock/BinHTTPURLInputStream.hpp
@@ -27,7 +27,7 @@
 
 #include <winsock2.h>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //
 // This class implements the BinInputStream interface specified by the XML
@@ -66,6 +66,6 @@
     static void Initialize(MemoryManager* const manager  = XMLPlatformUtils::fgMemoryManager);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif // BINHTTPURLINPUTSTREAM_HPP
diff --git a/src/xercesc/util/NetAccessors/WinSock/WinSockNetAccessor.cpp b/src/xercesc/util/NetAccessors/WinSock/WinSockNetAccessor.cpp
index 4ebdada..a1e2d67 100644
--- a/src/xercesc/util/NetAccessors/WinSock/WinSockNetAccessor.cpp
+++ b/src/xercesc/util/NetAccessors/WinSock/WinSockNetAccessor.cpp
@@ -30,7 +30,7 @@
 #include <xercesc/util/NetAccessors/WinSock/BinHTTPURLInputStream.hpp>
 #include <xercesc/util/NetAccessors/WinSock/WinSockNetAccessor.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 const XMLCh WinSockNetAccessor::fgMyName[] =
 {
@@ -76,5 +76,5 @@
     return 0;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
diff --git a/src/xercesc/util/NetAccessors/WinSock/WinSockNetAccessor.hpp b/src/xercesc/util/NetAccessors/WinSock/WinSockNetAccessor.hpp
index f4541db..fc4cdf1 100644
--- a/src/xercesc/util/NetAccessors/WinSock/WinSockNetAccessor.hpp
+++ b/src/xercesc/util/NetAccessors/WinSock/WinSockNetAccessor.hpp
@@ -29,7 +29,7 @@
 #include <xercesc/util/XMLNetAccessor.hpp>
 
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //
 // This class is the wrapper for the WinSock library which provides
@@ -59,7 +59,7 @@
     return fgMyName;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 
 #endif // WINSOCKNETACCESSOR_HPP
diff --git a/src/xercesc/util/NoSuchElementException.hpp b/src/xercesc/util/NoSuchElementException.hpp
index b4a5da6..a3d1aa9 100644
--- a/src/xercesc/util/NoSuchElementException.hpp
+++ b/src/xercesc/util/NoSuchElementException.hpp
@@ -25,10 +25,10 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/util/XMLException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 MakeXMLException(NoSuchElementException, XMLUTIL_EXPORT)
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/NullPointerException.hpp b/src/xercesc/util/NullPointerException.hpp
index 3906d55..97465bf 100644
--- a/src/xercesc/util/NullPointerException.hpp
+++ b/src/xercesc/util/NullPointerException.hpp
@@ -26,10 +26,10 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/util/XMLException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 MakeXMLException(NullPointerException, XMLUTIL_EXPORT)
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/NumberFormatException.hpp b/src/xercesc/util/NumberFormatException.hpp
index 07e2ba9..cd35502 100644
--- a/src/xercesc/util/NumberFormatException.hpp
+++ b/src/xercesc/util/NumberFormatException.hpp
@@ -25,10 +25,10 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/util/XMLException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 MakeXMLException(NumberFormatException, XMLUTIL_EXPORT)
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/OutOfMemoryException.hpp b/src/xercesc/util/OutOfMemoryException.hpp
index 5b2d604..f5df741 100644
--- a/src/xercesc/util/OutOfMemoryException.hpp
+++ b/src/xercesc/util/OutOfMemoryException.hpp
@@ -27,7 +27,7 @@
 #include <xercesc/util/XMLExceptMsgs.hpp>
 #include <xercesc/util/XMLUniDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 static const XMLCh gDefOutOfMemoryErrMsg[] =
 {
@@ -91,6 +91,6 @@
     return 0;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/PSVIUni.cpp b/src/xercesc/util/PSVIUni.cpp
index 23ace3e..200338e 100644
--- a/src/xercesc/util/PSVIUni.cpp
+++ b/src/xercesc/util/PSVIUni.cpp
@@ -22,7 +22,7 @@
 #include <xercesc/util/XMLUniDefs.hpp>
 #include "PSVIUni.hpp"
 
-XERCES_CPP_NAMESPACE_USE
+using namespace XERCES_CPP_NAMESPACE;
 
 
 const XMLCh PSVIUni::fgPsvColon[] = {
diff --git a/src/xercesc/util/PSVIUni.hpp b/src/xercesc/util/PSVIUni.hpp
index b06dcb3..2e7d00a 100644
--- a/src/xercesc/util/PSVIUni.hpp
+++ b/src/xercesc/util/PSVIUni.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XercesDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLUTIL_EXPORT PSVIUni
 {
@@ -234,6 +234,6 @@
 
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/PanicHandler.cpp b/src/xercesc/util/PanicHandler.cpp
index cf2f030..44333e8 100644
--- a/src/xercesc/util/PanicHandler.cpp
+++ b/src/xercesc/util/PanicHandler.cpp
@@ -25,7 +25,7 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/util/PanicHandler.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 const char* PanicHandler::getPanicReasonString(const PanicReasons reason)
 {
@@ -66,5 +66,5 @@
 
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
diff --git a/src/xercesc/util/PanicHandler.hpp b/src/xercesc/util/PanicHandler.hpp
index cf07adc..5033651 100644
--- a/src/xercesc/util/PanicHandler.hpp
+++ b/src/xercesc/util/PanicHandler.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XMemory.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
   * Receive notification of panic.
@@ -107,6 +107,6 @@
     PanicHandler& operator=(const PanicHandler&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/ParseException.hpp b/src/xercesc/util/ParseException.hpp
index 6e7fe38..d027385 100644
--- a/src/xercesc/util/ParseException.hpp
+++ b/src/xercesc/util/ParseException.hpp
@@ -25,10 +25,10 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/util/XMLException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 MakeXMLException(ParseException, XMLUTIL_EXPORT)
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/PlatformUtils.cpp b/src/xercesc/util/PlatformUtils.cpp
index 4e54029..d1f8076 100644
--- a/src/xercesc/util/PlatformUtils.cpp
+++ b/src/xercesc/util/PlatformUtils.cpp
@@ -122,7 +122,7 @@
 #	include <xercesc/util/Transcoders/Win32/Win32TransService.hpp>
 #endif
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Local data members
@@ -1092,4 +1092,4 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/PlatformUtils.hpp b/src/xercesc/util/PlatformUtils.hpp
index 0123ff1..5c4a938 100644
--- a/src/xercesc/util/PlatformUtils.hpp
+++ b/src/xercesc/util/PlatformUtils.hpp
@@ -29,7 +29,7 @@
 #include <xercesc/util/XMLFileMgr.hpp>
 #include <xercesc/util/XMLMutexMgr.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLMsgLoader;
 class XMLNetAccessor;
@@ -834,6 +834,6 @@
 {
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/QName.cpp b/src/xercesc/util/QName.cpp
index 27fedb3..8549464 100644
--- a/src/xercesc/util/QName.cpp
+++ b/src/xercesc/util/QName.cpp
@@ -23,7 +23,7 @@
 #include <xercesc/util/QName.hpp>
 #include <xercesc/util/OutOfMemoryException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  QName: Constructors and Destructor
@@ -423,4 +423,4 @@
 
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/QName.hpp b/src/xercesc/util/QName.hpp
index a950d0d..ea3133e 100644
--- a/src/xercesc/util/QName.hpp
+++ b/src/xercesc/util/QName.hpp
@@ -29,7 +29,7 @@
 
 #include <xercesc/internal/XSerializable.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLUTIL_EXPORT QName : public XSerializable, public XMemory
 {
@@ -212,6 +212,6 @@
     setNLocalPart(localPart, XMLString::stringLen(localPart));
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/RefArrayOf.c b/src/xercesc/util/RefArrayOf.c
index 6e22db3..6c6b464 100644
--- a/src/xercesc/util/RefArrayOf.c
+++ b/src/xercesc/util/RefArrayOf.c
@@ -27,7 +27,7 @@
 #include <xercesc/util/RefArrayOf.hpp>
 #endif
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  RefArrayOf: Constructors and Destructor
@@ -266,4 +266,4 @@
     fCurIndex = 0;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/RefArrayOf.hpp b/src/xercesc/util/RefArrayOf.hpp
index 1bd949a..d059cd4 100644
--- a/src/xercesc/util/RefArrayOf.hpp
+++ b/src/xercesc/util/RefArrayOf.hpp
@@ -28,7 +28,7 @@
 #include <xercesc/util/XMLEnumerator.hpp>
 #include <xercesc/framework/MemoryManager.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 template <class TElem> class RefArrayOf : public XMemory
 {
@@ -141,7 +141,7 @@
     RefArrayOf<TElem>*  fToEnum;
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #if !defined(XERCES_TMPLSINC)
 #include <xercesc/util/RefArrayOf.c>
diff --git a/src/xercesc/util/RefArrayVectorOf.c b/src/xercesc/util/RefArrayVectorOf.c
index d932773..d94fc54 100644
--- a/src/xercesc/util/RefArrayVectorOf.c
+++ b/src/xercesc/util/RefArrayVectorOf.c
@@ -22,7 +22,7 @@
 #include "RefArrayVectorOf.hpp"
 #endif
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  RefArrayVectorOf: Constructor and Destructor
@@ -119,4 +119,4 @@
     this->fMemoryManager->deallocate(this->fElemList);//delete [] fElemList;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/RefArrayVectorOf.hpp b/src/xercesc/util/RefArrayVectorOf.hpp
index 50491b4..afa5bce 100644
--- a/src/xercesc/util/RefArrayVectorOf.hpp
+++ b/src/xercesc/util/RefArrayVectorOf.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/BaseRefVectorOf.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /** 
  * Class with implementation for vectors of pointers to arrays  - implements from 
@@ -61,7 +61,7 @@
     RefArrayVectorOf<TElem>& operator=(const RefArrayVectorOf<TElem>&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #if !defined(XERCES_TMPLSINC)
 #include <xercesc/util/RefArrayVectorOf.c>
diff --git a/src/xercesc/util/RefHash2KeysTableOf.c b/src/xercesc/util/RefHash2KeysTableOf.c
index d37e008..7de1b44 100644
--- a/src/xercesc/util/RefHash2KeysTableOf.c
+++ b/src/xercesc/util/RefHash2KeysTableOf.c
@@ -32,7 +32,7 @@
 #include <assert.h>
 #include <new>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  RefHash2KeysTableOf: Constructors and Destructor
@@ -689,4 +689,4 @@
     }
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/RefHash2KeysTableOf.hpp b/src/xercesc/util/RefHash2KeysTableOf.hpp
index d2639e8..8e6d7cd 100644
--- a/src/xercesc/util/RefHash2KeysTableOf.hpp
+++ b/src/xercesc/util/RefHash2KeysTableOf.hpp
@@ -29,7 +29,7 @@
 #include <xercesc/util/RuntimeException.hpp>
 #include <xercesc/util/PlatformUtils.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // This hash table is similar to RefHashTableOf with an additional integer as key2
 
@@ -249,7 +249,7 @@
     const void*                             fLockPrimaryKey;
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #if !defined(XERCES_TMPLSINC)
 #include <xercesc/util/RefHash2KeysTableOf.c>
diff --git a/src/xercesc/util/RefHash3KeysIdPool.c b/src/xercesc/util/RefHash3KeysIdPool.c
index 4fdd595..4ec4a1c 100644
--- a/src/xercesc/util/RefHash3KeysIdPool.c
+++ b/src/xercesc/util/RefHash3KeysIdPool.c
@@ -31,7 +31,7 @@
 #include <assert.h>
 #include <new>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  RefHash3KeysIdPool: Constructors and Destructor
@@ -569,4 +569,4 @@
     }
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/RefHash3KeysIdPool.hpp b/src/xercesc/util/RefHash3KeysIdPool.hpp
index 666abeb..82e0abc 100644
--- a/src/xercesc/util/RefHash3KeysIdPool.hpp
+++ b/src/xercesc/util/RefHash3KeysIdPool.hpp
@@ -29,7 +29,7 @@
 #include <xercesc/util/RuntimeException.hpp>
 #include <xercesc/util/PlatformUtils.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // This hash table is a combination of RefHash2KeyTableOf (with an additional integer as key3)
 // and NameIdPool with an id as index
@@ -270,7 +270,7 @@
     MemoryManager* const                fMemoryManager;
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #if !defined(XERCES_TMPLSINC)
 #include <xercesc/util/RefHash3KeysIdPool.c>
diff --git a/src/xercesc/util/RefHashTableOf.c b/src/xercesc/util/RefHashTableOf.c
index e413e36..044da22 100644
--- a/src/xercesc/util/RefHashTableOf.c
+++ b/src/xercesc/util/RefHashTableOf.c
@@ -32,7 +32,7 @@
 #include <xercesc/util/NullPointerException.hpp>
 #include <new>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  RefHashTableOf: Constructors and Destructor
@@ -660,4 +660,4 @@
     }
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/RefHashTableOf.hpp b/src/xercesc/util/RefHashTableOf.hpp
index 12572eb..d698e80 100644
--- a/src/xercesc/util/RefHashTableOf.hpp
+++ b/src/xercesc/util/RefHashTableOf.hpp
@@ -29,7 +29,7 @@
 #include <xercesc/util/PlatformUtils.hpp>
 #include <xercesc/framework/MemoryManager.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //  Forward declare the enumerator so it can be our friend.
 //
@@ -246,7 +246,7 @@
     MemoryManager* const                  fMemoryManager;
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #if !defined(XERCES_TMPLSINC)
 #include <xercesc/util/RefHashTableOf.c>
diff --git a/src/xercesc/util/RefStackOf.c b/src/xercesc/util/RefStackOf.c
index 92286fb..dc22cce 100644
--- a/src/xercesc/util/RefStackOf.c
+++ b/src/xercesc/util/RefStackOf.c
@@ -27,7 +27,7 @@
 #include <xercesc/util/RefStackOf.hpp>
 #endif
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  RefStackOf: Constructors and Destructor
@@ -157,4 +157,4 @@
     fCurIndex = 0;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/RefStackOf.hpp b/src/xercesc/util/RefStackOf.hpp
index 5b16889..c8a4529 100644
--- a/src/xercesc/util/RefStackOf.hpp
+++ b/src/xercesc/util/RefStackOf.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/RefVectorOf.hpp>
 #include <xercesc/util/EmptyStackException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //
 //  Forward declare the enumerator so he can be our friend. Can you say
@@ -143,7 +143,7 @@
     RefStackOf<TElem>*  fToEnum;
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #if !defined(XERCES_TMPLSINC)
 #include <xercesc/util/RefStackOf.c>
diff --git a/src/xercesc/util/RefVectorOf.c b/src/xercesc/util/RefVectorOf.c
index 793e0d3..9ec9b3b 100644
--- a/src/xercesc/util/RefVectorOf.c
+++ b/src/xercesc/util/RefVectorOf.c
@@ -27,7 +27,7 @@
 #include <xercesc/util/RefVectorOf.hpp>
 #endif
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  RefVectorOf: Constructors and Destructor
@@ -51,4 +51,4 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/RefVectorOf.hpp b/src/xercesc/util/RefVectorOf.hpp
index 42296eb..1adba40 100644
--- a/src/xercesc/util/RefVectorOf.hpp
+++ b/src/xercesc/util/RefVectorOf.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/BaseRefVectorOf.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /** 
  * Class with implementation for vectors of References - implements from the 
@@ -53,7 +53,7 @@
     RefVectorOf<TElem>& operator=(const RefVectorOf<TElem>&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #if !defined(XERCES_TMPLSINC)
 #include <xercesc/util/RefVectorOf.c>
diff --git a/src/xercesc/util/RuntimeException.hpp b/src/xercesc/util/RuntimeException.hpp
index cd33904..1a57e5c 100644
--- a/src/xercesc/util/RuntimeException.hpp
+++ b/src/xercesc/util/RuntimeException.hpp
@@ -26,10 +26,10 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/util/XMLException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 MakeXMLException(RuntimeException, XMLUTIL_EXPORT)
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/SchemaDateTimeException.hpp b/src/xercesc/util/SchemaDateTimeException.hpp
index 8c3b610..93a3e1c 100644
--- a/src/xercesc/util/SchemaDateTimeException.hpp
+++ b/src/xercesc/util/SchemaDateTimeException.hpp
@@ -26,10 +26,10 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/util/XMLException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 MakeXMLException(SchemaDateTimeException, XMLUTIL_EXPORT)
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/SecurityManager.hpp b/src/xercesc/util/SecurityManager.hpp
index b018560..c310905 100644
--- a/src/xercesc/util/SecurityManager.hpp
+++ b/src/xercesc/util/SecurityManager.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XercesDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
   * Allow application to force the parser to behave in a security-conscious
@@ -111,6 +111,6 @@
     SecurityManager& operator=(const SecurityManager&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/StringPool.cpp b/src/xercesc/util/StringPool.cpp
index 224f806..b30cad6 100644
--- a/src/xercesc/util/StringPool.cpp
+++ b/src/xercesc/util/StringPool.cpp
@@ -26,7 +26,7 @@
 #include <xercesc/util/StringPool.hpp>
 #include <assert.h>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  XMLStringPool: Constructors and Destructor
@@ -188,4 +188,4 @@
     memset(fIdMap, 0, sizeof(PoolElem*) * fMapCapacity);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/StringPool.hpp b/src/xercesc/util/StringPool.hpp
index 6dfbfab..1cb6322 100644
--- a/src/xercesc/util/StringPool.hpp
+++ b/src/xercesc/util/StringPool.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/RefHashTableOf.hpp>
 #include <xercesc/internal/XSerializable.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //
 //  This class implements a string pool, in which strings can be added and
@@ -170,6 +170,6 @@
     return fCurId-1;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/SynchronizedStringPool.cpp b/src/xercesc/util/SynchronizedStringPool.cpp
index 38d35fc..9a6b811 100644
--- a/src/xercesc/util/SynchronizedStringPool.cpp
+++ b/src/xercesc/util/SynchronizedStringPool.cpp
@@ -26,7 +26,7 @@
 #include <xercesc/util/SynchronizedStringPool.hpp>
 
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  XMLSynchronizedStringPool: Constructors and Destructor
@@ -126,4 +126,4 @@
     return fCurId+constCount-1;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/SynchronizedStringPool.hpp b/src/xercesc/util/SynchronizedStringPool.hpp
index b8cb0fe..d3fc68e 100644
--- a/src/xercesc/util/SynchronizedStringPool.hpp
+++ b/src/xercesc/util/SynchronizedStringPool.hpp
@@ -26,7 +26,7 @@
 #include <xercesc/util/StringPool.hpp>
 #include <xercesc/util/Mutexes.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //
 //  This class provides a synchronized string pool implementation.
@@ -81,6 +81,6 @@
     XMLMutex             fMutex;
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/TransENameMap.c b/src/xercesc/util/TransENameMap.c
index bbe27f3..363a6b0 100644
--- a/src/xercesc/util/TransENameMap.c
+++ b/src/xercesc/util/TransENameMap.c
@@ -23,7 +23,7 @@
 #include <xercesc/util/TransENameMap.hpp>
 #endif
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  ENameMapFor: Constructors and Destructor
@@ -78,4 +78,4 @@
     return new (manager) TType(getKey(), blockSize, fSwapped, manager);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/TransENameMap.hpp b/src/xercesc/util/TransENameMap.hpp
index e896bc9..2b475c3 100644
--- a/src/xercesc/util/TransENameMap.hpp
+++ b/src/xercesc/util/TransENameMap.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/TransService.hpp>
 #include <xercesc/util/XMLString.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //
 //  This class is really private to the TransService class. However, some
@@ -157,7 +157,7 @@
     bool    fSwapped;
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #if !defined(XERCES_TMPLSINC)
 #include <xercesc/util/TransENameMap.c>
diff --git a/src/xercesc/util/TransService.cpp b/src/xercesc/util/TransService.cpp
index d5d53f8..7bf2f34 100644
--- a/src/xercesc/util/TransService.cpp
+++ b/src/xercesc/util/TransService.cpp
@@ -40,7 +40,7 @@
 #include <xercesc/util/XMLInitializer.hpp>
 #include <xercesc/util/TranscodingException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Local, static data
@@ -762,4 +762,4 @@
     fString[fCharsWritten] = 0;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/TransService.hpp b/src/xercesc/util/TransService.hpp
index 337a89a..c6decac 100644
--- a/src/xercesc/util/TransService.hpp
+++ b/src/xercesc/util/TransService.hpp
@@ -29,7 +29,7 @@
 #include <xercesc/util/RefVectorOf.hpp>
 #include <xercesc/util/Janitor.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // Forward references
 //class XMLPlatformUtils;
@@ -702,6 +702,6 @@
     return fCharsWritten;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/Transcoders/ICU/ICUTransService.cpp b/src/xercesc/util/Transcoders/ICU/ICUTransService.cpp
index 0ebcd37..7660fca 100644
--- a/src/xercesc/util/Transcoders/ICU/ICUTransService.cpp
+++ b/src/xercesc/util/Transcoders/ICU/ICUTransService.cpp
@@ -29,7 +29,7 @@
 #include <xercesc/util/XMLString.hpp>
 #include <xercesc/util/XMLUniDefs.hpp>
 #include "ICUTransService.hpp"
-#include <string.h>
+#include <cstring>
 #include <unicode/uloc.h>
 #include <unicode/uchar.h>
 #include <unicode/ucnv.h>
@@ -63,7 +63,7 @@
 #endif
 
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Local, const data
@@ -1222,4 +1222,4 @@
     return true;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/Transcoders/ICU/ICUTransService.hpp b/src/xercesc/util/Transcoders/ICU/ICUTransService.hpp
index c8f435f..05675a8 100644
--- a/src/xercesc/util/Transcoders/ICU/ICUTransService.hpp
+++ b/src/xercesc/util/Transcoders/ICU/ICUTransService.hpp
@@ -27,7 +27,7 @@
 
 struct UConverter;
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLUTIL_EXPORT ICUTransService : public XMLTransService
 {
@@ -237,6 +237,6 @@
     XMLMutex        fMutex;
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/Transcoders/Iconv/IconvTransService.cpp b/src/xercesc/util/Transcoders/Iconv/IconvTransService.cpp
index 5e24350..8e7471a 100644
--- a/src/xercesc/util/Transcoders/Iconv/IconvTransService.cpp
+++ b/src/xercesc/util/Transcoders/Iconv/IconvTransService.cpp
@@ -43,9 +43,9 @@
 #	include <towlower.h>
 #endif
 
-#include <string.h>
-#include <stdlib.h>
-#include <stdio.h>
+#include <cstring>
+#include <cstdlib>
+#include <cstdio>
 
 #include "IconvTransService.hpp"
 #include <xercesc/util/XMLUniDefs.hpp>
@@ -53,7 +53,7 @@
 #include <xercesc/framework/MemoryManager.hpp>
 
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Local, const data
@@ -568,4 +568,4 @@
 {
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/Transcoders/Iconv/IconvTransService.hpp b/src/xercesc/util/Transcoders/Iconv/IconvTransService.hpp
index 81492de..a6fb688 100644
--- a/src/xercesc/util/Transcoders/Iconv/IconvTransService.hpp
+++ b/src/xercesc/util/Transcoders/Iconv/IconvTransService.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/TransService.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLUTIL_EXPORT IconvTransService : public XMLTransService
 {
@@ -137,6 +137,6 @@
     IconvLCPTranscoder& operator=(const IconvLCPTranscoder&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/Transcoders/IconvGNU/IconvGNUTransService.cpp b/src/xercesc/util/Transcoders/IconvGNU/IconvGNUTransService.cpp
index 51d1f27..0cd2d67 100644
--- a/src/xercesc/util/Transcoders/IconvGNU/IconvGNUTransService.cpp
+++ b/src/xercesc/util/Transcoders/IconvGNU/IconvGNUTransService.cpp
@@ -103,9 +103,9 @@
 # endif /* BYTE_ORDER == LITTLE_ENDIAN */
 
 #include <wchar.h>
-#include <string.h>
-#include <stdlib.h>
-#include <stdio.h>
+#include <cstring>
+#include <cstdlib>
+#include <cstdio>
 
 #include <xercesc/util/XMLString.hpp>
 #include <xercesc/util/XMLUniDefs.hpp>
@@ -116,7 +116,7 @@
 #include "IconvGNUTransService.hpp"
 
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 // Description of encoding schemas, supported by iconv()
@@ -1139,4 +1139,4 @@
     return (rc != (size_t)-1) && (len == 0);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/Transcoders/IconvGNU/IconvGNUTransService.hpp b/src/xercesc/util/Transcoders/IconvGNU/IconvGNUTransService.hpp
index 81f0d5b..5b93dd6 100644
--- a/src/xercesc/util/Transcoders/IconvGNU/IconvGNUTransService.hpp
+++ b/src/xercesc/util/Transcoders/IconvGNU/IconvGNUTransService.hpp
@@ -27,7 +27,7 @@
 
 #include <iconv.h>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Libiconv wrapper (low-level conversion utilities collection)
@@ -352,7 +352,7 @@
     IconvGNULCPTranscoder& operator=(const IconvGNULCPTranscoder&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif /* ICONVGNUTRANSSERVICE */
 
diff --git a/src/xercesc/util/Transcoders/MacOSUnicodeConverter/MacOSUnicodeConverter.cpp b/src/xercesc/util/Transcoders/MacOSUnicodeConverter/MacOSUnicodeConverter.cpp
index a3bd96a..c99f790 100644
--- a/src/xercesc/util/Transcoders/MacOSUnicodeConverter/MacOSUnicodeConverter.cpp
+++ b/src/xercesc/util/Transcoders/MacOSUnicodeConverter/MacOSUnicodeConverter.cpp
@@ -54,7 +54,7 @@
 #include <xercesc/util/PlatformUtils.hpp>
 #include <xercesc/util/Janitor.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //	Typedefs
@@ -969,4 +969,4 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/Transcoders/MacOSUnicodeConverter/MacOSUnicodeConverter.hpp b/src/xercesc/util/Transcoders/MacOSUnicodeConverter/MacOSUnicodeConverter.hpp
index ef4ad44..86c32b4 100644
--- a/src/xercesc/util/Transcoders/MacOSUnicodeConverter/MacOSUnicodeConverter.hpp
+++ b/src/xercesc/util/Transcoders/MacOSUnicodeConverter/MacOSUnicodeConverter.hpp
@@ -34,7 +34,7 @@
     #include <UnicodeConverter.h>
 #endif
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //
 //  The transcoding service has to provide a couple of required string
@@ -274,6 +274,6 @@
 	XMLMutex				mMutex;			// Mutex to enable reentrancy of LCP transcoder
  };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/Transcoders/Win32/Win32TransService.cpp b/src/xercesc/util/Transcoders/Win32/Win32TransService.cpp
index 4819443..1ccfee8 100644
--- a/src/xercesc/util/Transcoders/Win32/Win32TransService.cpp
+++ b/src/xercesc/util/Transcoders/Win32/Win32TransService.cpp
@@ -36,7 +36,7 @@
 #include <xercesc/util/RefHashTableOf.hpp>
 #include "Win32TransService.hpp"
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 // ---------------------------------------------------------------------------
@@ -1083,4 +1083,4 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/Transcoders/Win32/Win32TransService.hpp b/src/xercesc/util/Transcoders/Win32/Win32TransService.hpp
index 1db829c..b1f62e2 100644
--- a/src/xercesc/util/Transcoders/Win32/Win32TransService.hpp
+++ b/src/xercesc/util/Transcoders/Win32/Win32TransService.hpp
@@ -26,7 +26,7 @@
 #include <xercesc/util/RefHashTableOf.hpp>
 #include <windows.h>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class CPMapEntry;
 
@@ -272,6 +272,6 @@
     MemoryManager*  fManager;
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/TranscodingException.hpp b/src/xercesc/util/TranscodingException.hpp
index 147b751..769d85b 100644
--- a/src/xercesc/util/TranscodingException.hpp
+++ b/src/xercesc/util/TranscodingException.hpp
@@ -25,10 +25,10 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/util/XMLException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 MakeXMLException(TranscodingException, XMLUTIL_EXPORT)
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/UTFDataFormatException.hpp b/src/xercesc/util/UTFDataFormatException.hpp
index 3257e1e..227033c 100644
--- a/src/xercesc/util/UTFDataFormatException.hpp
+++ b/src/xercesc/util/UTFDataFormatException.hpp
@@ -26,10 +26,10 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/util/XMLException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 MakeXMLException(UTFDataFormatException, XMLUTIL_EXPORT)
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/UnexpectedEOFException.hpp b/src/xercesc/util/UnexpectedEOFException.hpp
index db1a6b2..e7bfbb4 100644
--- a/src/xercesc/util/UnexpectedEOFException.hpp
+++ b/src/xercesc/util/UnexpectedEOFException.hpp
@@ -25,10 +25,10 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/util/XMLException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 MakeXMLException(UnexpectedEOFException, XMLUTIL_EXPORT)
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/UnsupportedEncodingException.hpp b/src/xercesc/util/UnsupportedEncodingException.hpp
index 0da26a6..b0e2663 100644
--- a/src/xercesc/util/UnsupportedEncodingException.hpp
+++ b/src/xercesc/util/UnsupportedEncodingException.hpp
@@ -25,10 +25,10 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/util/XMLException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 MakeXMLException(UnsupportedEncodingException, XMLUTIL_EXPORT)
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/ValueArrayOf.c b/src/xercesc/util/ValueArrayOf.c
index 1683e1b..6500fca 100644
--- a/src/xercesc/util/ValueArrayOf.c
+++ b/src/xercesc/util/ValueArrayOf.c
@@ -28,7 +28,7 @@
 #endif
 
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  ValueArrayOf: Constructors and Destructor
@@ -249,4 +249,4 @@
     fCurIndex = 0;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/ValueArrayOf.hpp b/src/xercesc/util/ValueArrayOf.hpp
index e47631e..61db074 100644
--- a/src/xercesc/util/ValueArrayOf.hpp
+++ b/src/xercesc/util/ValueArrayOf.hpp
@@ -28,7 +28,7 @@
 #include <xercesc/util/PlatformUtils.hpp>
 #include <xercesc/framework/MemoryManager.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 template <class TElem> class ValueArrayOf : public XMemory
 {
@@ -141,7 +141,7 @@
     ValueArrayOf<TElem>*    fToEnum;
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #if !defined(XERCES_TMPLSINC)
 #include <xercesc/util/ValueArrayOf.c>
diff --git a/src/xercesc/util/ValueHashTableOf.c b/src/xercesc/util/ValueHashTableOf.c
index b8925ac..1aa2e4e 100644
--- a/src/xercesc/util/ValueHashTableOf.c
+++ b/src/xercesc/util/ValueHashTableOf.c
@@ -32,7 +32,7 @@
 #include <assert.h>
 #include <new>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  ValueHashTableOf: Constructors and Destructor
@@ -486,4 +486,4 @@
     }
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/ValueHashTableOf.hpp b/src/xercesc/util/ValueHashTableOf.hpp
index a7cbe9d..d166c54 100644
--- a/src/xercesc/util/ValueHashTableOf.hpp
+++ b/src/xercesc/util/ValueHashTableOf.hpp
@@ -29,7 +29,7 @@
 #include <xercesc/util/RuntimeException.hpp>
 #include <xercesc/util/PlatformUtils.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //  Forward declare the enumerator so it can be our friend.
 //
@@ -220,7 +220,7 @@
     MemoryManager* const             fMemoryManager;
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #if !defined(XERCES_TMPLSINC)
 #include <xercesc/util/ValueHashTableOf.c>
diff --git a/src/xercesc/util/ValueStackOf.c b/src/xercesc/util/ValueStackOf.c
index fda3ba1..a9a0fa9 100644
--- a/src/xercesc/util/ValueStackOf.c
+++ b/src/xercesc/util/ValueStackOf.c
@@ -27,7 +27,7 @@
 #include <xercesc/util/ValueStackOf.hpp>
 #endif
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 // ---------------------------------------------------------------------------
@@ -143,4 +143,4 @@
     fCurIndex = 0;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/ValueStackOf.hpp b/src/xercesc/util/ValueStackOf.hpp
index 255e658..282728f 100644
--- a/src/xercesc/util/ValueStackOf.hpp
+++ b/src/xercesc/util/ValueStackOf.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/EmptyStackException.hpp>
 #include <xercesc/util/ValueVectorOf.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //
 //  Forward declare the enumerator so he can be our friend. Can you say
@@ -146,7 +146,7 @@
     ValueStackOf<TElem>*    fToEnum;
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #if !defined(XERCES_TMPLSINC)
 #include <xercesc/util/ValueStackOf.c>
diff --git a/src/xercesc/util/ValueVectorOf.c b/src/xercesc/util/ValueVectorOf.c
index 1aca736..506fa06 100644
--- a/src/xercesc/util/ValueVectorOf.c
+++ b/src/xercesc/util/ValueVectorOf.c
@@ -26,9 +26,9 @@
 #if defined(XERCES_TMPLSINC)
 #include <xercesc/util/ValueVectorOf.hpp>
 #endif
-#include <string.h>
+#include <cstring>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  ValueVectorOf: Constructors and Destructor
@@ -296,4 +296,4 @@
     fCurIndex = 0;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/ValueVectorOf.hpp b/src/xercesc/util/ValueVectorOf.hpp
index 015dbed..97ecf54 100644
--- a/src/xercesc/util/ValueVectorOf.hpp
+++ b/src/xercesc/util/ValueVectorOf.hpp
@@ -27,7 +27,7 @@
 #include <xercesc/util/PlatformUtils.hpp>
 #include <xercesc/framework/MemoryManager.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 template <class TElem> class ValueVectorOf : public XMemory
 {
@@ -153,7 +153,7 @@
     ValueVectorOf<TElem>*   fToEnum;
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #if !defined(XERCES_TMPLSINC)
 #include <xercesc/util/ValueVectorOf.c>
diff --git a/src/xercesc/util/XML256TableTranscoder.cpp b/src/xercesc/util/XML256TableTranscoder.cpp
index f70858c..03285f2 100644
--- a/src/xercesc/util/XML256TableTranscoder.cpp
+++ b/src/xercesc/util/XML256TableTranscoder.cpp
@@ -23,9 +23,9 @@
 #include <xercesc/util/TranscodingException.hpp>
 #include <xercesc/util/XML256TableTranscoder.hpp>
 #include <xercesc/util/XMLString.hpp>
-#include <string.h>
+#include <cstring>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 // ---------------------------------------------------------------------------
@@ -215,4 +215,4 @@
     return 0;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/XML256TableTranscoder.hpp b/src/xercesc/util/XML256TableTranscoder.hpp
index efc214d..c434f8d 100644
--- a/src/xercesc/util/XML256TableTranscoder.hpp
+++ b/src/xercesc/util/XML256TableTranscoder.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/TransService.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //
 //  This class implements the functionality of a common type of transcoder
@@ -141,6 +141,6 @@
     const XMLTransService::TransRec*    fToTable;
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/XML88591Transcoder.cpp b/src/xercesc/util/XML88591Transcoder.cpp
index 09646be..6cc6984 100644
--- a/src/xercesc/util/XML88591Transcoder.cpp
+++ b/src/xercesc/util/XML88591Transcoder.cpp
@@ -22,9 +22,9 @@
 #include <xercesc/util/TranscodingException.hpp>
 #include <xercesc/util/XML88591Transcoder.hpp>
 #include <xercesc/util/XMLString.hpp>
-#include <string.h>
+#include <cstring>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  XML88591Transcoder: Constructors and Destructor
@@ -143,4 +143,4 @@
     return (toCheck < 256);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/XML88591Transcoder.hpp b/src/xercesc/util/XML88591Transcoder.hpp
index 5935278..96eac3e 100644
--- a/src/xercesc/util/XML88591Transcoder.hpp
+++ b/src/xercesc/util/XML88591Transcoder.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/util/TransService.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //
 //  This class provides an implementation of the XMLTranscoder interface
@@ -88,6 +88,6 @@
     XML88591Transcoder& operator=(const XML88591Transcoder&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/XMLASCIITranscoder.cpp b/src/xercesc/util/XMLASCIITranscoder.cpp
index a5302bd..d2bf020 100644
--- a/src/xercesc/util/XMLASCIITranscoder.cpp
+++ b/src/xercesc/util/XMLASCIITranscoder.cpp
@@ -22,9 +22,9 @@
 #include <xercesc/util/XMLASCIITranscoder.hpp>
 #include <xercesc/util/XMLString.hpp>
 #include <xercesc/util/TranscodingException.hpp>
-#include <string.h>
+#include <cstring>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  XMLASCIITranscoder: Constructors and Destructor
@@ -169,4 +169,4 @@
     return (toCheck < 0x80);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/XMLASCIITranscoder.hpp b/src/xercesc/util/XMLASCIITranscoder.hpp
index dccd992..bc1ee91 100644
--- a/src/xercesc/util/XMLASCIITranscoder.hpp
+++ b/src/xercesc/util/XMLASCIITranscoder.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/util/TransService.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //
 //  This class provides an implementation of the XMLTranscoder interface
@@ -88,6 +88,6 @@
     XMLASCIITranscoder& operator=(const XMLASCIITranscoder&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/XMLAbstractDoubleFloat.cpp b/src/xercesc/util/XMLAbstractDoubleFloat.cpp
index dd6bbf4..046ba6a 100644
--- a/src/xercesc/util/XMLAbstractDoubleFloat.cpp
+++ b/src/xercesc/util/XMLAbstractDoubleFloat.cpp
@@ -33,7 +33,7 @@
 #include <float.h>
 #include <errno.h>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  local data member
@@ -691,4 +691,4 @@
 
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/XMLAbstractDoubleFloat.hpp b/src/xercesc/util/XMLAbstractDoubleFloat.hpp
index f5712b9..c5fa8be 100644
--- a/src/xercesc/util/XMLAbstractDoubleFloat.hpp
+++ b/src/xercesc/util/XMLAbstractDoubleFloat.hpp
@@ -26,7 +26,7 @@
 #include <xercesc/util/XMLNumber.hpp>
 #include <xercesc/util/PlatformUtils.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /***
  * 3.2.5.1 Lexical representation
@@ -216,6 +216,6 @@
     return fType;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/XMLBigDecimal.cpp b/src/xercesc/util/XMLBigDecimal.cpp
index 4e52eaa..6fb4a22 100644
--- a/src/xercesc/util/XMLBigDecimal.cpp
+++ b/src/xercesc/util/XMLBigDecimal.cpp
@@ -30,7 +30,7 @@
 #include <xercesc/util/OutOfMemoryException.hpp>
 #include <xercesc/util/Janitor.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
  * Constructs a BigDecimal from a string containing an optional (plus | minus)
@@ -515,5 +515,5 @@
 
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
diff --git a/src/xercesc/util/XMLBigDecimal.hpp b/src/xercesc/util/XMLBigDecimal.hpp
index 2319562..5b21817 100644
--- a/src/xercesc/util/XMLBigDecimal.hpp
+++ b/src/xercesc/util/XMLBigDecimal.hpp
@@ -26,7 +26,7 @@
 #include <xercesc/util/XMLString.hpp>
 #include <xercesc/util/PlatformUtils.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLUTIL_EXPORT XMLBigDecimal : public XMLNumber
 {
@@ -201,6 +201,6 @@
     return fIntVal;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/XMLBigInteger.cpp b/src/xercesc/util/XMLBigInteger.cpp
index b69693b..6bc79b2 100644
--- a/src/xercesc/util/XMLBigInteger.cpp
+++ b/src/xercesc/util/XMLBigInteger.cpp
@@ -31,7 +31,7 @@
 #include <xercesc/util/Janitor.hpp>
 #include <xercesc/util/XMLChar.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 XMLCh* XMLBigInteger::getCanonicalRepresentation(const XMLCh*         const rawData
                                                ,       MemoryManager* const memMgr
@@ -399,4 +399,4 @@
     return retVal * getSign();
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/XMLBigInteger.hpp b/src/xercesc/util/XMLBigInteger.hpp
index f49577f..cf4c7fc 100644
--- a/src/xercesc/util/XMLBigInteger.hpp
+++ b/src/xercesc/util/XMLBigInteger.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/XMemory.hpp>
 #include <xercesc/util/XMLString.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLUTIL_EXPORT XMLBigInteger : public XMemory
 {
@@ -170,6 +170,6 @@
     return fRawData;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/XMLChTranscoder.cpp b/src/xercesc/util/XMLChTranscoder.cpp
index 66a352d..05b0692 100644
--- a/src/xercesc/util/XMLChTranscoder.cpp
+++ b/src/xercesc/util/XMLChTranscoder.cpp
@@ -21,9 +21,9 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/util/BitOps.hpp>
 #include <xercesc/util/XMLChTranscoder.hpp>
-#include <string.h>
+#include <cstring>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  XMLChTranscoder: Constructors and Destructor
@@ -114,4 +114,4 @@
     return true;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/XMLChTranscoder.hpp b/src/xercesc/util/XMLChTranscoder.hpp
index c1fc3a7..129d49f 100644
--- a/src/xercesc/util/XMLChTranscoder.hpp
+++ b/src/xercesc/util/XMLChTranscoder.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/util/TransService.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //
 //  This class provides an implementation of the XMLTranscoder interface
@@ -85,6 +85,6 @@
     XMLChTranscoder& operator=(const XMLChTranscoder&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/XMLChar.cpp b/src/xercesc/util/XMLChar.cpp
index 46a61da..296134d 100644
--- a/src/xercesc/util/XMLChar.cpp
+++ b/src/xercesc/util/XMLChar.cpp
@@ -25,9 +25,9 @@
 #include <xercesc/util/XMLChar.hpp>
 #include <xercesc/util/XMLString.hpp>
 #include <xercesc/internal/CharTypeTables.hpp>
-#include <string.h>
+#include <cstring>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  XMLChar1_0: static data initialization
@@ -8835,7 +8835,7 @@
 
 #if defined(NEED_TO_GEN_TABLE)
 
-#include <stdio.h>
+#include <cstdio>
 
 static XMLCh gTmpCharTable[0x10000];
 
@@ -9073,4 +9073,4 @@
 #endif
 
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/XMLChar.hpp b/src/xercesc/util/XMLChar.hpp
index 60697b8..39174ed 100644
--- a/src/xercesc/util/XMLChar.hpp
+++ b/src/xercesc/util/XMLChar.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XMLUniDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  This file defines Char and utility that conforms to XML 1.0 and XML 1.1
@@ -456,6 +456,6 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/XMLDOMMsg.hpp b/src/xercesc/util/XMLDOMMsg.hpp
index 3ca4400..e65f148 100644
--- a/src/xercesc/util/XMLDOMMsg.hpp
+++ b/src/xercesc/util/XMLDOMMsg.hpp
@@ -7,7 +7,7 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/dom/DOMError.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLDOMMsg
 {
@@ -98,7 +98,7 @@
     XMLDOMMsg();
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/util/XMLDateTime.cpp b/src/xercesc/util/XMLDateTime.cpp
index 4308eeb..eb4a1b4 100644
--- a/src/xercesc/util/XMLDateTime.cpp
+++ b/src/xercesc/util/XMLDateTime.cpp
@@ -26,8 +26,8 @@
 #    include <config.h>
 #endif
 
-#include <stdlib.h>
-#include <stdio.h>
+#include <cstdlib>
+#include <cstdio>
 #include <assert.h>
 #include <errno.h>
 
@@ -39,7 +39,7 @@
 #include <xercesc/util/Janitor.hpp>
 #include <xercesc/util/NumberFormatException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //
 // constants used to process raw data (fBuffer)
@@ -1989,4 +1989,4 @@
 
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/XMLDateTime.hpp b/src/xercesc/util/XMLDateTime.hpp
index 54e2516..68f0b28 100644
--- a/src/xercesc/util/XMLDateTime.hpp
+++ b/src/xercesc/util/XMLDateTime.hpp
@@ -31,7 +31,7 @@
 
 #include <time.h>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XSValue;
 
@@ -373,6 +373,6 @@
     return ( c1 != INDETERMINATE ) ? c1 : c2;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/XMLDouble.cpp b/src/xercesc/util/XMLDouble.cpp
index 999f8e2..da5168f 100644
--- a/src/xercesc/util/XMLDouble.cpp
+++ b/src/xercesc/util/XMLDouble.cpp
@@ -27,10 +27,10 @@
 #include <xercesc/util/NumberFormatException.hpp>
 #include <xercesc/util/Janitor.hpp>
 
-#include <string.h>
-#include <stdlib.h>
+#include <cstring>
+#include <cstdlib>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  ctor/dtor
@@ -67,4 +67,4 @@
     XMLAbstractDoubleFloat::serialize(serEng);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/XMLDouble.hpp b/src/xercesc/util/XMLDouble.hpp
index e1daadc..86d779d 100644
--- a/src/xercesc/util/XMLDouble.hpp
+++ b/src/xercesc/util/XMLDouble.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XMLAbstractDoubleFloat.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLUTIL_EXPORT XMLDouble : public XMLAbstractDoubleFloat
 {
@@ -93,7 +93,7 @@
                                                  , ((XMLAbstractDoubleFloat*)lValue)->getMemoryManager());
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/util/XMLEBCDICTranscoder.cpp b/src/xercesc/util/XMLEBCDICTranscoder.cpp
index d2e7b26..39c6366 100644
--- a/src/xercesc/util/XMLEBCDICTranscoder.cpp
+++ b/src/xercesc/util/XMLEBCDICTranscoder.cpp
@@ -21,7 +21,7 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/util/XMLEBCDICTranscoder.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Local const data
@@ -202,4 +202,4 @@
 {
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/XMLEBCDICTranscoder.hpp b/src/xercesc/util/XMLEBCDICTranscoder.hpp
index 70153d2..a5a1233 100644
--- a/src/xercesc/util/XMLEBCDICTranscoder.hpp
+++ b/src/xercesc/util/XMLEBCDICTranscoder.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/util/XML256TableTranscoder.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //
 //  This class provides an implementation of the XMLTranscoder interface
@@ -68,6 +68,6 @@
     XMLEBCDICTranscoder& operator=(const XMLEBCDICTranscoder&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/XMLEntityResolver.hpp b/src/xercesc/util/XMLEntityResolver.hpp
index 8651a53..8eb6406 100644
--- a/src/xercesc/util/XMLEntityResolver.hpp
+++ b/src/xercesc/util/XMLEntityResolver.hpp
@@ -26,7 +26,7 @@
 #include <xercesc/util/XMemory.hpp>
 #include <xercesc/util/XMLResourceIdentifier.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class InputSource;
 
@@ -173,6 +173,6 @@
 
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/XMLEnumerator.hpp b/src/xercesc/util/XMLEnumerator.hpp
index 6f53c24..adbbbf4 100644
--- a/src/xercesc/util/XMLEnumerator.hpp
+++ b/src/xercesc/util/XMLEnumerator.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XercesDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 template <class TElem> class XMLEnumerator
 {
@@ -51,6 +51,6 @@
     XMLEnumerator<TElem>& operator=(const XMLEnumerator<TElem>&);    
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/XMLExceptMsgs.hpp b/src/xercesc/util/XMLExceptMsgs.hpp
index e4c7f70..afde8c5 100644
--- a/src/xercesc/util/XMLExceptMsgs.hpp
+++ b/src/xercesc/util/XMLExceptMsgs.hpp
@@ -6,7 +6,7 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/dom/DOMError.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // Ignore warning about private constructor
 #if defined __GNUC__ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 5))
@@ -402,7 +402,7 @@
 #  pragma GCC diagnostic pop
 #endif
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/util/XMLException.cpp b/src/xercesc/util/XMLException.cpp
index a1a01e8..7e73242 100644
--- a/src/xercesc/util/XMLException.cpp
+++ b/src/xercesc/util/XMLException.cpp
@@ -31,7 +31,7 @@
 #include <xercesc/util/XMLInitializer.hpp>
 
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 static XMLMsgLoader* sMsgLoader = 0;
 
@@ -252,4 +252,4 @@
     fMsg = XMLString::replicate(errText, fMemoryManager);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/XMLException.hpp b/src/xercesc/util/XMLException.hpp
index ff90a7a..fd35dcf 100644
--- a/src/xercesc/util/XMLException.hpp
+++ b/src/xercesc/util/XMLException.hpp
@@ -28,7 +28,7 @@
 #include <xercesc/util/XMLUni.hpp>
 #include <xercesc/framework/XMLErrorReporter.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  This is the base class from which all the XML parser exceptions are
@@ -271,6 +271,6 @@
 
 #define ThrowXMLwithMemMgr4(type,code,p1,p2,p3,p4,memMgr) throw type(__FILE__, __LINE__, code, p1, p2, p3, p4, memMgr)
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/XMLFileMgr.hpp b/src/xercesc/util/XMLFileMgr.hpp
index db96d1d..6c29bf2 100644
--- a/src/xercesc/util/XMLFileMgr.hpp
+++ b/src/xercesc/util/XMLFileMgr.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/util/XMemory.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 typedef void* FileHandle;
 #define XERCES_Invalid_File_Handle 0
@@ -57,7 +57,7 @@
         virtual bool		isRelative(const XMLCh* const toCheck, MemoryManager* const manager) = 0;
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/util/XMLFloat.cpp b/src/xercesc/util/XMLFloat.cpp
index ffd7ae0..8e1fb16 100644
--- a/src/xercesc/util/XMLFloat.cpp
+++ b/src/xercesc/util/XMLFloat.cpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/XMLFloat.hpp>
 #include <math.h>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  ctor/dtor
@@ -97,4 +97,4 @@
     XMLAbstractDoubleFloat::serialize(serEng);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/XMLFloat.hpp b/src/xercesc/util/XMLFloat.hpp
index caf12fe..ff0c442 100644
--- a/src/xercesc/util/XMLFloat.hpp
+++ b/src/xercesc/util/XMLFloat.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XMLAbstractDoubleFloat.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLUTIL_EXPORT XMLFloat : public XMLAbstractDoubleFloat
 {
@@ -92,6 +92,6 @@
                                                  , ((XMLAbstractDoubleFloat*)lValue)->getMemoryManager());
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/XMLIBM1047Transcoder.cpp b/src/xercesc/util/XMLIBM1047Transcoder.cpp
index dc5d6dd..3be3169 100644
--- a/src/xercesc/util/XMLIBM1047Transcoder.cpp
+++ b/src/xercesc/util/XMLIBM1047Transcoder.cpp
@@ -21,7 +21,7 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/util/XMLIBM1047Transcoder.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Local const data
@@ -202,4 +202,4 @@
 {
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/XMLIBM1047Transcoder.hpp b/src/xercesc/util/XMLIBM1047Transcoder.hpp
index 25393ee..6d7dda7 100644
--- a/src/xercesc/util/XMLIBM1047Transcoder.hpp
+++ b/src/xercesc/util/XMLIBM1047Transcoder.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/util/XML256TableTranscoder.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //
 //  This class provides an implementation of the XMLTranscoder interface
@@ -67,6 +67,6 @@
     void operator=(const XMLIBM1047Transcoder&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/XMLIBM1140Transcoder.cpp b/src/xercesc/util/XMLIBM1140Transcoder.cpp
index 2fa2283..483614f 100644
--- a/src/xercesc/util/XMLIBM1140Transcoder.cpp
+++ b/src/xercesc/util/XMLIBM1140Transcoder.cpp
@@ -21,7 +21,7 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/util/XMLIBM1140Transcoder.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Local const data
@@ -203,4 +203,4 @@
 {
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/XMLIBM1140Transcoder.hpp b/src/xercesc/util/XMLIBM1140Transcoder.hpp
index 95384db..cbd91ff 100644
--- a/src/xercesc/util/XMLIBM1140Transcoder.hpp
+++ b/src/xercesc/util/XMLIBM1140Transcoder.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/util/XML256TableTranscoder.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //
 //  This class provides an implementation of the XMLTranscoder interface
@@ -66,6 +66,6 @@
     XMLIBM1140Transcoder& operator=(const XMLIBM1140Transcoder&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/XMLInitializer.cpp b/src/xercesc/util/XMLInitializer.cpp
index 247994a..81c9faa 100644
--- a/src/xercesc/util/XMLInitializer.cpp
+++ b/src/xercesc/util/XMLInitializer.cpp
@@ -26,7 +26,7 @@
 #include <xercesc/util/XMLInitializer.hpp>
 #include <xercesc/util/PlatformUtils.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  XMLInitializer: Initialization methods
@@ -127,4 +127,4 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/XMLInitializer.hpp b/src/xercesc/util/XMLInitializer.hpp
index 3dcf85a..03985f9 100644
--- a/src/xercesc/util/XMLInitializer.hpp
+++ b/src/xercesc/util/XMLInitializer.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XercesDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 /**
@@ -159,6 +159,6 @@
 };
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/XMLInteger.hpp b/src/xercesc/util/XMLInteger.hpp
index e2480ed..ebfd40f 100644
--- a/src/xercesc/util/XMLInteger.hpp
+++ b/src/xercesc/util/XMLInteger.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XMemory.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLUTIL_EXPORT XMLInteger : public XMemory
 {
@@ -77,6 +77,6 @@
     return fData;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/XMLMsgLoader.cpp b/src/xercesc/util/XMLMsgLoader.cpp
index 8bfb0a9..2e70874 100644
--- a/src/xercesc/util/XMLMsgLoader.cpp
+++ b/src/xercesc/util/XMLMsgLoader.cpp
@@ -27,7 +27,7 @@
 #include <xercesc/util/XMLString.hpp>
 #include <xercesc/util/XMLUniDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /***
  *   The PlatformUtils::initialize() would set fLocale
@@ -101,4 +101,4 @@
     return fPath;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/XMLMsgLoader.hpp b/src/xercesc/util/XMLMsgLoader.hpp
index 67b9852..16ff0b3 100644
--- a/src/xercesc/util/XMLMsgLoader.hpp
+++ b/src/xercesc/util/XMLMsgLoader.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/XMemory.hpp>
 #include <xercesc/util/PlatformUtils.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //
 //  This header defines an abstract message loading API. This is the API via
@@ -177,6 +177,6 @@
 {
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/XMLMutexMgr.hpp b/src/xercesc/util/XMLMutexMgr.hpp
index aa211af..c963ef5 100644
--- a/src/xercesc/util/XMLMutexMgr.hpp
+++ b/src/xercesc/util/XMLMutexMgr.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XMemory.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 typedef void* XMLMutexHandle;
 
@@ -43,7 +43,7 @@
 		virtual void			unlock(XMLMutexHandle mtx) = 0;
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 
 #endif
diff --git a/src/xercesc/util/XMLNetAccessor.hpp b/src/xercesc/util/XMLNetAccessor.hpp
index 85d7d74..4b25544 100644
--- a/src/xercesc/util/XMLNetAccessor.hpp
+++ b/src/xercesc/util/XMLNetAccessor.hpp
@@ -26,7 +26,7 @@
 #include <xercesc/util/XMLURL.hpp>
 #include <xercesc/util/XMLException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class BinInputStream;
 
@@ -134,6 +134,6 @@
 
 MakeXMLException(NetAccessorException, XMLUTIL_EXPORT)
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/XMLNumber.cpp b/src/xercesc/util/XMLNumber.cpp
index 7d92d7c..5fee397 100644
--- a/src/xercesc/util/XMLNumber.cpp
+++ b/src/xercesc/util/XMLNumber.cpp
@@ -32,7 +32,7 @@
 #include <xercesc/util/XMLDateTime.hpp>
 #include <xercesc/util/XMLBigDecimal.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 XMLNumber::XMLNumber()
 {}
@@ -90,4 +90,4 @@
     return 0;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/XMLNumber.hpp b/src/xercesc/util/XMLNumber.hpp
index 9f131db..0c68d55 100644
--- a/src/xercesc/util/XMLNumber.hpp
+++ b/src/xercesc/util/XMLNumber.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/internal/XSerializable.hpp>
 #include <xercesc/util/XMemory.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLUTIL_EXPORT XMLNumber : public XSerializable, public XMemory
 {
@@ -97,6 +97,6 @@
     XMLNumber& operator=(const XMLNumber&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/XMLResourceIdentifier.hpp b/src/xercesc/util/XMLResourceIdentifier.hpp
index df09961..8b97784 100644
--- a/src/xercesc/util/XMLResourceIdentifier.hpp
+++ b/src/xercesc/util/XMLResourceIdentifier.hpp
@@ -22,7 +22,7 @@
 #if !defined(XERCESC_INCLUDE_GUARD_XMLRESOURCEIDENTIFIER_HPP)
 #define XERCESC_INCLUDE_GUARD_XMLRESOURCEIDENTIFIER_HPP
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class Locator;
 
@@ -209,6 +209,6 @@
 {
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/XMLString.cpp b/src/xercesc/util/XMLString.cpp
index 730a550..b6a61d6 100644
--- a/src/xercesc/util/XMLString.cpp
+++ b/src/xercesc/util/XMLString.cpp
@@ -34,9 +34,9 @@
 #	include <strnicmp.h>
 #endif
 
-#include <string.h>
+#include <cstring>
 #include <ctype.h>
-#include <stdlib.h>
+#include <cstdlib>
 #include <errno.h>
 #include <assert.h>
 
@@ -58,7 +58,7 @@
 #include <xercesc/util/XMLURL.hpp>
 #include <xercesc/internal/XMLReader.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Local static data
@@ -2045,4 +2045,4 @@
     fgMemoryManager = 0;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/XMLString.hpp b/src/xercesc/util/XMLString.hpp
index 0bad6ac..f354927 100644
--- a/src/xercesc/util/XMLString.hpp
+++ b/src/xercesc/util/XMLString.hpp
@@ -25,10 +25,10 @@
 #include <xercesc/util/BaseRefVectorOf.hpp>
 #include <xercesc/framework/XMLBuffer.hpp>
 #include <xercesc/framework/MemoryManager.hpp>
-#include <string.h>
+#include <cstring>
 #include <assert.h>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLLCPTranscoder;
 /**
@@ -1626,6 +1626,6 @@
   return hashVal % hashModulus;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/XMLStringTokenizer.cpp b/src/xercesc/util/XMLStringTokenizer.cpp
index 2847178..4a3b759 100644
--- a/src/xercesc/util/XMLStringTokenizer.cpp
+++ b/src/xercesc/util/XMLStringTokenizer.cpp
@@ -27,7 +27,7 @@
 #include <xercesc/util/XMLUniDefs.hpp>
 #include <xercesc/util/OutOfMemoryException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  XMLStringTokenizer: Local const data
@@ -169,7 +169,7 @@
 	return false;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file XMLStringTokenizer.cpp
diff --git a/src/xercesc/util/XMLStringTokenizer.hpp b/src/xercesc/util/XMLStringTokenizer.hpp
index f948bf6..e994269 100644
--- a/src/xercesc/util/XMLStringTokenizer.hpp
+++ b/src/xercesc/util/XMLStringTokenizer.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/RefArrayVectorOf.hpp>
 #include <xercesc/util/XMLString.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
   * The string tokenizer class breaks a string into tokens.
@@ -208,7 +208,7 @@
     return tokCount;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/util/XMLUCS4Transcoder.cpp b/src/xercesc/util/XMLUCS4Transcoder.cpp
index 075b6c3..b627c74 100644
--- a/src/xercesc/util/XMLUCS4Transcoder.cpp
+++ b/src/xercesc/util/XMLUCS4Transcoder.cpp
@@ -22,9 +22,9 @@
 #include <xercesc/util/BitOps.hpp>
 #include <xercesc/util/XMLUCS4Transcoder.hpp>
 #include <xercesc/util/TranscodingException.hpp>
-#include <string.h>
+#include <cstring>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  XMLUCS4Transcoder: Constructors and Destructor
@@ -237,4 +237,4 @@
     return true;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/XMLUCS4Transcoder.hpp b/src/xercesc/util/XMLUCS4Transcoder.hpp
index 2450f9b..bd1062c 100644
--- a/src/xercesc/util/XMLUCS4Transcoder.hpp
+++ b/src/xercesc/util/XMLUCS4Transcoder.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/util/TransService.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //
 //  This class provides an implementation of the XMLTranscoder interface
@@ -99,6 +99,6 @@
     bool    fSwapped;
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/XMLURL.cpp b/src/xercesc/util/XMLURL.cpp
index 96271ae..21234bc 100644
--- a/src/xercesc/util/XMLURL.cpp
+++ b/src/xercesc/util/XMLURL.cpp
@@ -37,7 +37,7 @@
 #include <xercesc/util/OutOfMemoryException.hpp>
 #include <xercesc/util/XMLChar.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 
@@ -1498,4 +1498,4 @@
     return true;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/XMLURL.hpp b/src/xercesc/util/XMLURL.hpp
index e60c7dc..7417f8a 100644
--- a/src/xercesc/util/XMLURL.hpp
+++ b/src/xercesc/util/XMLURL.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/PlatformUtils.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class BinInputStream;
 
@@ -286,7 +286,7 @@
 
 MakeXMLException(MalformedURLException, XMLUTIL_EXPORT)
 
-XERCES_CPP_NAMESPACE_END
+}
 
 
 #endif
diff --git a/src/xercesc/util/XMLUTF16Transcoder.cpp b/src/xercesc/util/XMLUTF16Transcoder.cpp
index e4e9edd..6d7f4f2 100644
--- a/src/xercesc/util/XMLUTF16Transcoder.cpp
+++ b/src/xercesc/util/XMLUTF16Transcoder.cpp
@@ -22,9 +22,9 @@
 #include <xercesc/util/BitOps.hpp>
 #include <xercesc/util/XMLUTF16Transcoder.hpp>
 #include <xercesc/util/TranscodingException.hpp>
-#include <string.h>
+#include <cstring>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 
@@ -193,5 +193,5 @@
     return true;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
diff --git a/src/xercesc/util/XMLUTF16Transcoder.hpp b/src/xercesc/util/XMLUTF16Transcoder.hpp
index a247828..0686947 100644
--- a/src/xercesc/util/XMLUTF16Transcoder.hpp
+++ b/src/xercesc/util/XMLUTF16Transcoder.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/util/TransService.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 //
@@ -100,6 +100,6 @@
     bool    fSwapped;
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/XMLUTF8Transcoder.cpp b/src/xercesc/util/XMLUTF8Transcoder.cpp
index a477581..c6bd83d 100644
--- a/src/xercesc/util/XMLUTF8Transcoder.cpp
+++ b/src/xercesc/util/XMLUTF8Transcoder.cpp
@@ -27,7 +27,7 @@
 #include <xercesc/util/XMLUniDefs.hpp>
 #include <xercesc/util/XMLUTF8Transcoder.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Local static data
@@ -553,5 +553,5 @@
     return (toCheck <= 0x10FFFF);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
diff --git a/src/xercesc/util/XMLUTF8Transcoder.hpp b/src/xercesc/util/XMLUTF8Transcoder.hpp
index 053b31e..efd0184 100644
--- a/src/xercesc/util/XMLUTF8Transcoder.hpp
+++ b/src/xercesc/util/XMLUTF8Transcoder.hpp
@@ -26,7 +26,7 @@
 #include <xercesc/util/TransService.hpp>
 #include <xercesc/util/UTFDataFormatException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //
 //  This class provides an implementation of the XMLTranscoder interface
@@ -113,6 +113,6 @@
 
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/XMLUni.cpp b/src/xercesc/util/XMLUni.cpp
index 0a0c046..c167238 100644
--- a/src/xercesc/util/XMLUni.cpp
+++ b/src/xercesc/util/XMLUni.cpp
@@ -26,7 +26,7 @@
 #include <xercesc/util/XMLUniDefs.hpp>
 #include <xercesc/util/XMLUni.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  XMLUni: Static data
@@ -1878,4 +1878,4 @@
 
 const XMLSize_t XMLUni::fgBooleanValueSpaceArraySize = sizeof XMLUni::fgBooleanValueSpace / sizeof (XMLUni::fgBooleanValueSpace[0]);
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/XMLUni.hpp b/src/xercesc/util/XMLUni.hpp
index 078efff..252dd0a 100644
--- a/src/xercesc/util/XMLUni.hpp
+++ b/src/xercesc/util/XMLUni.hpp
@@ -33,7 +33,7 @@
 
 #include <xercesc/util/XercesDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // Ignore warning about private constructor
 #if defined __GNUC__ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 5))
@@ -338,6 +338,6 @@
 #  pragma GCC diagnostic pop
 #endif
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/XMLUniDefs.hpp b/src/xercesc/util/XMLUniDefs.hpp
index fc2cece..e736e39 100644
--- a/src/xercesc/util/XMLUniDefs.hpp
+++ b/src/xercesc/util/XMLUniDefs.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XercesDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Constants for the Unicode characters of interest to us in an XML parser
@@ -149,6 +149,6 @@
 const XMLCh chLineSeparator         = 0x2028;
 const XMLCh chParagraphSeparator    = 0x2029;
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/XMLUri.cpp b/src/xercesc/util/XMLUri.cpp
index 4385b81..9774743 100644
--- a/src/xercesc/util/XMLUri.cpp
+++ b/src/xercesc/util/XMLUri.cpp
@@ -28,7 +28,7 @@
 #include <xercesc/util/XMLChar.hpp>
 #include <xercesc/util/OutOfMemoryException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  XMLUri: static data
@@ -2615,4 +2615,4 @@
 {
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/XMLUri.hpp b/src/xercesc/util/XMLUri.hpp
index 94099fd..cc6c76b 100644
--- a/src/xercesc/util/XMLUri.hpp
+++ b/src/xercesc/util/XMLUri.hpp
@@ -28,7 +28,7 @@
 #include <xercesc/internal/XSerializable.hpp>
 #include <xercesc/framework/XMLBuffer.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /*
  * This class is a direct port of Java's URI class, to distinguish
@@ -658,6 +658,6 @@
             XMLString::indexOf(MARK_CHARACTERS, theChar) != -1);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/XMLWin1252Transcoder.cpp b/src/xercesc/util/XMLWin1252Transcoder.cpp
index 64cf870..29d69f3 100644
--- a/src/xercesc/util/XMLWin1252Transcoder.cpp
+++ b/src/xercesc/util/XMLWin1252Transcoder.cpp
@@ -21,7 +21,7 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/util/XMLWin1252Transcoder.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 // ---------------------------------------------------------------------------
@@ -193,5 +193,5 @@
 {
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
diff --git a/src/xercesc/util/XMLWin1252Transcoder.hpp b/src/xercesc/util/XMLWin1252Transcoder.hpp
index aa3913b..7696d88 100644
--- a/src/xercesc/util/XMLWin1252Transcoder.hpp
+++ b/src/xercesc/util/XMLWin1252Transcoder.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/util/XML256TableTranscoder.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 //
@@ -58,6 +58,6 @@
     XMLWin1252Transcoder& operator=(const XMLWin1252Transcoder&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/XMemory.cpp b/src/xercesc/util/XMemory.cpp
index 0609389..28c2084 100644
--- a/src/xercesc/util/XMemory.cpp
+++ b/src/xercesc/util/XMemory.cpp
@@ -28,7 +28,7 @@
 #include <xercesc/framework/MemoryManager.hpp>
 #include <assert.h>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 void* XMemory::operator new(size_t size)
 {
@@ -120,5 +120,5 @@
 
 #endif
 
-XERCES_CPP_NAMESPACE_END
+}
 
diff --git a/src/xercesc/util/XMemory.hpp b/src/xercesc/util/XMemory.hpp
index 869ccce..02b6f4f 100644
--- a/src/xercesc/util/XMemory.hpp
+++ b/src/xercesc/util/XMemory.hpp
@@ -23,9 +23,9 @@
 #define XERCESC_INCLUDE_GUARD_XMEMORY_HPP
 
 #include <xercesc/util/XercesDefs.hpp>
-#include <stdlib.h>
+#include <cstdlib>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class MemoryManager;
 
@@ -139,6 +139,6 @@
 #endif
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/XercesDefs.hpp b/src/xercesc/util/XercesDefs.hpp
index 8071260..8b2bbf5 100644
--- a/src/xercesc/util/XercesDefs.hpp
+++ b/src/xercesc/util/XercesDefs.hpp
@@ -68,25 +68,6 @@
 
 
 // ---------------------------------------------------------------------------
-//  Handle boolean. If the platform can handle booleans itself, then we
-//  map our boolean type to the native type. Otherwise we create a default
-//  one as an int and define const values for true and false.
-//
-//  This flag will be set in the per-development environment stuff above.
-// ---------------------------------------------------------------------------
-#if defined(XERCES_NO_NATIVE_BOOL)
-  #ifndef bool
-    typedef int     bool;
-  #endif
-  #ifndef true
-    #define  true     1
-  #endif
-  #ifndef false
-    #define false 0
-  #endif
-#endif
-
-// ---------------------------------------------------------------------------
 //  According to whether the compiler supports L"" type strings, we define
 //  the XMLStrL() macro one way or another.
 // ---------------------------------------------------------------------------
@@ -98,31 +79,11 @@
 
 
 // ---------------------------------------------------------------------------
-// Define namespace symbols if the compiler supports it.
+// Define versioned namespace
 // ---------------------------------------------------------------------------
-#if defined(XERCES_HAS_CPP_NAMESPACE)
-    #define XERCES_CPP_NAMESPACE_BEGIN namespace XERCES_CPP_NAMESPACE {
-    #define XERCES_CPP_NAMESPACE_END  }
-    #define XERCES_CPP_NAMESPACE_USE using namespace XERCES_CPP_NAMESPACE;
-    #define XERCES_CPP_NAMESPACE_QUALIFIER XERCES_CPP_NAMESPACE::
 
-    namespace XERCES_CPP_NAMESPACE { }
-    namespace xercesc = XERCES_CPP_NAMESPACE;
-#else
-    #define XERCES_CPP_NAMESPACE_BEGIN
-    #define XERCES_CPP_NAMESPACE_END
-    #define XERCES_CPP_NAMESPACE_USE
-    #define XERCES_CPP_NAMESPACE_QUALIFIER
-#endif
-
-#if defined(XERCES_STD_NAMESPACE)
-	#define XERCES_USING_STD(NAME) using std :: NAME;
-	#define XERCES_STD_QUALIFIER  std ::
-#else
-	#define XERCES_USING_STD(NAME)
-	#define XERCES_STD_QUALIFIER 
-#endif
-
+namespace XERCES_CPP_NAMESPACE { }
+namespace xercesc = XERCES_CPP_NAMESPACE;
 
 // ---------------------------------------------------------------------------
 //  Set up the import/export keyword  for our core projects. The
diff --git a/src/xercesc/util/Xerces_autoconf_config.hpp.cmake.in b/src/xercesc/util/Xerces_autoconf_config.hpp.cmake.in
index 0d99e08..d76657f 100644
--- a/src/xercesc/util/Xerces_autoconf_config.hpp.cmake.in
+++ b/src/xercesc/util/Xerces_autoconf_config.hpp.cmake.in
@@ -67,10 +67,6 @@
 #define XERCES_SIZE_T @XERCES_SIZE_T@
 #define XERCES_SSIZE_T @XERCES_SSIZE_T@
 
-#cmakedefine XERCES_HAS_CPP_NAMESPACE 1
-#cmakedefine XERCES_STD_NAMESPACE 1
-#cmakedefine XERCES_NEW_IOSTREAMS 1
-#cmakedefine XERCES_NO_NATIVE_BOOL 1
 #cmakedefine XERCES_LSTRSUPPORT 1
 #cmakedefine XERCES_MFC_SUPPORT 1
 
diff --git a/src/xercesc/util/Xerces_autoconf_config.hpp.in b/src/xercesc/util/Xerces_autoconf_config.hpp.in
index aaf70fb..d361485 100644
--- a/src/xercesc/util/Xerces_autoconf_config.hpp.in
+++ b/src/xercesc/util/Xerces_autoconf_config.hpp.in
@@ -68,10 +68,6 @@
 #undef XERCES_SIZE_T
 #undef XERCES_SSIZE_T
 
-#undef XERCES_HAS_CPP_NAMESPACE
-#undef XERCES_STD_NAMESPACE
-#undef XERCES_NEW_IOSTREAMS
-#undef XERCES_NO_NATIVE_BOOL
 #undef XERCES_LSTRSUPPORT
 
 #undef XERCES_HAVE_CPUID_INTRINSIC
diff --git a/src/xercesc/util/regx/ASCIIRangeFactory.cpp b/src/xercesc/util/regx/ASCIIRangeFactory.cpp
index 2866763..83480da 100644
--- a/src/xercesc/util/regx/ASCIIRangeFactory.cpp
+++ b/src/xercesc/util/regx/ASCIIRangeFactory.cpp
@@ -28,7 +28,7 @@
 #include <xercesc/util/regx/RangeToken.hpp>
 #include <xercesc/util/regx/RangeTokenMap.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  ASCIIRangeFactory: Constructors and Destructor
@@ -153,7 +153,7 @@
     fKeywordsInitialized = true;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file ASCIIRangeFactory.cpp
diff --git a/src/xercesc/util/regx/ASCIIRangeFactory.hpp b/src/xercesc/util/regx/ASCIIRangeFactory.hpp
index 1515ffa..4ba21de 100644
--- a/src/xercesc/util/regx/ASCIIRangeFactory.hpp
+++ b/src/xercesc/util/regx/ASCIIRangeFactory.hpp
@@ -27,7 +27,7 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/util/regx/RangeFactory.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLUTIL_EXPORT ASCIIRangeFactory: public RangeFactory {
 
@@ -57,7 +57,7 @@
     ASCIIRangeFactory& operator=(const ASCIIRangeFactory&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/util/regx/BMPattern.cpp b/src/xercesc/util/regx/BMPattern.cpp
index 4a0a9d8..9c2d17b 100644
--- a/src/xercesc/util/regx/BMPattern.cpp
+++ b/src/xercesc/util/regx/BMPattern.cpp
@@ -28,7 +28,7 @@
 #include <xercesc/framework/MemoryManager.hpp>
 #include <xercesc/util/OutOfMemoryException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  BMPattern: Constructors
@@ -207,7 +207,7 @@
     fMemoryManager->deallocate(fShiftTable);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   *    End of file BMPattern.cpp
diff --git a/src/xercesc/util/regx/BMPattern.hpp b/src/xercesc/util/regx/BMPattern.hpp
index ea1b64a..23ca6b1 100644
--- a/src/xercesc/util/regx/BMPattern.hpp
+++ b/src/xercesc/util/regx/BMPattern.hpp
@@ -28,7 +28,7 @@
 #include <xercesc/util/XMemory.hpp>
 #include <xercesc/util/PlatformUtils.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLUTIL_EXPORT BMPattern : public XMemory
 {
@@ -147,7 +147,7 @@
     MemoryManager* fMemoryManager; 
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/util/regx/BlockRangeFactory.cpp b/src/xercesc/util/regx/BlockRangeFactory.cpp
index 78ab31c..3aab56d 100644
--- a/src/xercesc/util/regx/BlockRangeFactory.cpp
+++ b/src/xercesc/util/regx/BlockRangeFactory.cpp
@@ -29,7 +29,7 @@
 #include <xercesc/util/regx/RangeTokenMap.hpp>
 #include <xercesc/util/XMLString.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Local static data
@@ -362,7 +362,7 @@
     fKeywordsInitialized = true;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file BlockRangeFactory.cpp
diff --git a/src/xercesc/util/regx/BlockRangeFactory.hpp b/src/xercesc/util/regx/BlockRangeFactory.hpp
index d1e0b3c..08da6eb 100644
--- a/src/xercesc/util/regx/BlockRangeFactory.hpp
+++ b/src/xercesc/util/regx/BlockRangeFactory.hpp
@@ -27,7 +27,7 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/util/regx/RangeFactory.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLUTIL_EXPORT BlockRangeFactory: public RangeFactory {
 
@@ -57,7 +57,7 @@
     BlockRangeFactory& operator=(const BlockRangeFactory&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/util/regx/CharToken.cpp b/src/xercesc/util/regx/CharToken.cpp
index 227a38c..4cda4c4 100644
--- a/src/xercesc/util/regx/CharToken.cpp
+++ b/src/xercesc/util/regx/CharToken.cpp
@@ -24,7 +24,7 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/util/regx/CharToken.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Token: Constructors and Destructors
@@ -41,7 +41,7 @@
 
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   *    End of file CharToken.cpp
diff --git a/src/xercesc/util/regx/CharToken.hpp b/src/xercesc/util/regx/CharToken.hpp
index c53471a..bf6b5fa 100644
--- a/src/xercesc/util/regx/CharToken.hpp
+++ b/src/xercesc/util/regx/CharToken.hpp
@@ -27,7 +27,7 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/util/regx/Token.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLUTIL_EXPORT CharToken : public Token {
 public:
@@ -79,7 +79,7 @@
     return ch == fCharData;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/util/regx/ClosureToken.cpp b/src/xercesc/util/regx/ClosureToken.cpp
index 020c558..a4b7a64 100644
--- a/src/xercesc/util/regx/ClosureToken.cpp
+++ b/src/xercesc/util/regx/ClosureToken.cpp
@@ -24,7 +24,7 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/util/regx/ClosureToken.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  ClosureToken: Constructors and Destructors
@@ -43,7 +43,7 @@
 
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   *    End of file ClosureToken.cpp
diff --git a/src/xercesc/util/regx/ClosureToken.hpp b/src/xercesc/util/regx/ClosureToken.hpp
index 7321e3d..7e7e5d1 100644
--- a/src/xercesc/util/regx/ClosureToken.hpp
+++ b/src/xercesc/util/regx/ClosureToken.hpp
@@ -27,7 +27,7 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/util/regx/Token.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLUTIL_EXPORT ClosureToken : public Token {
 public:
@@ -105,7 +105,7 @@
     fMin = minVal;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/util/regx/ConcatToken.cpp b/src/xercesc/util/regx/ConcatToken.cpp
index 108d056..dcbbe59 100644
--- a/src/xercesc/util/regx/ConcatToken.cpp
+++ b/src/xercesc/util/regx/ConcatToken.cpp
@@ -24,7 +24,7 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/util/regx/ConcatToken.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Token: Constructors and Destructors
@@ -42,7 +42,7 @@
 
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   *    End of file ConcatToken.cpp
diff --git a/src/xercesc/util/regx/ConcatToken.hpp b/src/xercesc/util/regx/ConcatToken.hpp
index 84d1203..074f412 100644
--- a/src/xercesc/util/regx/ConcatToken.hpp
+++ b/src/xercesc/util/regx/ConcatToken.hpp
@@ -27,7 +27,7 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/util/regx/Token.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLUTIL_EXPORT ConcatToken : public Token {
 public:
@@ -72,7 +72,7 @@
     return index == 0 ? fChild1 : fChild2;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/util/regx/Match.cpp b/src/xercesc/util/regx/Match.cpp
index 0722182..56367d9 100644
--- a/src/xercesc/util/regx/Match.cpp
+++ b/src/xercesc/util/regx/Match.cpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/regx/Match.hpp>
 #include <xercesc/framework/MemoryManager.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Match: Constructors and Destructors
@@ -113,7 +113,7 @@
     fEndPositions = 0;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file Match.cpp
diff --git a/src/xercesc/util/regx/Match.hpp b/src/xercesc/util/regx/Match.hpp
index 82cbf7d..d61f8d4 100644
--- a/src/xercesc/util/regx/Match.hpp
+++ b/src/xercesc/util/regx/Match.hpp
@@ -29,7 +29,7 @@
 #include <xercesc/util/ArrayIndexOutOfBoundsException.hpp>
 #include <xercesc/util/RuntimeException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
   * An instance of this class has ranges captured in matching
@@ -158,6 +158,6 @@
     fEndPositions[index] = value;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/util/regx/Op.cpp b/src/xercesc/util/regx/Op.cpp
index 89b88d4..99b224f 100644
--- a/src/xercesc/util/regx/Op.cpp
+++ b/src/xercesc/util/regx/Op.cpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/regx/Op.hpp>
 #include <xercesc/util/XMLString.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Op: Constructors and Destructors
@@ -209,7 +209,7 @@
     return fLiteral;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End file Op.cpp
diff --git a/src/xercesc/util/regx/Op.hpp b/src/xercesc/util/regx/Op.hpp
index 426c535..1f5cdbe 100644
--- a/src/xercesc/util/regx/Op.hpp
+++ b/src/xercesc/util/regx/Op.hpp
@@ -28,7 +28,7 @@
 #include <xercesc/util/RefVectorOf.hpp>
 #include <xercesc/util/RuntimeException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Forward Declaration
@@ -297,7 +297,7 @@
     fNextOp = nextOp;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/util/regx/OpFactory.cpp b/src/xercesc/util/regx/OpFactory.cpp
index d6b11cc..d2a35ad 100644
--- a/src/xercesc/util/regx/OpFactory.cpp
+++ b/src/xercesc/util/regx/OpFactory.cpp
@@ -26,7 +26,7 @@
 #include <xercesc/util/regx/OpFactory.hpp>
 #include <xercesc/util/PlatformUtils.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  OpFactory: Constructors and Destructor
@@ -136,7 +136,7 @@
     return tmpOp;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file OpFactory.cpp
diff --git a/src/xercesc/util/regx/OpFactory.hpp b/src/xercesc/util/regx/OpFactory.hpp
index 9b178e0..336de05 100644
--- a/src/xercesc/util/regx/OpFactory.hpp
+++ b/src/xercesc/util/regx/OpFactory.hpp
@@ -28,7 +28,7 @@
 #include <xercesc/util/XMemory.hpp>
 #include <xercesc/util/RefVectorOf.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Forward Declaration
@@ -107,7 +107,7 @@
     fOpVector->removeAllElements();
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/util/regx/ParenToken.cpp b/src/xercesc/util/regx/ParenToken.cpp
index 350e353..8f9fe9b 100644
--- a/src/xercesc/util/regx/ParenToken.cpp
+++ b/src/xercesc/util/regx/ParenToken.cpp
@@ -24,7 +24,7 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/util/regx/ParenToken.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  ParenToken: Constructors and Destructors
@@ -43,7 +43,7 @@
 
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   *    End of file ParenToken.cpp
diff --git a/src/xercesc/util/regx/ParenToken.hpp b/src/xercesc/util/regx/ParenToken.hpp
index 79b8dc4..6c2d2aa 100644
--- a/src/xercesc/util/regx/ParenToken.hpp
+++ b/src/xercesc/util/regx/ParenToken.hpp
@@ -27,7 +27,7 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/util/regx/Token.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLUTIL_EXPORT ParenToken : public Token {
 public:
@@ -78,7 +78,7 @@
     return fChild;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/util/regx/ParserForXMLSchema.cpp b/src/xercesc/util/regx/ParserForXMLSchema.cpp
index f2edd01..3c8cafc 100644
--- a/src/xercesc/util/regx/ParserForXMLSchema.cpp
+++ b/src/xercesc/util/regx/ParserForXMLSchema.cpp
@@ -31,7 +31,7 @@
 #include <xercesc/util/RuntimeException.hpp>
 #include <xercesc/util/PlatformUtils.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  ParserForXMLSchema: Constructors and Destructors
@@ -164,7 +164,7 @@
     return ch;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file ParserForXMLSchema.cpp
diff --git a/src/xercesc/util/regx/ParserForXMLSchema.hpp b/src/xercesc/util/regx/ParserForXMLSchema.hpp
index 4a277f0..0f0e57a 100644
--- a/src/xercesc/util/regx/ParserForXMLSchema.hpp
+++ b/src/xercesc/util/regx/ParserForXMLSchema.hpp
@@ -27,7 +27,7 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/util/regx/RegxParser.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Forward Declaration
@@ -77,7 +77,7 @@
     // -----------------------------------------------------------------------
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/util/regx/RangeFactory.cpp b/src/xercesc/util/regx/RangeFactory.cpp
index f0ad865..cbbbc08 100644
--- a/src/xercesc/util/regx/RangeFactory.cpp
+++ b/src/xercesc/util/regx/RangeFactory.cpp
@@ -24,7 +24,7 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/util/regx/RangeFactory.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  RangeFactory: Constructors and Destructor
@@ -40,7 +40,7 @@
 
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file RangeFactory.cpp
diff --git a/src/xercesc/util/regx/RangeFactory.hpp b/src/xercesc/util/regx/RangeFactory.hpp
index 754017b..b5fc8c1 100644
--- a/src/xercesc/util/regx/RangeFactory.hpp
+++ b/src/xercesc/util/regx/RangeFactory.hpp
@@ -27,7 +27,7 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/util/XMemory.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Forward Declaration
@@ -80,7 +80,7 @@
     RangeFactory& operator=(const RangeFactory&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/util/regx/RangeToken.cpp b/src/xercesc/util/regx/RangeToken.cpp
index d6c3cac..1f940ad 100644
--- a/src/xercesc/util/regx/RangeToken.cpp
+++ b/src/xercesc/util/regx/RangeToken.cpp
@@ -43,7 +43,7 @@
 #endif
 #endif
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Static member data initialization
@@ -869,7 +869,7 @@
     }
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file RangeToken.cpp
diff --git a/src/xercesc/util/regx/RangeToken.hpp b/src/xercesc/util/regx/RangeToken.hpp
index 6a0c0d2..b673f33 100644
--- a/src/xercesc/util/regx/RangeToken.hpp
+++ b/src/xercesc/util/regx/RangeToken.hpp
@@ -28,7 +28,7 @@
 #include <xercesc/util/PlatformUtils.hpp>
 #include <xercesc/util/regx/Token.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Forward Declaration
@@ -136,7 +136,7 @@
     return fElemCount==0; 
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/util/regx/RangeTokenMap.cpp b/src/xercesc/util/regx/RangeTokenMap.cpp
index e207c25..2551055 100644
--- a/src/xercesc/util/regx/RangeTokenMap.cpp
+++ b/src/xercesc/util/regx/RangeTokenMap.cpp
@@ -36,7 +36,7 @@
 #include <xercesc/util/XMLInitializer.hpp>
 #include <xercesc/util/OutOfMemoryException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 RangeTokenMap* RangeTokenMap::fInstance = 0;
 
@@ -282,7 +282,7 @@
     fTokenFactory = 0;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file RangeTokenMap.cpp
diff --git a/src/xercesc/util/regx/RangeTokenMap.hpp b/src/xercesc/util/regx/RangeTokenMap.hpp
index 25376ca..ccf0bb9 100644
--- a/src/xercesc/util/regx/RangeTokenMap.hpp
+++ b/src/xercesc/util/regx/RangeTokenMap.hpp
@@ -28,7 +28,7 @@
 #include <xercesc/util/Mutexes.hpp>
 #include <xercesc/util/RefHashTableOf.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Forward Declaration
@@ -223,7 +223,7 @@
     return fTokenFactory;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/util/regx/RegularExpression.cpp b/src/xercesc/util/regx/RegularExpression.cpp
index 1cc8410..a7bffa6 100644
--- a/src/xercesc/util/regx/RegularExpression.cpp
+++ b/src/xercesc/util/regx/RegularExpression.cpp
@@ -38,7 +38,7 @@
 #include <xercesc/util/XMLUniDefs.hpp>
 #include <xercesc/util/ValueStackOf.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Static member data initialization
@@ -1638,7 +1638,7 @@
     return true;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   *    End of file RegularExpression.cpp
diff --git a/src/xercesc/util/regx/RegularExpression.hpp b/src/xercesc/util/regx/RegularExpression.hpp
index 6133ebd..7f3b520 100644
--- a/src/xercesc/util/regx/RegularExpression.hpp
+++ b/src/xercesc/util/regx/RegularExpression.hpp
@@ -34,7 +34,7 @@
 #include <xercesc/util/regx/OpFactory.hpp>
 #include <xercesc/util/regx/RegxUtil.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Forward Declaration
@@ -763,7 +763,7 @@
       return ret;
   }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 /**
diff --git a/src/xercesc/util/regx/RegxDefs.hpp b/src/xercesc/util/regx/RegxDefs.hpp
index 2b9ba13..aefd3f9 100644
--- a/src/xercesc/util/regx/RegxDefs.hpp
+++ b/src/xercesc/util/regx/RegxDefs.hpp
@@ -28,7 +28,7 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/util/XMLUniDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 static const XMLCh fgXMLCategory[] =
 {
@@ -229,7 +229,7 @@
     chLatin_S, chNull
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/util/regx/RegxParser.cpp b/src/xercesc/util/regx/RegxParser.cpp
index c196ff5..c49b822 100644
--- a/src/xercesc/util/regx/RegxParser.cpp
+++ b/src/xercesc/util/regx/RegxParser.cpp
@@ -31,7 +31,7 @@
 #include <xercesc/util/regx/TokenInc.hpp>
 #include <xercesc/framework/XMLErrorCodes.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  RegxParser::ReferencePostion: Constructors and Destructor
@@ -861,7 +861,7 @@
     return ((off < fStringLen) && fString[off] == chQuestion);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   *    End file RegxParser.cpp
diff --git a/src/xercesc/util/regx/RegxParser.hpp b/src/xercesc/util/regx/RegxParser.hpp
index 43c5efd..598876b 100644
--- a/src/xercesc/util/regx/RegxParser.hpp
+++ b/src/xercesc/util/regx/RegxParser.hpp
@@ -32,7 +32,7 @@
 #include <xercesc/util/XMLUniDefs.hpp>
 #include <xercesc/util/regx/Token.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Forward Declaration
@@ -274,7 +274,7 @@
     return ch - chLatin_a + 10;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/util/regx/RegxUtil.cpp b/src/xercesc/util/regx/RegxUtil.cpp
index 8c623f8..1ae3be6 100644
--- a/src/xercesc/util/regx/RegxUtil.cpp
+++ b/src/xercesc/util/regx/RegxUtil.cpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/regx/RegxUtil.hpp>
 #include <xercesc/util/XMLString.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 XMLCh* RegxUtil::decomposeToSurrogates(XMLInt32 ch,
                                        MemoryManager* const manager) {
@@ -96,7 +96,7 @@
     return buffer;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file RegxUtil.cpp
diff --git a/src/xercesc/util/regx/RegxUtil.hpp b/src/xercesc/util/regx/RegxUtil.hpp
index 1417bad..da5949d 100644
--- a/src/xercesc/util/regx/RegxUtil.hpp
+++ b/src/xercesc/util/regx/RegxUtil.hpp
@@ -28,7 +28,7 @@
 #include <xercesc/util/XMLUniDefs.hpp>
 
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class MemoryManager;
 
@@ -100,7 +100,7 @@
     return false;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/util/regx/StringToken.cpp b/src/xercesc/util/regx/StringToken.cpp
index b44194c..2bc9b02 100644
--- a/src/xercesc/util/regx/StringToken.cpp
+++ b/src/xercesc/util/regx/StringToken.cpp
@@ -24,7 +24,7 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/util/regx/StringToken.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Token: Constructors and Destructors
@@ -47,7 +47,7 @@
     fMemoryManager->deallocate(fString);//delete [] fString;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   *    End of file StringToken.cpp
diff --git a/src/xercesc/util/regx/StringToken.hpp b/src/xercesc/util/regx/StringToken.hpp
index 6f937ec..0676b0e 100644
--- a/src/xercesc/util/regx/StringToken.hpp
+++ b/src/xercesc/util/regx/StringToken.hpp
@@ -28,7 +28,7 @@
 #include <xercesc/util/regx/Token.hpp>
 #include <xercesc/util/XMLString.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLUTIL_EXPORT StringToken : public Token {
 public:
@@ -91,7 +91,7 @@
     fString = XMLString::replicate(literal, fMemoryManager);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/util/regx/Token.cpp b/src/xercesc/util/regx/Token.cpp
index b295aab..236d00d 100644
--- a/src/xercesc/util/regx/Token.cpp
+++ b/src/xercesc/util/regx/Token.cpp
@@ -26,7 +26,7 @@
 #include <xercesc/util/regx/RegularExpression.hpp>
 #include <xercesc/util/regx/RegxUtil.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Static member data initialization
@@ -362,7 +362,7 @@
     return length < tokLength;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   *    End of file Token.cpp
diff --git a/src/xercesc/util/regx/Token.hpp b/src/xercesc/util/regx/Token.hpp
index 8050726..c723e04 100644
--- a/src/xercesc/util/regx/Token.hpp
+++ b/src/xercesc/util/regx/Token.hpp
@@ -28,7 +28,7 @@
 #include <xercesc/util/RuntimeException.hpp>
 #include <xercesc/util/PlatformUtils.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Forward Declaration
@@ -252,7 +252,7 @@
     ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Regex_NotSupported, fMemoryManager);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/util/regx/TokenFactory.cpp b/src/xercesc/util/regx/TokenFactory.cpp
index 2933ac1..c0d2de7 100644
--- a/src/xercesc/util/regx/TokenFactory.cpp
+++ b/src/xercesc/util/regx/TokenFactory.cpp
@@ -31,7 +31,7 @@
 #include <xercesc/util/regx/RangeTokenMap.hpp>
 #include <xercesc/util/regx/RegxDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 // ---------------------------------------------------------------------------
@@ -188,7 +188,7 @@
    #include <unicode/uchar.h>
 #endif
 
-#include <stdio.h>
+#include <cstdio>
 void TokenFactory::printUnicode() {
 
 #if XERCES_USE_TRANSCODER_ICU
@@ -227,7 +227,7 @@
 }
 */
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file TokenFactory.cpp
diff --git a/src/xercesc/util/regx/TokenFactory.hpp b/src/xercesc/util/regx/TokenFactory.hpp
index a605e7f..263c7fc 100644
--- a/src/xercesc/util/regx/TokenFactory.hpp
+++ b/src/xercesc/util/regx/TokenFactory.hpp
@@ -29,7 +29,7 @@
 #include <xercesc/util/regx/Token.hpp>
 #include <xercesc/util/Mutexes.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Forward Declaration
@@ -124,7 +124,7 @@
     return fMemoryManager;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/util/regx/TokenInc.hpp b/src/xercesc/util/regx/TokenInc.hpp
index fa08b43..51c7a21 100644
--- a/src/xercesc/util/regx/TokenInc.hpp
+++ b/src/xercesc/util/regx/TokenInc.hpp
@@ -33,8 +33,8 @@
 #include <xercesc/util/regx/StringToken.hpp>
 #include <xercesc/util/regx/UnionToken.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
-XERCES_CPP_NAMESPACE_END
+namespace XERCES_CPP_NAMESPACE {
+}
 
 #endif
 
diff --git a/src/xercesc/util/regx/UniCharTable.hpp b/src/xercesc/util/regx/UniCharTable.hpp
index a2c9a75..c011d82 100644
--- a/src/xercesc/util/regx/UniCharTable.hpp
+++ b/src/xercesc/util/regx/UniCharTable.hpp
@@ -17,7 +17,7 @@
 
 #include <xercesc/util/XercesDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  These are Unicode character type lookup table. The table is used by the
@@ -4128,4 +4128,4 @@
 };
 
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/util/regx/UnicodeRangeFactory.cpp b/src/xercesc/util/regx/UnicodeRangeFactory.cpp
index 2fd8eb5..40c4ce2 100644
--- a/src/xercesc/util/regx/UnicodeRangeFactory.cpp
+++ b/src/xercesc/util/regx/UnicodeRangeFactory.cpp
@@ -29,7 +29,7 @@
 #include <xercesc/util/regx/RegxDefs.hpp>
 #include <xercesc/util/regx/XMLUniCharacter.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Local data
@@ -271,7 +271,7 @@
     return 0;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file UnicodeRangeFactory.cpp
diff --git a/src/xercesc/util/regx/UnicodeRangeFactory.hpp b/src/xercesc/util/regx/UnicodeRangeFactory.hpp
index 92cc37a..6c59536 100644
--- a/src/xercesc/util/regx/UnicodeRangeFactory.hpp
+++ b/src/xercesc/util/regx/UnicodeRangeFactory.hpp
@@ -28,7 +28,7 @@
 #include <xercesc/util/regx/RangeFactory.hpp>
 #include <xercesc/util/regx/XMLUniCharacter.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLUTIL_EXPORT UnicodeRangeFactory: public RangeFactory {
 
@@ -79,7 +79,7 @@
 
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/util/regx/UnionToken.cpp b/src/xercesc/util/regx/UnionToken.cpp
index a3bb7aa..0a5913f 100644
--- a/src/xercesc/util/regx/UnionToken.cpp
+++ b/src/xercesc/util/regx/UnionToken.cpp
@@ -28,7 +28,7 @@
 #include <xercesc/util/regx/TokenFactory.hpp>
 #include <xercesc/util/regx/StringToken.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Static member data initialization
@@ -142,7 +142,7 @@
     ((StringToken*) previousTok)->setString(stringBuf.getRawBuffer());
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file UnionToken.cpp
diff --git a/src/xercesc/util/regx/UnionToken.hpp b/src/xercesc/util/regx/UnionToken.hpp
index 6a8e73a..35d8b43 100644
--- a/src/xercesc/util/regx/UnionToken.hpp
+++ b/src/xercesc/util/regx/UnionToken.hpp
@@ -28,7 +28,7 @@
 #include <xercesc/util/regx/Token.hpp>
 #include <xercesc/util/RefVectorOf.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLUTIL_EXPORT UnionToken : public Token {
 public:
@@ -82,7 +82,7 @@
     return fChildren->elementAt(index);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/util/regx/XMLRangeFactory.cpp b/src/xercesc/util/regx/XMLRangeFactory.cpp
index f8d050b..deaf3c8 100644
--- a/src/xercesc/util/regx/XMLRangeFactory.cpp
+++ b/src/xercesc/util/regx/XMLRangeFactory.cpp
@@ -30,9 +30,9 @@
 #include <xercesc/util/regx/RangeTokenMap.hpp>
 #include <xercesc/util/regx/UnicodeRangeFactory.hpp>
 #include <xercesc/util/Janitor.hpp>
-#include <string.h>
+#include <cstring>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Local static functions
@@ -247,7 +247,7 @@
     fKeywordsInitialized = true;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file XMLRangeFactory.cpp
diff --git a/src/xercesc/util/regx/XMLRangeFactory.hpp b/src/xercesc/util/regx/XMLRangeFactory.hpp
index 849f163..57921d9 100644
--- a/src/xercesc/util/regx/XMLRangeFactory.hpp
+++ b/src/xercesc/util/regx/XMLRangeFactory.hpp
@@ -27,7 +27,7 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/util/regx/RangeFactory.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLUTIL_EXPORT XMLRangeFactory: public RangeFactory {
 
@@ -57,7 +57,7 @@
     XMLRangeFactory& operator=(const XMLRangeFactory&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/util/regx/XMLUniCharacter.cpp b/src/xercesc/util/regx/XMLUniCharacter.cpp
index 525abd4..2dd18eb 100644
--- a/src/xercesc/util/regx/XMLUniCharacter.cpp
+++ b/src/xercesc/util/regx/XMLUniCharacter.cpp
@@ -35,7 +35,7 @@
    #include <xercesc/util/regx/UniCharTable.hpp>
 #endif
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  XMLUniCharacter: Public static methods
@@ -49,7 +49,7 @@
 #endif
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file XMLUniCharacter.cpp
diff --git a/src/xercesc/util/regx/XMLUniCharacter.hpp b/src/xercesc/util/regx/XMLUniCharacter.hpp
index a2d9713..37ea3ce 100644
--- a/src/xercesc/util/regx/XMLUniCharacter.hpp
+++ b/src/xercesc/util/regx/XMLUniCharacter.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XercesDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /**
   * Class for representing unicode characters
@@ -92,7 +92,7 @@
     //@}
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/DTD/DTDAttDef.cpp b/src/xercesc/validators/DTD/DTDAttDef.cpp
index ce66bdb..f6f99b3 100644
--- a/src/xercesc/validators/DTD/DTDAttDef.cpp
+++ b/src/xercesc/validators/DTD/DTDAttDef.cpp
@@ -26,7 +26,7 @@
 #include <xercesc/framework/XMLElementDecl.hpp>
 #include <xercesc/validators/DTD/DTDAttDef.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  DTDAttDef: Constructors and Destructor
@@ -103,4 +103,4 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/validators/DTD/DTDAttDef.hpp b/src/xercesc/validators/DTD/DTDAttDef.hpp
index 1d6da48..5e3b882 100644
--- a/src/xercesc/validators/DTD/DTDAttDef.hpp
+++ b/src/xercesc/validators/DTD/DTDAttDef.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/framework/XMLAttDef.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //
 //  This class is a derivative of the core XMLAttDef class. This class adds
@@ -136,6 +136,6 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/validators/DTD/DTDAttDefList.cpp b/src/xercesc/validators/DTD/DTDAttDefList.cpp
index c8455d9..1de5c5c 100644
--- a/src/xercesc/validators/DTD/DTDAttDefList.cpp
+++ b/src/xercesc/validators/DTD/DTDAttDefList.cpp
@@ -27,7 +27,7 @@
 #include <xercesc/internal/XTemplateSerializer.hpp>
 #include <xercesc/util/ArrayIndexOutOfBoundsException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  DTDAttDefList: Constructors and Destructor
@@ -185,4 +185,4 @@
 {
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/validators/DTD/DTDAttDefList.hpp b/src/xercesc/validators/DTD/DTDAttDefList.hpp
index e034e21..a4907ff 100644
--- a/src/xercesc/validators/DTD/DTDAttDefList.hpp
+++ b/src/xercesc/validators/DTD/DTDAttDefList.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/RefHashTableOf.hpp>
 #include <xercesc/validators/DTD/DTDElementDecl.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //
 //  This is a derivative of the framework abstract class which defines the
@@ -156,6 +156,6 @@
     fArray[fCount++] = toAdd;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/validators/DTD/DTDElementDecl.cpp b/src/xercesc/validators/DTD/DTDElementDecl.cpp
index 676c56f..a5501fb 100644
--- a/src/xercesc/validators/DTD/DTDElementDecl.cpp
+++ b/src/xercesc/validators/DTD/DTDElementDecl.cpp
@@ -36,7 +36,7 @@
 
 #include <xercesc/internal/XTemplateSerializer.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  DTDElementDecl: Constructors and Destructor
@@ -434,4 +434,4 @@
     return DTD;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/validators/DTD/DTDElementDecl.hpp b/src/xercesc/validators/DTD/DTDElementDecl.hpp
index 777950a..fbd7a13 100644
--- a/src/xercesc/validators/DTD/DTDElementDecl.hpp
+++ b/src/xercesc/validators/DTD/DTDElementDecl.hpp
@@ -28,7 +28,7 @@
 #include <xercesc/framework/XMLContentModel.hpp>
 #include <xercesc/validators/DTD/DTDAttDef.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class ContentSpecNode;
 class DTDAttDefList;
@@ -242,6 +242,6 @@
     fModelType = toSet;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/validators/DTD/DTDEntityDecl.cpp b/src/xercesc/validators/DTD/DTDEntityDecl.cpp
index 82c977b..fe17208 100644
--- a/src/xercesc/validators/DTD/DTDEntityDecl.cpp
+++ b/src/xercesc/validators/DTD/DTDEntityDecl.cpp
@@ -25,7 +25,7 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/validators/DTD/DTDEntityDecl.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /***
  * Support for Serialization/De-serialization
@@ -51,4 +51,4 @@
     }
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/validators/DTD/DTDEntityDecl.hpp b/src/xercesc/validators/DTD/DTDEntityDecl.hpp
index 26e4df7..6e6483b 100644
--- a/src/xercesc/validators/DTD/DTDEntityDecl.hpp
+++ b/src/xercesc/validators/DTD/DTDEntityDecl.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/framework/XMLEntityDecl.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //
 //  This is a derivative of the abstract version of an entity decl in the
@@ -199,6 +199,6 @@
     fIsSpecialChar = newValue;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/validators/DTD/DTDGrammar.cpp b/src/xercesc/validators/DTD/DTDGrammar.cpp
index c687a6a..326c252 100644
--- a/src/xercesc/validators/DTD/DTDGrammar.cpp
+++ b/src/xercesc/validators/DTD/DTDGrammar.cpp
@@ -31,7 +31,7 @@
 
 #include <xercesc/internal/XTemplateSerializer.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  DTDGrammar: Static member data
@@ -260,4 +260,4 @@
 
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/validators/DTD/DTDGrammar.hpp b/src/xercesc/validators/DTD/DTDGrammar.hpp
index 391613e..88ad0cd 100644
--- a/src/xercesc/validators/DTD/DTDGrammar.hpp
+++ b/src/xercesc/validators/DTD/DTDGrammar.hpp
@@ -31,7 +31,7 @@
 #include <xercesc/framework/XMLDTDDescription.hpp>
 
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //
 // This class stores the DTD information
@@ -386,6 +386,6 @@
     fValidated = newState;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/validators/DTD/DTDScanner.cpp b/src/xercesc/validators/DTD/DTDScanner.cpp
index a70d6b3..775e503 100644
--- a/src/xercesc/validators/DTD/DTDScanner.cpp
+++ b/src/xercesc/validators/DTD/DTDScanner.cpp
@@ -42,7 +42,7 @@
 #include <xercesc/validators/DTD/DocTypeHandler.hpp>
 #include <xercesc/validators/DTD/DTDScanner.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 #define CONTENTSPEC_DEPTH_LIMIT 1000
 
@@ -3899,4 +3899,4 @@
     }
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/validators/DTD/DTDScanner.hpp b/src/xercesc/validators/DTD/DTDScanner.hpp
index 3c7ae13..768b977 100644
--- a/src/xercesc/validators/DTD/DTDScanner.hpp
+++ b/src/xercesc/validators/DTD/DTDScanner.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/validators/DTD/DTDGrammar.hpp>
 #include <xercesc/validators/DTD/DTDEntityDecl.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLScanner;
 
@@ -273,6 +273,6 @@
     return (fDocTypeReaderId != fReaderMgr->getCurrentReaderNum());
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/validators/DTD/DTDValidator.cpp b/src/xercesc/validators/DTD/DTDValidator.cpp
index 59b5c91..ef07f56 100644
--- a/src/xercesc/validators/DTD/DTDValidator.cpp
+++ b/src/xercesc/validators/DTD/DTDValidator.cpp
@@ -30,7 +30,7 @@
 #include <xercesc/internal/XMLScanner.hpp>
 #include <xercesc/validators/DTD/DTDValidator.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  DTDValidator: Constructors and Destructor
@@ -663,4 +663,4 @@
     }
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/validators/DTD/DTDValidator.hpp b/src/xercesc/validators/DTD/DTDValidator.hpp
index 1701a7d..420f887 100644
--- a/src/xercesc/validators/DTD/DTDValidator.hpp
+++ b/src/xercesc/validators/DTD/DTDValidator.hpp
@@ -26,7 +26,7 @@
 #include <xercesc/framework/XMLValidator.hpp>
 #include <xercesc/validators/DTD/DTDGrammar.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLMsgLoader;
 
@@ -153,6 +153,6 @@
     return false;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/validators/DTD/DocTypeHandler.hpp b/src/xercesc/validators/DTD/DocTypeHandler.hpp
index d1fae82..424c7e9 100644
--- a/src/xercesc/validators/DTD/DocTypeHandler.hpp
+++ b/src/xercesc/validators/DTD/DocTypeHandler.hpp
@@ -28,7 +28,7 @@
 #include <xercesc/validators/DTD/DTDElementDecl.hpp>
 #include <xercesc/validators/DTD/DTDEntityDecl.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //
 //  This abstract class defines the document type handler API's which can be
@@ -140,6 +140,6 @@
     DocTypeHandler& operator=(const DocTypeHandler&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/validators/DTD/XMLDTDDescriptionImpl.cpp b/src/xercesc/validators/DTD/XMLDTDDescriptionImpl.cpp
index 257493c..7c1726d 100644
--- a/src/xercesc/validators/DTD/XMLDTDDescriptionImpl.cpp
+++ b/src/xercesc/validators/DTD/XMLDTDDescriptionImpl.cpp
@@ -25,7 +25,7 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/validators/DTD/XMLDTDDescriptionImpl.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  XMLDTDDescriptionImpl: constructor and destructor
@@ -130,4 +130,4 @@
 {
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/validators/DTD/XMLDTDDescriptionImpl.hpp b/src/xercesc/validators/DTD/XMLDTDDescriptionImpl.hpp
index 0b3e42f..6013603 100644
--- a/src/xercesc/validators/DTD/XMLDTDDescriptionImpl.hpp
+++ b/src/xercesc/validators/DTD/XMLDTDDescriptionImpl.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/framework/XMLDTDDescription.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLPARSER_EXPORT XMLDTDDescriptionImpl : public XMLDTDDescription
 {
@@ -103,6 +103,6 @@
 };
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/validators/common/AllContentModel.cpp b/src/xercesc/validators/common/AllContentModel.cpp
index 7b680bc..eeda4cb 100644
--- a/src/xercesc/validators/common/AllContentModel.cpp
+++ b/src/xercesc/validators/common/AllContentModel.cpp
@@ -32,7 +32,7 @@
 #include <xercesc/validators/schema/SubstitutionGroupComparator.hpp>
 #include <xercesc/validators/schema/XercesElementWildcard.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  AllContentModel: Constructors and Destructor
@@ -375,4 +375,4 @@
         ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::CM_UnknownCMSpecType, fMemoryManager);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/validators/common/AllContentModel.hpp b/src/xercesc/validators/common/AllContentModel.hpp
index 5c9ef89..421a8b7 100644
--- a/src/xercesc/validators/common/AllContentModel.hpp
+++ b/src/xercesc/validators/common/AllContentModel.hpp
@@ -26,7 +26,7 @@
 #include <xercesc/util/ValueVectorOf.hpp>
 #include <xercesc/validators/common/ContentLeafNameTypeVector.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class ContentSpecNode;
 
@@ -172,6 +172,6 @@
     return true;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/validators/common/CMAny.cpp b/src/xercesc/validators/common/CMAny.cpp
index 6da3b45..ba8765d 100644
--- a/src/xercesc/validators/common/CMAny.cpp
+++ b/src/xercesc/validators/common/CMAny.cpp
@@ -27,7 +27,7 @@
 #include <xercesc/validators/common/CMStateSet.hpp>
 #include <xercesc/validators/common/CMAny.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  CMUnaryOp: Constructors and Destructor
@@ -107,4 +107,4 @@
         toSet.setBit(fPosition);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/validators/common/CMAny.hpp b/src/xercesc/validators/common/CMAny.hpp
index 6792de9..efe1769 100644
--- a/src/xercesc/validators/common/CMAny.hpp
+++ b/src/xercesc/validators/common/CMAny.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/validators/common/CMNode.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class CMStateSet;
 
@@ -94,6 +94,6 @@
     CMAny& operator=(const CMAny&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/validators/common/CMBinaryOp.cpp b/src/xercesc/validators/common/CMBinaryOp.cpp
index c02a3f8..08d90d7 100644
--- a/src/xercesc/validators/common/CMBinaryOp.cpp
+++ b/src/xercesc/validators/common/CMBinaryOp.cpp
@@ -29,7 +29,7 @@
 #include <xercesc/validators/common/CMBinaryOp.hpp>
 #include <xercesc/validators/common/CMStateSet.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  CMBinaryOp: Constructors
@@ -147,4 +147,4 @@
     }
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/validators/common/CMBinaryOp.hpp b/src/xercesc/validators/common/CMBinaryOp.hpp
index 60a8cb9..fda4f53 100644
--- a/src/xercesc/validators/common/CMBinaryOp.hpp
+++ b/src/xercesc/validators/common/CMBinaryOp.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/validators/common/CMNode.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class CMStateSet;
 
@@ -87,6 +87,6 @@
     CMBinaryOp& operator=(const CMBinaryOp&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/validators/common/CMLeaf.hpp b/src/xercesc/validators/common/CMLeaf.hpp
index 0863f5e..7e11a2a 100644
--- a/src/xercesc/validators/common/CMLeaf.hpp
+++ b/src/xercesc/validators/common/CMLeaf.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/validators/common/CMNode.hpp>
 
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //
 //  This class represents a leaf in the content spec node tree of an
@@ -248,6 +248,6 @@
     toSet.setBit(fPosition);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/validators/common/CMNode.hpp b/src/xercesc/validators/common/CMNode.hpp
index 8641671..f775569 100644
--- a/src/xercesc/validators/common/CMNode.hpp
+++ b/src/xercesc/validators/common/CMNode.hpp
@@ -27,7 +27,7 @@
 #include <xercesc/validators/common/ContentSpecNode.hpp>
 #include <xercesc/validators/common/CMStateSet.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class CMNode : public XMemory
 {
@@ -188,6 +188,6 @@
     return fIsNullable;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/validators/common/CMRepeatingLeaf.hpp b/src/xercesc/validators/common/CMRepeatingLeaf.hpp
index 3f6d0c1..43dbbdd 100644
--- a/src/xercesc/validators/common/CMRepeatingLeaf.hpp
+++ b/src/xercesc/validators/common/CMRepeatingLeaf.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/validators/common/CMLeaf.hpp>
 
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //
 //  A compound content model leaf node which carries occurence information.
@@ -131,6 +131,6 @@
     return true;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/validators/common/CMStateSet.hpp b/src/xercesc/validators/common/CMStateSet.hpp
index 6bb2758..6e4a393 100644
--- a/src/xercesc/validators/common/CMStateSet.hpp
+++ b/src/xercesc/validators/common/CMStateSet.hpp
@@ -35,13 +35,13 @@
 #include <xercesc/util/RuntimeException.hpp>
 #include <xercesc/util/PlatformUtils.hpp>
 #include <xercesc/framework/MemoryManager.hpp>
-#include <string.h>
+#include <cstring>
 
 #if XERCES_HAVE_EMMINTRIN_H
 #   include <emmintrin.h>
 #endif
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class CMStateSetEnumerator;
 
@@ -622,6 +622,6 @@
     XMLInt32            fLastValue;
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/validators/common/CMUnaryOp.cpp b/src/xercesc/validators/common/CMUnaryOp.cpp
index 1d82579..631f0de 100644
--- a/src/xercesc/validators/common/CMUnaryOp.cpp
+++ b/src/xercesc/validators/common/CMUnaryOp.cpp
@@ -27,7 +27,7 @@
 #include <xercesc/validators/common/CMStateSet.hpp>
 #include <xercesc/validators/common/CMUnaryOp.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  CMUnaryOp: Constructors and Destructor
@@ -96,4 +96,4 @@
     toSet = fChild->getLastPos();
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/validators/common/CMUnaryOp.hpp b/src/xercesc/validators/common/CMUnaryOp.hpp
index bf39eb8..f341fd1 100644
--- a/src/xercesc/validators/common/CMUnaryOp.hpp
+++ b/src/xercesc/validators/common/CMUnaryOp.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/validators/common/CMNode.hpp>
 
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class CMStateSet;
 
@@ -83,6 +83,6 @@
     CMUnaryOp& operator=(const CMUnaryOp&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/validators/common/ContentLeafNameTypeVector.cpp b/src/xercesc/validators/common/ContentLeafNameTypeVector.cpp
index f971103..b5a03f2 100644
--- a/src/xercesc/validators/common/ContentLeafNameTypeVector.cpp
+++ b/src/xercesc/validators/common/ContentLeafNameTypeVector.cpp
@@ -25,7 +25,7 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/validators/common/ContentLeafNameTypeVector.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  ContentLeafNameTypeVector: Constructors and Destructor
@@ -129,4 +129,4 @@
 	return fLeafCount;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/validators/common/ContentLeafNameTypeVector.hpp b/src/xercesc/validators/common/ContentLeafNameTypeVector.hpp
index 4534e0a..948a06e 100644
--- a/src/xercesc/validators/common/ContentLeafNameTypeVector.hpp
+++ b/src/xercesc/validators/common/ContentLeafNameTypeVector.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/validators/common/ContentSpecNode.hpp>
 #include <xercesc/framework/MemoryManager.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLPARSER_EXPORT ContentLeafNameTypeVector : public XMemory
 {
@@ -114,6 +114,6 @@
     fLeafCount = size;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/validators/common/ContentSpecNode.cpp b/src/xercesc/validators/common/ContentSpecNode.cpp
index 7f2627b..9fc0233 100644
--- a/src/xercesc/validators/common/ContentSpecNode.cpp
+++ b/src/xercesc/validators/common/ContentSpecNode.cpp
@@ -28,7 +28,7 @@
 #include <xercesc/validators/schema/SchemaSymbols.hpp>
 #include <xercesc/util/ValueStackOf.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  ContentSpecNode: Copy Constructor
@@ -390,5 +390,5 @@
 
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
diff --git a/src/xercesc/validators/common/ContentSpecNode.hpp b/src/xercesc/validators/common/ContentSpecNode.hpp
index 24604c6..1b174e3 100644
--- a/src/xercesc/validators/common/ContentSpecNode.hpp
+++ b/src/xercesc/validators/common/ContentSpecNode.hpp
@@ -27,7 +27,7 @@
 
 #include <xercesc/internal/XSerializable.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLBuffer;
 class Grammar;
@@ -452,6 +452,6 @@
     return (fType == ContentSpecNode::All);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/validators/common/DFAContentModel.cpp b/src/xercesc/validators/common/DFAContentModel.cpp
index 589efea..615eba9 100644
--- a/src/xercesc/validators/common/DFAContentModel.cpp
+++ b/src/xercesc/validators/common/DFAContentModel.cpp
@@ -42,7 +42,7 @@
 #include <xercesc/util/XMLInteger.hpp>
 #include <math.h>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 struct CMStateSetHasher
 {
@@ -1682,4 +1682,4 @@
     fMemoryManager->deallocate(conflictTable);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/validators/common/DFAContentModel.hpp b/src/xercesc/validators/common/DFAContentModel.hpp
index f0836e1..d0439d1 100644
--- a/src/xercesc/validators/common/DFAContentModel.hpp
+++ b/src/xercesc/validators/common/DFAContentModel.hpp
@@ -27,7 +27,7 @@
 #include <xercesc/framework/XMLContentModel.hpp>
 #include <xercesc/validators/common/ContentLeafNameTypeVector.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class ContentSpecNode;
 class CMLeaf;
@@ -268,7 +268,7 @@
     elemIndex = eltIndex;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/common/Grammar.cpp b/src/xercesc/validators/common/Grammar.cpp
index a100235..aead66a 100644
--- a/src/xercesc/validators/common/Grammar.cpp
+++ b/src/xercesc/validators/common/Grammar.cpp
@@ -29,7 +29,7 @@
 #include <xercesc/validators/schema/SchemaGrammar.hpp>
 #include <xercesc/framework/psvi/XSAnnotation.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /***
  * Support for Serialization/De-serialization
@@ -81,4 +81,4 @@
 
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/validators/common/Grammar.hpp b/src/xercesc/validators/common/Grammar.hpp
index 159c7f4..dbe0d1e 100644
--- a/src/xercesc/validators/common/Grammar.hpp
+++ b/src/xercesc/validators/common/Grammar.hpp
@@ -30,7 +30,7 @@
 
 #include <xercesc/internal/XSerializable.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLGrammarDescription;
 
@@ -199,6 +199,6 @@
     Grammar& operator=(const Grammar&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/validators/common/GrammarResolver.cpp b/src/xercesc/validators/common/GrammarResolver.cpp
index 94ec102..d72ef8c 100644
--- a/src/xercesc/validators/common/GrammarResolver.cpp
+++ b/src/xercesc/validators/common/GrammarResolver.cpp
@@ -27,7 +27,7 @@
 #include <xercesc/framework/XMLGrammarPoolImpl.hpp>
 #include <xercesc/framework/psvi/XSAnnotation.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  GrammarResolver: Constructor and Destructor
@@ -442,4 +442,4 @@
     return fXSModel; 
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/validators/common/GrammarResolver.hpp b/src/xercesc/validators/common/GrammarResolver.hpp
index eb4b358..73bd964 100644
--- a/src/xercesc/validators/common/GrammarResolver.hpp
+++ b/src/xercesc/validators/common/GrammarResolver.hpp
@@ -27,7 +27,7 @@
 #include <xercesc/util/StringPool.hpp>
 #include <xercesc/validators/common/Grammar.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class DatatypeValidator;
 class DatatypeValidatorFactory;
@@ -266,6 +266,6 @@
     return fDataTypeReg;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/validators/common/MixedContentModel.cpp b/src/xercesc/validators/common/MixedContentModel.cpp
index d32114d..453ad6b 100644
--- a/src/xercesc/validators/common/MixedContentModel.cpp
+++ b/src/xercesc/validators/common/MixedContentModel.cpp
@@ -23,7 +23,7 @@
 // ---------------------------------------------------------------------------
 //  Includes
 // ---------------------------------------------------------------------------
-#include <string.h>
+#include <cstring>
 #include <xercesc/util/RuntimeException.hpp>
 #include <xercesc/framework/XMLElementDecl.hpp>
 #include <xercesc/validators/common/ContentSpecNode.hpp>
@@ -32,7 +32,7 @@
 #include <xercesc/validators/common/Grammar.hpp>
 #include <xercesc/validators/schema/SubstitutionGroupComparator.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  MixedContentModel: Constructors and Destructor
@@ -426,4 +426,4 @@
     }
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/validators/common/MixedContentModel.hpp b/src/xercesc/validators/common/MixedContentModel.hpp
index 5b4d1f2..e22e516 100644
--- a/src/xercesc/validators/common/MixedContentModel.hpp
+++ b/src/xercesc/validators/common/MixedContentModel.hpp
@@ -26,7 +26,7 @@
 #include <xercesc/framework/XMLContentModel.hpp>
 #include <xercesc/validators/common/ContentLeafNameTypeVector.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class ContentSpecNode;
 
@@ -207,6 +207,6 @@
     // UPA checking is not necessary
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/validators/common/SimpleContentModel.cpp b/src/xercesc/validators/common/SimpleContentModel.cpp
index 61d6b63..889356e 100644
--- a/src/xercesc/validators/common/SimpleContentModel.cpp
+++ b/src/xercesc/validators/common/SimpleContentModel.cpp
@@ -29,7 +29,7 @@
 #include <xercesc/validators/schema/SubstitutionGroupComparator.hpp>
 #include <xercesc/validators/schema/XercesElementWildcard.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  SimpleContentModel: Implementation of the ContentModel virtual interface
@@ -530,5 +530,5 @@
     }
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
diff --git a/src/xercesc/validators/common/SimpleContentModel.hpp b/src/xercesc/validators/common/SimpleContentModel.hpp
index 4555a73..5c1037c 100644
--- a/src/xercesc/validators/common/SimpleContentModel.hpp
+++ b/src/xercesc/validators/common/SimpleContentModel.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/framework/XMLContentModel.hpp>
 #include <xercesc/validators/common/ContentSpecNode.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //
 //  SimpleContentModel is a derivative of the abstract content model base
@@ -207,6 +207,6 @@
     return true;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/validators/datatype/AbstractNumericFacetValidator.cpp b/src/xercesc/validators/datatype/AbstractNumericFacetValidator.cpp
index 6253f0b..6367e26 100644
--- a/src/xercesc/validators/datatype/AbstractNumericFacetValidator.cpp
+++ b/src/xercesc/validators/datatype/AbstractNumericFacetValidator.cpp
@@ -35,7 +35,7 @@
 #include <xercesc/util/XMLDateTime.hpp>
 #include <xercesc/internal/XTemplateSerializer.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 const int AbstractNumericFacetValidator::INDETERMINATE = 2;
 
@@ -965,7 +965,7 @@
 
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file AbstractNumericFacetValidator::cpp
diff --git a/src/xercesc/validators/datatype/AbstractNumericFacetValidator.hpp b/src/xercesc/validators/datatype/AbstractNumericFacetValidator.hpp
index 8f1b32e..9a00f6a 100644
--- a/src/xercesc/validators/datatype/AbstractNumericFacetValidator.hpp
+++ b/src/xercesc/validators/datatype/AbstractNumericFacetValidator.hpp
@@ -26,7 +26,7 @@
 #include <xercesc/util/RefArrayVectorOf.hpp>
 #include <xercesc/util/XMLNumber.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class VALIDATORS_EXPORT AbstractNumericFacetValidator : public DatatypeValidator
 {
@@ -192,7 +192,7 @@
     return fEnumeration;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/datatype/AbstractNumericValidator.cpp b/src/xercesc/validators/datatype/AbstractNumericValidator.cpp
index 78a630b..b9a0418 100644
--- a/src/xercesc/validators/datatype/AbstractNumericValidator.cpp
+++ b/src/xercesc/validators/datatype/AbstractNumericValidator.cpp
@@ -26,7 +26,7 @@
 #include <xercesc/validators/datatype/InvalidDatatypeValueException.hpp>
 #include <xercesc/util/XMLAbstractDoubleFloat.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 #define  REPORT_VALUE_ERROR(val1, val2, except_code, manager)    \
   ThrowXMLwithMemMgr2(InvalidDatatypeValueException               \
@@ -173,7 +173,7 @@
      ***/
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file AbstractNumericValidator::cpp
diff --git a/src/xercesc/validators/datatype/AbstractNumericValidator.hpp b/src/xercesc/validators/datatype/AbstractNumericValidator.hpp
index 568aa61..f2ca47b 100644
--- a/src/xercesc/validators/datatype/AbstractNumericValidator.hpp
+++ b/src/xercesc/validators/datatype/AbstractNumericValidator.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/validators/datatype/AbstractNumericFacetValidator.hpp>
 #include <xercesc/util/RefVectorOf.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class VALIDATORS_EXPORT AbstractNumericValidator : public AbstractNumericFacetValidator
 {
@@ -100,7 +100,7 @@
     AbstractNumericFacetValidator::init(enums, manager);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/datatype/AbstractStringValidator.cpp b/src/xercesc/validators/datatype/AbstractStringValidator.cpp
index 465e610..1f062ec 100644
--- a/src/xercesc/validators/datatype/AbstractStringValidator.cpp
+++ b/src/xercesc/validators/datatype/AbstractStringValidator.cpp
@@ -29,7 +29,7 @@
 
 #include <xercesc/internal/XTemplateSerializer.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 static const int BUF_LEN = 64;
 
@@ -763,7 +763,7 @@
 
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file AbstractStringValidator.cpp
diff --git a/src/xercesc/validators/datatype/AbstractStringValidator.hpp b/src/xercesc/validators/datatype/AbstractStringValidator.hpp
index ff2b9d4..428ead9 100644
--- a/src/xercesc/validators/datatype/AbstractStringValidator.hpp
+++ b/src/xercesc/validators/datatype/AbstractStringValidator.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/validators/datatype/DatatypeValidator.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class VALIDATORS_EXPORT AbstractStringValidator : public DatatypeValidator
 {
@@ -241,7 +241,7 @@
     }
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.cpp b/src/xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.cpp
index 3c43a4b..2398350 100644
--- a/src/xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.cpp
@@ -26,7 +26,7 @@
 #include <xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.hpp>
 #include <xercesc/util/RuntimeException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  AnySimpleTypeDatatypeValidator: Constructors and Destructor
@@ -90,7 +90,7 @@
     DatatypeValidator::serialize(serEng);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file AnySimpleTypeDatatypeValidator.cpp
diff --git a/src/xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.hpp b/src/xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.hpp
index b30b4c6..7fda5f3 100644
--- a/src/xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/validators/datatype/DatatypeValidator.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class VALIDATORS_EXPORT AnySimpleTypeDatatypeValidator : public DatatypeValidator
 {
@@ -170,7 +170,7 @@
     return;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/datatype/AnyURIDatatypeValidator.cpp b/src/xercesc/validators/datatype/AnyURIDatatypeValidator.cpp
index 7f11626..d4083b7 100644
--- a/src/xercesc/validators/datatype/AnyURIDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/AnyURIDatatypeValidator.cpp
@@ -22,7 +22,7 @@
 // ---------------------------------------------------------------------------
 //  Includes
 // ---------------------------------------------------------------------------
-#include <stdio.h>
+#include <cstdio>
 #include <xercesc/util/OutOfMemoryException.hpp>
 #include <xercesc/util/XMLUTF8Transcoder.hpp>
 #include <xercesc/framework/XMLBuffer.hpp>
@@ -30,7 +30,7 @@
 #include <xercesc/validators/datatype/InvalidDatatypeFacetException.hpp>
 #include <xercesc/validators/datatype/InvalidDatatypeValueException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Constructors and Destructor
@@ -192,7 +192,7 @@
     AbstractStringValidator::serialize(serEng);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file AnyURIDatatypeValidator.cpp
diff --git a/src/xercesc/validators/datatype/AnyURIDatatypeValidator.hpp b/src/xercesc/validators/datatype/AnyURIDatatypeValidator.hpp
index 2b0b4b8..1c5ff1e 100644
--- a/src/xercesc/validators/datatype/AnyURIDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/AnyURIDatatypeValidator.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/validators/datatype/AbstractStringValidator.hpp>
 #include <xercesc/util/XMLUri.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLBuffer;
 
@@ -86,7 +86,7 @@
     void encode(const XMLCh* const content, const XMLSize_t len, XMLBuffer& encoded, MemoryManager* const manager);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/datatype/Base64BinaryDatatypeValidator.cpp b/src/xercesc/validators/datatype/Base64BinaryDatatypeValidator.cpp
index 7763eaf..2c96f3b 100644
--- a/src/xercesc/validators/datatype/Base64BinaryDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/Base64BinaryDatatypeValidator.cpp
@@ -27,7 +27,7 @@
 #include <xercesc/validators/datatype/InvalidDatatypeValueException.hpp>
 #include <xercesc/util/Base64.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Constructors and Destructor
@@ -117,7 +117,7 @@
     AbstractStringValidator::serialize(serEng);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file Base64BinaryDatatypeValidator.cpp
diff --git a/src/xercesc/validators/datatype/Base64BinaryDatatypeValidator.hpp b/src/xercesc/validators/datatype/Base64BinaryDatatypeValidator.hpp
index 595084b..dd024c7 100644
--- a/src/xercesc/validators/datatype/Base64BinaryDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/Base64BinaryDatatypeValidator.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/validators/datatype/AbstractStringValidator.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class VALIDATORS_EXPORT Base64BinaryDatatypeValidator : public AbstractStringValidator
 {
@@ -91,7 +91,7 @@
 
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/datatype/BooleanDatatypeValidator.cpp b/src/xercesc/validators/datatype/BooleanDatatypeValidator.cpp
index da77d85..daa6ae7 100644
--- a/src/xercesc/validators/datatype/BooleanDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/BooleanDatatypeValidator.cpp
@@ -27,7 +27,7 @@
 #include <xercesc/validators/datatype/InvalidDatatypeFacetException.hpp>
 #include <xercesc/validators/datatype/InvalidDatatypeValueException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Constructors and Destructor
@@ -204,7 +204,7 @@
     DatatypeValidator::serialize(serEng);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file BooleanDatatypeValidator.cpp
diff --git a/src/xercesc/validators/datatype/BooleanDatatypeValidator.hpp b/src/xercesc/validators/datatype/BooleanDatatypeValidator.hpp
index a20263b..5863d34 100644
--- a/src/xercesc/validators/datatype/BooleanDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/BooleanDatatypeValidator.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/validators/datatype/DatatypeValidator.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class VALIDATORS_EXPORT BooleanDatatypeValidator : public DatatypeValidator
 {
@@ -183,7 +183,7 @@
     checkContent(content, context, false, manager);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/datatype/DatatypeValidator.cpp b/src/xercesc/validators/datatype/DatatypeValidator.cpp
index 8e51edd..4c0d1a0 100644
--- a/src/xercesc/validators/datatype/DatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/DatatypeValidator.cpp
@@ -60,7 +60,7 @@
 
 #include <xercesc/internal/XTemplateSerializer.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 static const int DV_BUILTIN = -1;
 static const int DV_NORMAL  = -2;
@@ -538,7 +538,7 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file DatatypeValidator.cpp
diff --git a/src/xercesc/validators/datatype/DatatypeValidator.hpp b/src/xercesc/validators/datatype/DatatypeValidator.hpp
index 1853922..868e623 100644
--- a/src/xercesc/validators/datatype/DatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/DatatypeValidator.hpp
@@ -32,7 +32,7 @@
 #include <xercesc/framework/psvi/XSSimpleTypeDefinition.hpp>
 #include <xercesc/framework/ValidationContext.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class MemoryManager;
 
@@ -740,7 +740,7 @@
     return false;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/datatype/DatatypeValidatorFactory.cpp b/src/xercesc/validators/datatype/DatatypeValidatorFactory.cpp
index 1176c8d..a176c91 100644
--- a/src/xercesc/validators/datatype/DatatypeValidatorFactory.cpp
+++ b/src/xercesc/validators/datatype/DatatypeValidatorFactory.cpp
@@ -59,7 +59,7 @@
 
 #include <xercesc/internal/XTemplateSerializer.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 // ---------------------------------------------------------------------------
@@ -855,7 +855,7 @@
 
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file DatatypeValidatorFactory.cpp
diff --git a/src/xercesc/validators/datatype/DatatypeValidatorFactory.hpp b/src/xercesc/validators/datatype/DatatypeValidatorFactory.hpp
index 172a2f1..84bc327 100644
--- a/src/xercesc/validators/datatype/DatatypeValidatorFactory.hpp
+++ b/src/xercesc/validators/datatype/DatatypeValidatorFactory.hpp
@@ -51,7 +51,7 @@
 
 #include <xercesc/internal/XSerializable.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  DatatypeValidatorFactory: Local declaration
@@ -230,10 +230,10 @@
     //  fBuiltInRegistry
     //      This is a hashtable of built-in primitive datatype validators.
     // -----------------------------------------------------------------------
-    XERCES_CPP_NAMESPACE_QUALIFIER RefHashTableOf<XERCES_CPP_NAMESPACE_QUALIFIER DatatypeValidator>*        fUserDefinedRegistry;
-    static XERCES_CPP_NAMESPACE_QUALIFIER RefHashTableOf<DatatypeValidator>* fBuiltInRegistry;
-    static XERCES_CPP_NAMESPACE_QUALIFIER RefHashTableOf<XMLCanRepGroup, PtrHasher>*    fCanRepRegistry;
-    XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* const fMemoryManager;
+    xercesc::RefHashTableOf<xercesc::DatatypeValidator>*        fUserDefinedRegistry;
+    static xercesc::RefHashTableOf<DatatypeValidator>* fBuiltInRegistry;
+    static xercesc::RefHashTableOf<XMLCanRepGroup, PtrHasher>*    fCanRepRegistry;
+    xercesc::MemoryManager* const fMemoryManager;
 
     friend class XPath2ContextImpl;
     friend class XMLInitializer;
@@ -276,7 +276,7 @@
     }
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/datatype/DateDatatypeValidator.cpp b/src/xercesc/validators/datatype/DateDatatypeValidator.cpp
index 7ab7fc7..ed332d5 100644
--- a/src/xercesc/validators/datatype/DateDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/DateDatatypeValidator.cpp
@@ -25,7 +25,7 @@
 #include <xercesc/validators/datatype/DateDatatypeValidator.hpp>
 #include <xercesc/util/OutOfMemoryException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Constructors and Destructor
@@ -132,7 +132,7 @@
     DateTimeValidator::serialize(serEng);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file DateDatatypeValidator::cpp
diff --git a/src/xercesc/validators/datatype/DateDatatypeValidator.hpp b/src/xercesc/validators/datatype/DateDatatypeValidator.hpp
index 4c873a1..4e02e16 100644
--- a/src/xercesc/validators/datatype/DateDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/DateDatatypeValidator.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/validators/datatype/DateTimeValidator.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class VALIDATORS_EXPORT DateDatatypeValidator : public DateTimeValidator
 {
@@ -91,7 +91,7 @@
     DateDatatypeValidator& operator=(const DateDatatypeValidator&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/datatype/DateTimeDatatypeValidator.cpp b/src/xercesc/validators/datatype/DateTimeDatatypeValidator.cpp
index ef036cb..b69997c 100644
--- a/src/xercesc/validators/datatype/DateTimeDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/DateTimeDatatypeValidator.cpp
@@ -25,7 +25,7 @@
 #include <xercesc/validators/datatype/DateTimeDatatypeValidator.hpp>
 #include <xercesc/util/OutOfMemoryException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Constructors and Destructor
@@ -132,7 +132,7 @@
     DateTimeValidator::serialize(serEng);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file DateTimeDatatypeValidator::cpp
diff --git a/src/xercesc/validators/datatype/DateTimeDatatypeValidator.hpp b/src/xercesc/validators/datatype/DateTimeDatatypeValidator.hpp
index e5a6546..6e14150 100644
--- a/src/xercesc/validators/datatype/DateTimeDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/DateTimeDatatypeValidator.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/validators/datatype/DateTimeValidator.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class VALIDATORS_EXPORT DateTimeDatatypeValidator : public DateTimeValidator
 {
@@ -92,7 +92,7 @@
     DateTimeDatatypeValidator& operator=(const DateTimeDatatypeValidator&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/datatype/DateTimeValidator.cpp b/src/xercesc/validators/datatype/DateTimeValidator.cpp
index 3591229..02dff55 100644
--- a/src/xercesc/validators/datatype/DateTimeValidator.cpp
+++ b/src/xercesc/validators/datatype/DateTimeValidator.cpp
@@ -28,7 +28,7 @@
 #include <xercesc/validators/schema/SchemaSymbols.hpp>
 #include <xercesc/util/OutOfMemoryException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Macro
@@ -295,7 +295,7 @@
     //dateTime can be instantiated during checkContent(), so don't serialize it.
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file DateTimeValidator::cpp
diff --git a/src/xercesc/validators/datatype/DateTimeValidator.hpp b/src/xercesc/validators/datatype/DateTimeValidator.hpp
index efc936f..debb08f 100644
--- a/src/xercesc/validators/datatype/DateTimeValidator.hpp
+++ b/src/xercesc/validators/datatype/DateTimeValidator.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/validators/datatype/AbstractNumericFacetValidator.hpp>
 #include <xercesc/util/XMLDateTime.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class VALIDATORS_EXPORT DateTimeValidator : public AbstractNumericFacetValidator
 {
@@ -115,7 +115,7 @@
     DateTimeValidator& operator=(const DateTimeValidator&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/datatype/DayDatatypeValidator.cpp b/src/xercesc/validators/datatype/DayDatatypeValidator.cpp
index e84613d..76b10c6 100644
--- a/src/xercesc/validators/datatype/DayDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/DayDatatypeValidator.cpp
@@ -25,7 +25,7 @@
 #include <xercesc/validators/datatype/DayDatatypeValidator.hpp>
 #include <xercesc/util/OutOfMemoryException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Constructors and Destructor
@@ -99,7 +99,7 @@
     DateTimeValidator::serialize(serEng);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file DayDatatypeValidator::cpp
diff --git a/src/xercesc/validators/datatype/DayDatatypeValidator.hpp b/src/xercesc/validators/datatype/DayDatatypeValidator.hpp
index f1cba5f..6fe2378 100644
--- a/src/xercesc/validators/datatype/DayDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/DayDatatypeValidator.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/validators/datatype/DateTimeValidator.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class VALIDATORS_EXPORT DayDatatypeValidator : public DateTimeValidator
 {
@@ -85,7 +85,7 @@
     DayDatatypeValidator& operator=(const DayDatatypeValidator&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/datatype/DecimalDatatypeValidator.cpp b/src/xercesc/validators/datatype/DecimalDatatypeValidator.cpp
index bf1da8b..2019096 100644
--- a/src/xercesc/validators/datatype/DecimalDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/DecimalDatatypeValidator.cpp
@@ -33,7 +33,7 @@
 #include <xercesc/util/XMLBigDecimal.hpp>
 #include <xercesc/util/XMLBigInteger.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 static const int BUF_LEN = 64;
 
@@ -608,7 +608,7 @@
 
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file DecimalDatatypeValidator::cpp
diff --git a/src/xercesc/validators/datatype/DecimalDatatypeValidator.hpp b/src/xercesc/validators/datatype/DecimalDatatypeValidator.hpp
index cc8e893..0bad32d 100644
--- a/src/xercesc/validators/datatype/DecimalDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/DecimalDatatypeValidator.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/validators/datatype/AbstractNumericValidator.hpp>
 #include <xercesc/util/RefVectorOf.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLBigDecimal;
 
@@ -209,7 +209,7 @@
     fFractionDigits = newFractionDigits;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/datatype/DoubleDatatypeValidator.cpp b/src/xercesc/validators/datatype/DoubleDatatypeValidator.cpp
index 676dc91..7f4f8f6 100644
--- a/src/xercesc/validators/datatype/DoubleDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/DoubleDatatypeValidator.cpp
@@ -26,7 +26,7 @@
 #include <xercesc/validators/datatype/InvalidDatatypeFacetException.hpp>
 #include <xercesc/validators/datatype/InvalidDatatypeValueException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Constructors and Destructor
@@ -249,7 +249,7 @@
 
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file DoubleDatatypeValidator::cpp
diff --git a/src/xercesc/validators/datatype/DoubleDatatypeValidator.hpp b/src/xercesc/validators/datatype/DoubleDatatypeValidator.hpp
index ef7e000..428a460 100644
--- a/src/xercesc/validators/datatype/DoubleDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/DoubleDatatypeValidator.hpp
@@ -26,7 +26,7 @@
 #include <xercesc/util/RefVectorOf.hpp>
 #include <xercesc/util/XMLDouble.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class VALIDATORS_EXPORT DoubleDatatypeValidator : public AbstractNumericValidator
 {
@@ -137,7 +137,7 @@
     DoubleDatatypeValidator& operator = (const  DoubleDatatypeValidator&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/datatype/DurationDatatypeValidator.cpp b/src/xercesc/validators/datatype/DurationDatatypeValidator.cpp
index 2b8d388..acf7de1 100644
--- a/src/xercesc/validators/datatype/DurationDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/DurationDatatypeValidator.cpp
@@ -25,7 +25,7 @@
 #include <xercesc/validators/datatype/DurationDatatypeValidator.hpp>
 #include <xercesc/util/OutOfMemoryException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Constructors and Destructor
@@ -106,7 +106,7 @@
     DateTimeValidator::serialize(serEng);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file DurationDatatypeValidator::cpp
diff --git a/src/xercesc/validators/datatype/DurationDatatypeValidator.hpp b/src/xercesc/validators/datatype/DurationDatatypeValidator.hpp
index 4e2b1ca..e9e4f3e 100644
--- a/src/xercesc/validators/datatype/DurationDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/DurationDatatypeValidator.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/validators/datatype/DateTimeValidator.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class VALIDATORS_EXPORT DurationDatatypeValidator : public DateTimeValidator
 {
@@ -88,7 +88,7 @@
 
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/datatype/ENTITYDatatypeValidator.cpp b/src/xercesc/validators/datatype/ENTITYDatatypeValidator.cpp
index 4135849..7dc414b 100644
--- a/src/xercesc/validators/datatype/ENTITYDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/ENTITYDatatypeValidator.cpp
@@ -27,7 +27,7 @@
 #include <xercesc/framework/XMLEntityDecl.hpp>
 #include <xercesc/util/XMLChar.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Constructors and Destructor
@@ -118,7 +118,7 @@
     StringDatatypeValidator::serialize(serEng);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
  /**
   * End of file ENTITYDatatypeValidator.cpp
diff --git a/src/xercesc/validators/datatype/ENTITYDatatypeValidator.hpp b/src/xercesc/validators/datatype/ENTITYDatatypeValidator.hpp
index 1ee29a8..d780b80 100644
--- a/src/xercesc/validators/datatype/ENTITYDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/ENTITYDatatypeValidator.hpp
@@ -26,7 +26,7 @@
 #include <xercesc/util/NameIdPool.hpp>
 #include <xercesc/validators/DTD/DTDEntityDecl.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class VALIDATORS_EXPORT ENTITYDatatypeValidator : public StringDatatypeValidator
 {
@@ -135,7 +135,7 @@
 
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/datatype/FloatDatatypeValidator.cpp b/src/xercesc/validators/datatype/FloatDatatypeValidator.cpp
index f9ffed5..ff2b805 100644
--- a/src/xercesc/validators/datatype/FloatDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/FloatDatatypeValidator.cpp
@@ -27,7 +27,7 @@
 #include <xercesc/validators/datatype/InvalidDatatypeFacetException.hpp>
 #include <xercesc/validators/datatype/InvalidDatatypeValueException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Constructors and Destructor
@@ -248,7 +248,7 @@
 
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file FloatDatatypeValidator::cpp
diff --git a/src/xercesc/validators/datatype/FloatDatatypeValidator.hpp b/src/xercesc/validators/datatype/FloatDatatypeValidator.hpp
index c10a50f..1d96fc7 100644
--- a/src/xercesc/validators/datatype/FloatDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/FloatDatatypeValidator.hpp
@@ -26,7 +26,7 @@
 #include <xercesc/util/RefVectorOf.hpp>
 #include <xercesc/util/XMLFloat.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class VALIDATORS_EXPORT FloatDatatypeValidator : public AbstractNumericValidator
 {
@@ -136,7 +136,7 @@
     FloatDatatypeValidator& operator = (const  FloatDatatypeValidator&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/datatype/HexBinaryDatatypeValidator.cpp b/src/xercesc/validators/datatype/HexBinaryDatatypeValidator.cpp
index b95ff4b..3572935 100644
--- a/src/xercesc/validators/datatype/HexBinaryDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/HexBinaryDatatypeValidator.cpp
@@ -27,7 +27,7 @@
 #include <xercesc/validators/datatype/InvalidDatatypeValueException.hpp>
 #include <xercesc/util/HexBin.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Constructors and Destructor
@@ -94,7 +94,7 @@
     AbstractStringValidator::serialize(serEng);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file HexBinaryDatatypeValidator.cpp
diff --git a/src/xercesc/validators/datatype/HexBinaryDatatypeValidator.hpp b/src/xercesc/validators/datatype/HexBinaryDatatypeValidator.hpp
index b281502..bf4312c 100644
--- a/src/xercesc/validators/datatype/HexBinaryDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/HexBinaryDatatypeValidator.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/validators/datatype/AbstractStringValidator.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class VALIDATORS_EXPORT HexBinaryDatatypeValidator : public AbstractStringValidator
 {
@@ -92,7 +92,7 @@
     // -----------------------------------------------------------------------
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/datatype/IDDatatypeValidator.cpp b/src/xercesc/validators/datatype/IDDatatypeValidator.cpp
index 5f6d7fe..f1c0a87 100644
--- a/src/xercesc/validators/datatype/IDDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/IDDatatypeValidator.cpp
@@ -26,7 +26,7 @@
 #include <xercesc/validators/datatype/InvalidDatatypeValueException.hpp>
 #include <xercesc/util/XMLChar.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Constructors and Destructor
@@ -116,7 +116,7 @@
     StringDatatypeValidator::serialize(serEng);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file IDDatatypeValidator.cpp
diff --git a/src/xercesc/validators/datatype/IDDatatypeValidator.hpp b/src/xercesc/validators/datatype/IDDatatypeValidator.hpp
index 9011e64..0c12b78 100644
--- a/src/xercesc/validators/datatype/IDDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/IDDatatypeValidator.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/validators/datatype/StringDatatypeValidator.hpp>
 #include <xercesc/framework/XMLRefInfo.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class VALIDATORS_EXPORT IDDatatypeValidator : public StringDatatypeValidator
 {
@@ -123,7 +123,7 @@
     // -----------------------------------------------------------------------
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 /**
diff --git a/src/xercesc/validators/datatype/IDREFDatatypeValidator.cpp b/src/xercesc/validators/datatype/IDREFDatatypeValidator.cpp
index 062d099..c377a8f 100644
--- a/src/xercesc/validators/datatype/IDREFDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/IDREFDatatypeValidator.cpp
@@ -26,7 +26,7 @@
 #include <xercesc/validators/datatype/InvalidDatatypeValueException.hpp>
 #include <xercesc/util/XMLChar.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Constructors and Destructor
@@ -118,7 +118,7 @@
     StringDatatypeValidator::serialize(serEng);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file IDREFDatatypeValidator.cpp
diff --git a/src/xercesc/validators/datatype/IDREFDatatypeValidator.hpp b/src/xercesc/validators/datatype/IDREFDatatypeValidator.hpp
index cb7c1aa..5d8a22d 100644
--- a/src/xercesc/validators/datatype/IDREFDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/IDREFDatatypeValidator.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/validators/datatype/StringDatatypeValidator.hpp>
 #include <xercesc/framework/XMLRefInfo.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class VALIDATORS_EXPORT IDREFDatatypeValidator : public StringDatatypeValidator
 {
@@ -126,7 +126,7 @@
 
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/datatype/InvalidDatatypeFacetException.hpp b/src/xercesc/validators/datatype/InvalidDatatypeFacetException.hpp
index 4670d80..9b940ec 100644
--- a/src/xercesc/validators/datatype/InvalidDatatypeFacetException.hpp
+++ b/src/xercesc/validators/datatype/InvalidDatatypeFacetException.hpp
@@ -25,10 +25,10 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/util/XMLException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 MakeXMLException(InvalidDatatypeFacetException, XMLUTIL_EXPORT)
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/validators/datatype/InvalidDatatypeValueException.hpp b/src/xercesc/validators/datatype/InvalidDatatypeValueException.hpp
index 368da89..fcceedd 100644
--- a/src/xercesc/validators/datatype/InvalidDatatypeValueException.hpp
+++ b/src/xercesc/validators/datatype/InvalidDatatypeValueException.hpp
@@ -25,10 +25,10 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/util/XMLException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 MakeXMLException(InvalidDatatypeValueException, XMLUTIL_EXPORT)
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/validators/datatype/ListDatatypeValidator.cpp b/src/xercesc/validators/datatype/ListDatatypeValidator.cpp
index 1c92fe6..9f413c4 100644
--- a/src/xercesc/validators/datatype/ListDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/ListDatatypeValidator.cpp
@@ -27,7 +27,7 @@
 #include <xercesc/validators/datatype/InvalidDatatypeValueException.hpp>
 #include <xercesc/util/OutOfMemoryException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 static const int BUF_LEN = 64;
 
@@ -452,7 +452,7 @@
     //will be reset each time validate()/checkContent() invoked.
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file ListDatatypeValidator.cpp
diff --git a/src/xercesc/validators/datatype/ListDatatypeValidator.hpp b/src/xercesc/validators/datatype/ListDatatypeValidator.hpp
index 9d696cc..306ad34 100644
--- a/src/xercesc/validators/datatype/ListDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/ListDatatypeValidator.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/validators/datatype/AbstractStringValidator.hpp>
 #include <xercesc/validators/schema/SchemaSymbols.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class VALIDATORS_EXPORT ListDatatypeValidator : public AbstractStringValidator
 {
@@ -217,7 +217,7 @@
     fContent = content;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/datatype/MonthDatatypeValidator.cpp b/src/xercesc/validators/datatype/MonthDatatypeValidator.cpp
index ea1e95c..8d10356 100644
--- a/src/xercesc/validators/datatype/MonthDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/MonthDatatypeValidator.cpp
@@ -25,7 +25,7 @@
 #include <xercesc/validators/datatype/MonthDatatypeValidator.hpp>
 #include <xercesc/util/OutOfMemoryException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Constructors and Destructor
@@ -100,7 +100,7 @@
     DateTimeValidator::serialize(serEng);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file MonthDatatypeValidator::cpp
diff --git a/src/xercesc/validators/datatype/MonthDatatypeValidator.hpp b/src/xercesc/validators/datatype/MonthDatatypeValidator.hpp
index 32d0ff5..9e95df7 100644
--- a/src/xercesc/validators/datatype/MonthDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/MonthDatatypeValidator.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/validators/datatype/DateTimeValidator.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class VALIDATORS_EXPORT MonthDatatypeValidator : public DateTimeValidator
 {
@@ -85,7 +85,7 @@
     MonthDatatypeValidator& operator=(const MonthDatatypeValidator&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/datatype/MonthDayDatatypeValidator.cpp b/src/xercesc/validators/datatype/MonthDayDatatypeValidator.cpp
index 8e5ad29..6740fd1 100644
--- a/src/xercesc/validators/datatype/MonthDayDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/MonthDayDatatypeValidator.cpp
@@ -25,7 +25,7 @@
 #include <xercesc/validators/datatype/MonthDayDatatypeValidator.hpp>
 #include <xercesc/util/OutOfMemoryException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Constructors and Destructor
@@ -100,7 +100,7 @@
     DateTimeValidator::serialize(serEng);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file MonthDayDatatypeValidator::cpp
diff --git a/src/xercesc/validators/datatype/MonthDayDatatypeValidator.hpp b/src/xercesc/validators/datatype/MonthDayDatatypeValidator.hpp
index 76a30a4..f46c08f 100644
--- a/src/xercesc/validators/datatype/MonthDayDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/MonthDayDatatypeValidator.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/validators/datatype/DateTimeValidator.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class VALIDATORS_EXPORT MonthDayDatatypeValidator : public DateTimeValidator
 {
@@ -85,7 +85,7 @@
     MonthDayDatatypeValidator& operator=(const MonthDayDatatypeValidator&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/datatype/NCNameDatatypeValidator.cpp b/src/xercesc/validators/datatype/NCNameDatatypeValidator.cpp
index e529753..605944b 100644
--- a/src/xercesc/validators/datatype/NCNameDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/NCNameDatatypeValidator.cpp
@@ -26,7 +26,7 @@
 #include <xercesc/validators/datatype/InvalidDatatypeValueException.hpp>
 #include <xercesc/util/XMLChar.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Constructors and Destructor
@@ -121,7 +121,7 @@
     StringDatatypeValidator::serialize(serEng);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
  /**
   * End of file NCNameDatatypeValidator.cpp
diff --git a/src/xercesc/validators/datatype/NCNameDatatypeValidator.hpp b/src/xercesc/validators/datatype/NCNameDatatypeValidator.hpp
index 3b89cfc..14a0caf 100644
--- a/src/xercesc/validators/datatype/NCNameDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/NCNameDatatypeValidator.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/validators/datatype/StringDatatypeValidator.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class VALIDATORS_EXPORT NCNameDatatypeValidator : public StringDatatypeValidator
 {
@@ -142,7 +142,7 @@
 
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/datatype/NOTATIONDatatypeValidator.cpp b/src/xercesc/validators/datatype/NOTATIONDatatypeValidator.cpp
index 853ef55..2220f60 100644
--- a/src/xercesc/validators/datatype/NOTATIONDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/NOTATIONDatatypeValidator.cpp
@@ -28,7 +28,7 @@
 #include <xercesc/validators/datatype/InvalidDatatypeValueException.hpp>
 #include <xercesc/util/OutOfMemoryException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Constructors and Destructor
@@ -147,7 +147,7 @@
     AbstractStringValidator::serialize(serEng);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file NOTATIONDatatypeValidator.cpp
diff --git a/src/xercesc/validators/datatype/NOTATIONDatatypeValidator.hpp b/src/xercesc/validators/datatype/NOTATIONDatatypeValidator.hpp
index 9d0e709..b082d35 100644
--- a/src/xercesc/validators/datatype/NOTATIONDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/NOTATIONDatatypeValidator.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/validators/datatype/AbstractStringValidator.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class VALIDATORS_EXPORT NOTATIONDatatypeValidator : public AbstractStringValidator
 {
@@ -94,7 +94,7 @@
     // -----------------------------------------------------------------------
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 /**
diff --git a/src/xercesc/validators/datatype/NameDatatypeValidator.cpp b/src/xercesc/validators/datatype/NameDatatypeValidator.cpp
index 4fc4329..d596447 100644
--- a/src/xercesc/validators/datatype/NameDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/NameDatatypeValidator.cpp
@@ -26,7 +26,7 @@
 #include <xercesc/validators/datatype/InvalidDatatypeValueException.hpp>
 #include <xercesc/util/XMLChar.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Constructors and Destructor
@@ -121,7 +121,7 @@
     StringDatatypeValidator::serialize(serEng);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
  /**
   * End of file NameDatatypeValidator.cpp
diff --git a/src/xercesc/validators/datatype/NameDatatypeValidator.hpp b/src/xercesc/validators/datatype/NameDatatypeValidator.hpp
index b9d91c1..d9127a6 100644
--- a/src/xercesc/validators/datatype/NameDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/NameDatatypeValidator.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/validators/datatype/StringDatatypeValidator.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class VALIDATORS_EXPORT NameDatatypeValidator : public StringDatatypeValidator
 {
@@ -141,7 +141,7 @@
 
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/datatype/QNameDatatypeValidator.cpp b/src/xercesc/validators/datatype/QNameDatatypeValidator.cpp
index b82fdb5..7e7ad51 100644
--- a/src/xercesc/validators/datatype/QNameDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/QNameDatatypeValidator.cpp
@@ -28,7 +28,7 @@
 #include <xercesc/internal/ValidationContextImpl.hpp>
 #include <xercesc/util/XMLChar.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Constructors and Destructor
@@ -265,7 +265,7 @@
     AbstractStringValidator::serialize(serEng);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file QNameDatatypeValidator.cpp
diff --git a/src/xercesc/validators/datatype/QNameDatatypeValidator.hpp b/src/xercesc/validators/datatype/QNameDatatypeValidator.hpp
index 830e2d9..6e13a80 100644
--- a/src/xercesc/validators/datatype/QNameDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/QNameDatatypeValidator.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/validators/datatype/AbstractStringValidator.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class VALIDATORS_EXPORT QNameDatatypeValidator : public AbstractStringValidator
 {
@@ -96,7 +96,7 @@
 
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/datatype/StringDatatypeValidator.cpp b/src/xercesc/validators/datatype/StringDatatypeValidator.cpp
index ddc604a..cd760fb 100644
--- a/src/xercesc/validators/datatype/StringDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/StringDatatypeValidator.cpp
@@ -27,7 +27,7 @@
 #include <xercesc/validators/datatype/InvalidDatatypeFacetException.hpp>
 #include <xercesc/validators/datatype/InvalidDatatypeValueException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Constructors and Destructor
@@ -197,7 +197,7 @@
     AbstractStringValidator::serialize(serEng);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file StringDatatypeValidator.cpp
diff --git a/src/xercesc/validators/datatype/StringDatatypeValidator.hpp b/src/xercesc/validators/datatype/StringDatatypeValidator.hpp
index 26feecc..dd5c28e 100644
--- a/src/xercesc/validators/datatype/StringDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/StringDatatypeValidator.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/validators/datatype/AbstractStringValidator.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class VALIDATORS_EXPORT StringDatatypeValidator : public AbstractStringValidator
 {
@@ -105,7 +105,7 @@
     StringDatatypeValidator& operator=(const StringDatatypeValidator&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/datatype/TimeDatatypeValidator.cpp b/src/xercesc/validators/datatype/TimeDatatypeValidator.cpp
index 2afab9a..62b552a 100644
--- a/src/xercesc/validators/datatype/TimeDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/TimeDatatypeValidator.cpp
@@ -25,7 +25,7 @@
 #include <xercesc/validators/datatype/TimeDatatypeValidator.hpp>
 #include <xercesc/util/OutOfMemoryException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Constructors and Destructor
@@ -132,7 +132,7 @@
     DateTimeValidator::serialize(serEng);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file TimeDatatypeValidator::cpp
diff --git a/src/xercesc/validators/datatype/TimeDatatypeValidator.hpp b/src/xercesc/validators/datatype/TimeDatatypeValidator.hpp
index ab3df71..a108c95 100644
--- a/src/xercesc/validators/datatype/TimeDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/TimeDatatypeValidator.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/validators/datatype/DateTimeValidator.hpp>
 #include <xercesc/util/RefVectorOf.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class VALIDATORS_EXPORT TimeDatatypeValidator : public DateTimeValidator
 {
@@ -94,7 +94,7 @@
     TimeDatatypeValidator& operator=(const TimeDatatypeValidator&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/datatype/UnionDatatypeValidator.cpp b/src/xercesc/validators/datatype/UnionDatatypeValidator.cpp
index 1224d32..97ab132 100644
--- a/src/xercesc/validators/datatype/UnionDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/UnionDatatypeValidator.cpp
@@ -29,7 +29,7 @@
 
 #include <xercesc/internal/XTemplateSerializer.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 static const unsigned int BUF_LEN = 64;
 
@@ -458,7 +458,7 @@
     }
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file UnionDatatypeValidator.cpp
diff --git a/src/xercesc/validators/datatype/UnionDatatypeValidator.hpp b/src/xercesc/validators/datatype/UnionDatatypeValidator.hpp
index d7b8471..6d03025 100644
--- a/src/xercesc/validators/datatype/UnionDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/UnionDatatypeValidator.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/validators/datatype/DatatypeValidator.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class VALIDATORS_EXPORT UnionDatatypeValidator : public DatatypeValidator
 {
@@ -310,7 +310,7 @@
     return false;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/datatype/XMLCanRepGroup.cpp b/src/xercesc/validators/datatype/XMLCanRepGroup.cpp
index e601b77..c0a7053 100644
--- a/src/xercesc/validators/datatype/XMLCanRepGroup.cpp
+++ b/src/xercesc/validators/datatype/XMLCanRepGroup.cpp
@@ -25,7 +25,7 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/validators/datatype/XMLCanRepGroup.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 XMLCanRepGroup::~XMLCanRepGroup()
 {
@@ -36,7 +36,7 @@
 {
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file DatatypeValidator.cpp
diff --git a/src/xercesc/validators/datatype/XMLCanRepGroup.hpp b/src/xercesc/validators/datatype/XMLCanRepGroup.hpp
index 66c56bd..317aefe 100644
--- a/src/xercesc/validators/datatype/XMLCanRepGroup.hpp
+++ b/src/xercesc/validators/datatype/XMLCanRepGroup.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/PlatformUtils.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class VALIDATORS_EXPORT XMLCanRepGroup : public XMemory
 {
@@ -65,7 +65,7 @@
     return fData;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/datatype/YearDatatypeValidator.cpp b/src/xercesc/validators/datatype/YearDatatypeValidator.cpp
index 163906b..b9e8998 100644
--- a/src/xercesc/validators/datatype/YearDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/YearDatatypeValidator.cpp
@@ -25,7 +25,7 @@
 #include <xercesc/validators/datatype/YearDatatypeValidator.hpp>
 #include <xercesc/util/OutOfMemoryException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Constructors and Destructor
@@ -99,7 +99,7 @@
     DateTimeValidator::serialize(serEng);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file YearDatatypeValidator::cpp
diff --git a/src/xercesc/validators/datatype/YearDatatypeValidator.hpp b/src/xercesc/validators/datatype/YearDatatypeValidator.hpp
index fd5edce..3b9c2c7 100644
--- a/src/xercesc/validators/datatype/YearDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/YearDatatypeValidator.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/validators/datatype/DateTimeValidator.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class VALIDATORS_EXPORT YearDatatypeValidator : public DateTimeValidator
 {
@@ -85,7 +85,7 @@
     YearDatatypeValidator& operator=(const YearDatatypeValidator&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/datatype/YearMonthDatatypeValidator.cpp b/src/xercesc/validators/datatype/YearMonthDatatypeValidator.cpp
index 3fa8832..4d3cc14 100644
--- a/src/xercesc/validators/datatype/YearMonthDatatypeValidator.cpp
+++ b/src/xercesc/validators/datatype/YearMonthDatatypeValidator.cpp
@@ -25,7 +25,7 @@
 #include <xercesc/validators/datatype/YearMonthDatatypeValidator.hpp>
 #include <xercesc/util/OutOfMemoryException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Constructors and Destructor
@@ -100,7 +100,7 @@
     DateTimeValidator::serialize(serEng);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file YearMonthDatatypeValidator::cpp
diff --git a/src/xercesc/validators/datatype/YearMonthDatatypeValidator.hpp b/src/xercesc/validators/datatype/YearMonthDatatypeValidator.hpp
index 7479fdc..ca24a6f 100644
--- a/src/xercesc/validators/datatype/YearMonthDatatypeValidator.hpp
+++ b/src/xercesc/validators/datatype/YearMonthDatatypeValidator.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/validators/datatype/DateTimeValidator.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class VALIDATORS_EXPORT YearMonthDatatypeValidator : public DateTimeValidator
 {
@@ -85,7 +85,7 @@
     YearMonthDatatypeValidator& operator=(const YearMonthDatatypeValidator&);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/schema/ComplexTypeInfo.cpp b/src/xercesc/validators/schema/ComplexTypeInfo.cpp
index 48f1860..1822e3f 100644
--- a/src/xercesc/validators/schema/ComplexTypeInfo.cpp
+++ b/src/xercesc/validators/schema/ComplexTypeInfo.cpp
@@ -34,7 +34,7 @@
 #include <xercesc/internal/XTemplateSerializer.hpp>
 #include <xercesc/util/XMLInitializer.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  ComplexTypeInfo: Static member data
@@ -904,7 +904,7 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file ComplexTypeInfo.cpp
diff --git a/src/xercesc/validators/schema/ComplexTypeInfo.hpp b/src/xercesc/validators/schema/ComplexTypeInfo.hpp
index 5cd78ed..9ef4f24 100644
--- a/src/xercesc/validators/schema/ComplexTypeInfo.hpp
+++ b/src/xercesc/validators/schema/ComplexTypeInfo.hpp
@@ -40,7 +40,7 @@
 #include <xercesc/validators/schema/SchemaAttDef.hpp>
 #include <xercesc/internal/XSerializable.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 // ---------------------------------------------------------------------------
@@ -521,7 +521,7 @@
     return false;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/schema/GeneralAttributeCheck.cpp b/src/xercesc/validators/schema/GeneralAttributeCheck.cpp
index 657526f..ba878f1 100644
--- a/src/xercesc/validators/schema/GeneralAttributeCheck.cpp
+++ b/src/xercesc/validators/schema/GeneralAttributeCheck.cpp
@@ -32,7 +32,7 @@
 #include <xercesc/util/XMLInitializer.hpp>
 #include <xercesc/util/OutOfMemoryException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Local const data
@@ -400,7 +400,7 @@
 
 #if defined(NEED_TO_GEN_ELEM_ATT_MAP_TABLE)
 
-#include <stdio.h>
+#include <cstdio>
 
 void GeneralAttributeCheck::initCharFlagTable()
 {
@@ -789,7 +789,7 @@
     SchemaSymbols::fgATT_XPATH,
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file GeneralAttributeCheck.cpp
diff --git a/src/xercesc/validators/schema/GeneralAttributeCheck.hpp b/src/xercesc/validators/schema/GeneralAttributeCheck.hpp
index b98b64a..37aecd4 100644
--- a/src/xercesc/validators/schema/GeneralAttributeCheck.hpp
+++ b/src/xercesc/validators/schema/GeneralAttributeCheck.hpp
@@ -35,7 +35,7 @@
 #include <xercesc/validators/datatype/IDDatatypeValidator.hpp>
 #include <xercesc/framework/ValidationContext.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Forward declaration
@@ -248,7 +248,7 @@
     return fFacetsMap->get(facetName, manager);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/schema/NamespaceScope.cpp b/src/xercesc/validators/schema/NamespaceScope.cpp
index 0e9703f..7c721d0 100644
--- a/src/xercesc/validators/schema/NamespaceScope.cpp
+++ b/src/xercesc/validators/schema/NamespaceScope.cpp
@@ -22,11 +22,11 @@
 // ---------------------------------------------------------------------------
 //  Includes
 // ---------------------------------------------------------------------------
-#include <string.h>
+#include <cstring>
 #include <xercesc/util/EmptyStackException.hpp>
 #include <xercesc/validators/schema/NamespaceScope.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  NamespaceScope: Constructors and Destructor
@@ -309,7 +309,7 @@
     fStackCapacity = newCapacity;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file NamespaceScope.cpp
diff --git a/src/xercesc/validators/schema/NamespaceScope.hpp b/src/xercesc/validators/schema/NamespaceScope.hpp
index beb6d7a..3af157e 100644
--- a/src/xercesc/validators/schema/NamespaceScope.hpp
+++ b/src/xercesc/validators/schema/NamespaceScope.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/StringPool.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // Define a pure interface to allow XercesXPath to work on both NamespaceScope and DOMXPathNSResolver
 class VALIDATORS_EXPORT XercesNamespaceResolver
@@ -159,7 +159,7 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/schema/PSVIDefs.hpp b/src/xercesc/validators/schema/PSVIDefs.hpp
index 4a66f8c..c0b3d70 100644
--- a/src/xercesc/validators/schema/PSVIDefs.hpp
+++ b/src/xercesc/validators/schema/PSVIDefs.hpp
@@ -22,7 +22,7 @@
 #if !defined(XERCESC_INCLUDE_GUARD_PSVIDEFS_HPP)
 #define XERCESC_INCLUDE_GUARD_PSVIDEFS_HPP
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class VALIDATORS_EXPORT PSVIDefs
 {
@@ -35,6 +35,6 @@
     };
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/validators/schema/SchemaAttDef.cpp b/src/xercesc/validators/schema/SchemaAttDef.cpp
index 1222cf0..f0983ee 100644
--- a/src/xercesc/validators/schema/SchemaAttDef.cpp
+++ b/src/xercesc/validators/schema/SchemaAttDef.cpp
@@ -28,7 +28,7 @@
 
 #include <xercesc/internal/XTemplateSerializer.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  SchemaAttDef: Implementation of the XMLAttDef interface
@@ -175,4 +175,4 @@
 }
 
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/validators/schema/SchemaAttDef.hpp b/src/xercesc/validators/schema/SchemaAttDef.hpp
index af2071b..e8cfcc2 100644
--- a/src/xercesc/validators/schema/SchemaAttDef.hpp
+++ b/src/xercesc/validators/schema/SchemaAttDef.hpp
@@ -29,7 +29,7 @@
 #include <xercesc/validators/datatype/UnionDatatypeValidator.hpp>
 #include <xercesc/validators/schema/PSVIDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class DatatypeValidator;
 class QName;
@@ -247,6 +247,6 @@
     fPSVIScope = toSet;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/validators/schema/SchemaAttDefList.cpp b/src/xercesc/validators/schema/SchemaAttDefList.cpp
index fa61b2a..f9a8f65 100644
--- a/src/xercesc/validators/schema/SchemaAttDefList.cpp
+++ b/src/xercesc/validators/schema/SchemaAttDefList.cpp
@@ -28,7 +28,7 @@
 #include <xercesc/internal/XTemplateSerializer.hpp>
 #include <xercesc/util/ArrayIndexOutOfBoundsException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  SchemaAttDefList: Constructors and Destructor
@@ -198,4 +198,4 @@
 {
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/validators/schema/SchemaAttDefList.hpp b/src/xercesc/validators/schema/SchemaAttDefList.hpp
index 9159a25..d886654 100644
--- a/src/xercesc/validators/schema/SchemaAttDefList.hpp
+++ b/src/xercesc/validators/schema/SchemaAttDefList.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/RefHash2KeysTableOf.hpp>
 #include <xercesc/validators/schema/SchemaElementDecl.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //
 //  This is a derivative of the framework abstract class which defines the
@@ -176,6 +176,6 @@
     return fList->get((void*)attLocalPart, uriID);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/validators/schema/SchemaElementDecl.cpp b/src/xercesc/validators/schema/SchemaElementDecl.cpp
index 950a391..a1db951 100644
--- a/src/xercesc/validators/schema/SchemaElementDecl.cpp
+++ b/src/xercesc/validators/schema/SchemaElementDecl.cpp
@@ -32,7 +32,7 @@
 
 #include <xercesc/internal/XTemplateSerializer.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  SchemaElementDecl: Constructors and Destructor
@@ -274,4 +274,4 @@
     return Schema;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/validators/schema/SchemaElementDecl.hpp b/src/xercesc/validators/schema/SchemaElementDecl.hpp
index f746cf6..169f270 100644
--- a/src/xercesc/validators/schema/SchemaElementDecl.hpp
+++ b/src/xercesc/validators/schema/SchemaElementDecl.hpp
@@ -29,7 +29,7 @@
 #include <xercesc/validators/datatype/DatatypeValidator.hpp>
 #include <xercesc/validators/schema/PSVIDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class ContentSpecNode;
 class SchemaAttDefList;
@@ -433,6 +433,6 @@
     return 0;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/validators/schema/SchemaGrammar.cpp b/src/xercesc/validators/schema/SchemaGrammar.cpp
index 5dbd919..19ff02a 100644
--- a/src/xercesc/validators/schema/SchemaGrammar.cpp
+++ b/src/xercesc/validators/schema/SchemaGrammar.cpp
@@ -33,7 +33,7 @@
 
 #include <xercesc/internal/XTemplateSerializer.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 typedef JanitorMemFunCall<SchemaGrammar>    CleanupType;
 
@@ -361,4 +361,4 @@
     }
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/validators/schema/SchemaGrammar.hpp b/src/xercesc/validators/schema/SchemaGrammar.hpp
index d2549e3..be9d834 100644
--- a/src/xercesc/validators/schema/SchemaGrammar.hpp
+++ b/src/xercesc/validators/schema/SchemaGrammar.hpp
@@ -33,7 +33,7 @@
 #include <xercesc/validators/datatype/DatatypeValidatorFactory.hpp>
 #include <xercesc/framework/XMLSchemaDescription.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //
 // This class stores the Schema information
@@ -621,6 +621,6 @@
   fAnonTypeCount = count;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/validators/schema/SchemaInfo.cpp b/src/xercesc/validators/schema/SchemaInfo.cpp
index 7188ef6..066d4b6 100644
--- a/src/xercesc/validators/schema/SchemaInfo.cpp
+++ b/src/xercesc/validators/schema/SchemaInfo.cpp
@@ -29,7 +29,7 @@
 #include <xercesc/util/XMLString.hpp>
 #include <xercesc/internal/ValidationContextImpl.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  SchemaInfo: Constructors and Destructor
@@ -244,7 +244,7 @@
     }
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file SchemaInfo.cpp
diff --git a/src/xercesc/validators/schema/SchemaInfo.hpp b/src/xercesc/validators/schema/SchemaInfo.hpp
index baa5b2e..2deb7c8 100644
--- a/src/xercesc/validators/schema/SchemaInfo.hpp
+++ b/src/xercesc/validators/schema/SchemaInfo.hpp
@@ -43,7 +43,7 @@
 #include <xercesc/util/ValueVectorOf.hpp>
 #include <xercesc/util/RefHashTableOf.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Forward Declarations
@@ -423,7 +423,7 @@
     }
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/schema/SchemaSymbols.cpp b/src/xercesc/validators/schema/SchemaSymbols.cpp
index fdb89da..6c3d2b6 100644
--- a/src/xercesc/validators/schema/SchemaSymbols.cpp
+++ b/src/xercesc/validators/schema/SchemaSymbols.cpp
@@ -26,7 +26,7 @@
 #include <xercesc/util/XMLUniDefs.hpp>
 #include <xercesc/validators/schema/SchemaSymbols.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  SchemaSymbols: Static data
@@ -1014,7 +1014,7 @@
 
 const int SchemaSymbols::fgINT_MAX_VALUE = 0x7fffffff;
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file SchemaSymbols.cpp
diff --git a/src/xercesc/validators/schema/SchemaSymbols.hpp b/src/xercesc/validators/schema/SchemaSymbols.hpp
index d501b76..f930f03 100644
--- a/src/xercesc/validators/schema/SchemaSymbols.hpp
+++ b/src/xercesc/validators/schema/SchemaSymbols.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XercesDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /*
  * Collection of symbols used to parse a Schema Grammar
@@ -244,7 +244,7 @@
     SchemaSymbols();
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/schema/SchemaValidator.cpp b/src/xercesc/validators/schema/SchemaValidator.cpp
index 10a06b3..2307e38 100644
--- a/src/xercesc/validators/schema/SchemaValidator.cpp
+++ b/src/xercesc/validators/schema/SchemaValidator.cpp
@@ -42,7 +42,7 @@
 #include <xercesc/validators/schema/XSDLocator.hpp>
 #include <xercesc/util/OutOfMemoryException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  SchemaValidator: Constructors and Destructor
@@ -2091,4 +2091,4 @@
 
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/validators/schema/SchemaValidator.hpp b/src/xercesc/validators/schema/SchemaValidator.hpp
index 51b14f7..f65f018 100644
--- a/src/xercesc/validators/schema/SchemaValidator.hpp
+++ b/src/xercesc/validators/schema/SchemaValidator.hpp
@@ -29,7 +29,7 @@
 #include <xercesc/validators/schema/SchemaGrammar.hpp>
 #include <xercesc/validators/schema/XSDErrorReporter.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class GrammarResolver;
 class DatatypeValidator;
@@ -438,6 +438,6 @@
     return (fXsiType!=0);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/validators/schema/SubstitutionGroupComparator.cpp b/src/xercesc/validators/schema/SubstitutionGroupComparator.cpp
index 965e685..fd07fc7 100644
--- a/src/xercesc/validators/schema/SubstitutionGroupComparator.cpp
+++ b/src/xercesc/validators/schema/SubstitutionGroupComparator.cpp
@@ -32,7 +32,7 @@
 #include <xercesc/validators/schema/ComplexTypeInfo.hpp>
 #include <xercesc/validators/schema/SchemaSymbols.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 bool SubstitutionGroupComparator::isEquivalentTo(const QName* const anElement
                                                , const QName* const exemplar)
@@ -203,7 +203,7 @@
     return false;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file SubstitutionGroupComparator.cpp
diff --git a/src/xercesc/validators/schema/SubstitutionGroupComparator.hpp b/src/xercesc/validators/schema/SubstitutionGroupComparator.hpp
index 3c04c6c..9a4527d 100644
--- a/src/xercesc/validators/schema/SubstitutionGroupComparator.hpp
+++ b/src/xercesc/validators/schema/SubstitutionGroupComparator.hpp
@@ -26,7 +26,7 @@
 #include <xercesc/util/QName.hpp>
 #include <xercesc/validators/common/GrammarResolver.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class SchemaGrammar;
 
@@ -116,7 +116,7 @@
 inline SubstitutionGroupComparator::~SubstitutionGroupComparator()
 {}
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/schema/TraverseSchema.cpp b/src/xercesc/validators/schema/TraverseSchema.cpp
index 48ba8c0..cd2198d 100644
--- a/src/xercesc/validators/schema/TraverseSchema.cpp
+++ b/src/xercesc/validators/schema/TraverseSchema.cpp
@@ -60,7 +60,7 @@
 #include <xercesc/framework/MemBufInputSource.hpp>
 #include <xercesc/internal/XSAXMLScanner.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  TraverseSchema: Local declaration
@@ -9459,7 +9459,7 @@
     return attValue;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file TraverseSchema.cpp
diff --git a/src/xercesc/validators/schema/TraverseSchema.hpp b/src/xercesc/validators/schema/TraverseSchema.hpp
index deec07e..9e19617 100644
--- a/src/xercesc/validators/schema/TraverseSchema.hpp
+++ b/src/xercesc/validators/schema/TraverseSchema.hpp
@@ -45,7 +45,7 @@
 #include <xercesc/validators/schema/XSDErrorReporter.hpp>
 #include <xercesc/util/XMLResourceIdentifier.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Forward Declarations
@@ -916,7 +916,7 @@
         fImportedNSList->addElement(namespaceURI);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/schema/XMLSchemaDescriptionImpl.cpp b/src/xercesc/validators/schema/XMLSchemaDescriptionImpl.cpp
index c040e25..10ebd37 100644
--- a/src/xercesc/validators/schema/XMLSchemaDescriptionImpl.cpp
+++ b/src/xercesc/validators/schema/XMLSchemaDescriptionImpl.cpp
@@ -28,7 +28,7 @@
 
 #include <xercesc/internal/XTemplateSerializer.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  XMLSchemaDescriptionImpl: constructor and destructor
@@ -232,4 +232,4 @@
 {
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/validators/schema/XMLSchemaDescriptionImpl.hpp b/src/xercesc/validators/schema/XMLSchemaDescriptionImpl.hpp
index f284a05..e92e28c 100644
--- a/src/xercesc/validators/schema/XMLSchemaDescriptionImpl.hpp
+++ b/src/xercesc/validators/schema/XMLSchemaDescriptionImpl.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/framework/XMLSchemaDescription.hpp>
 #include <xercesc/util/RefVectorOf.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLAttDefs;
 
@@ -180,6 +180,6 @@
 };
 
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/validators/schema/XSDDOMParser.cpp b/src/xercesc/validators/schema/XSDDOMParser.cpp
index 71c0d86..5884840 100644
--- a/src/xercesc/validators/schema/XSDDOMParser.cpp
+++ b/src/xercesc/validators/schema/XSDDOMParser.cpp
@@ -34,7 +34,7 @@
 #include <xercesc/dom/impl/DOMTextImpl.hpp>
 #include <xercesc/framework/XMLValidityCodes.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  XSDDOMParser: Constructors and Destructor
@@ -521,4 +521,4 @@
     return 0;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/validators/schema/XSDDOMParser.hpp b/src/xercesc/validators/schema/XSDDOMParser.hpp
index 43cf11c..6a64f01 100644
--- a/src/xercesc/validators/schema/XSDDOMParser.hpp
+++ b/src/xercesc/validators/schema/XSDDOMParser.hpp
@@ -27,7 +27,7 @@
 #include <xercesc/validators/schema/XSDErrorReporter.hpp>
 #include <xercesc/validators/schema/XSDLocator.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class DOMElement;
 class XMLValidator;
@@ -317,6 +317,6 @@
     return fSawFatal;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/validators/schema/XSDErrorReporter.cpp b/src/xercesc/validators/schema/XSDErrorReporter.cpp
index 7657dd0..eafc58d 100644
--- a/src/xercesc/validators/schema/XSDErrorReporter.cpp
+++ b/src/xercesc/validators/schema/XSDErrorReporter.cpp
@@ -28,7 +28,7 @@
 #include <xercesc/validators/schema/XSDErrorReporter.hpp>
 #include <xercesc/validators/schema/XSDLocator.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Local static data
@@ -176,4 +176,4 @@
     //    throw (XMLErrs::Codes) toEmit;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/validators/schema/XSDErrorReporter.hpp b/src/xercesc/validators/schema/XSDErrorReporter.hpp
index 39055a5..eb57457 100644
--- a/src/xercesc/validators/schema/XSDErrorReporter.hpp
+++ b/src/xercesc/validators/schema/XSDErrorReporter.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XMemory.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class Locator;
 class XMLErrorReporter;
@@ -110,6 +110,6 @@
     fErrorReporter = errorReporter;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/validators/schema/XSDLocator.cpp b/src/xercesc/validators/schema/XSDLocator.cpp
index 9979609..9cfe9bd 100644
--- a/src/xercesc/validators/schema/XSDLocator.cpp
+++ b/src/xercesc/validators/schema/XSDLocator.cpp
@@ -25,7 +25,7 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/validators/schema/XSDLocator.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  XSDLocator: Constructors and Destructor
@@ -54,4 +54,4 @@
     fPublicId = publicId;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/validators/schema/XSDLocator.hpp b/src/xercesc/validators/schema/XSDLocator.hpp
index 9bc8dd8..a04843e 100644
--- a/src/xercesc/validators/schema/XSDLocator.hpp
+++ b/src/xercesc/validators/schema/XSDLocator.hpp
@@ -29,7 +29,7 @@
 #include <xercesc/util/XMemory.hpp>
 #include <xercesc/sax/Locator.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class VALIDATORS_EXPORT XSDLocator: public XMemory, public Locator
 {
@@ -136,6 +136,6 @@
     return fSystemId;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/validators/schema/XUtil.cpp b/src/xercesc/validators/schema/XUtil.cpp
index 6410d4f..81e284a 100644
--- a/src/xercesc/validators/schema/XUtil.cpp
+++ b/src/xercesc/validators/schema/XUtil.cpp
@@ -32,7 +32,7 @@
 #include <xercesc/dom/DOMNamedNodeMap.hpp>
 #include <xercesc/dom/DOMNode.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // Finds and returns the first child element node.
 DOMElement* XUtil::getFirstChildElement(const DOMNode* const parent)
@@ -122,4 +122,4 @@
     return 0;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/validators/schema/XUtil.hpp b/src/xercesc/validators/schema/XUtil.hpp
index c07e9ed..b407b22 100644
--- a/src/xercesc/validators/schema/XUtil.hpp
+++ b/src/xercesc/validators/schema/XUtil.hpp
@@ -27,7 +27,7 @@
 #include <xercesc/dom/DOMNamedNodeMap.hpp>
 #include <xercesc/dom/DOMNode.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class DOMNode;
 class DOMElement;
@@ -66,6 +66,6 @@
 	~XUtil() {};
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/validators/schema/XercesAttGroupInfo.cpp b/src/xercesc/validators/schema/XercesAttGroupInfo.cpp
index 2e5b60a..7549ec2 100644
--- a/src/xercesc/validators/schema/XercesAttGroupInfo.cpp
+++ b/src/xercesc/validators/schema/XercesAttGroupInfo.cpp
@@ -27,7 +27,7 @@
 
 #include <xercesc/internal/XTemplateSerializer.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  XercesAttGroupInfo: Constructors and Destructor
@@ -173,7 +173,7 @@
 
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file XercesAttGroupInfo.cpp
diff --git a/src/xercesc/validators/schema/XercesAttGroupInfo.hpp b/src/xercesc/validators/schema/XercesAttGroupInfo.hpp
index 93b7ea7..7766c56 100644
--- a/src/xercesc/validators/schema/XercesAttGroupInfo.hpp
+++ b/src/xercesc/validators/schema/XercesAttGroupInfo.hpp
@@ -37,7 +37,7 @@
 
 #include <xercesc/internal/XSerializable.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class VALIDATORS_EXPORT XercesAttGroupInfo : public XSerializable, public XMemory
 {
@@ -247,7 +247,7 @@
     fCompleteWildCard = toSet;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/schema/XercesElementWildcard.cpp b/src/xercesc/validators/schema/XercesElementWildcard.cpp
index a8b8c10..d839224 100644
--- a/src/xercesc/validators/schema/XercesElementWildcard.cpp
+++ b/src/xercesc/validators/schema/XercesElementWildcard.cpp
@@ -25,7 +25,7 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/validators/schema/XercesElementWildcard.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Local methods
@@ -117,4 +117,4 @@
     return false;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/validators/schema/XercesElementWildcard.hpp b/src/xercesc/validators/schema/XercesElementWildcard.hpp
index b47d628..50fe296 100644
--- a/src/xercesc/validators/schema/XercesElementWildcard.hpp
+++ b/src/xercesc/validators/schema/XercesElementWildcard.hpp
@@ -26,7 +26,7 @@
 #include <xercesc/validators/common/ContentSpecNode.hpp>
 #include <xercesc/validators/schema/SubstitutionGroupComparator.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Forward declarations
@@ -75,7 +75,7 @@
     ~XercesElementWildcard();
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif // XERCESELEMENTWILDCARD_HPP
 
diff --git a/src/xercesc/validators/schema/XercesGroupInfo.cpp b/src/xercesc/validators/schema/XercesGroupInfo.cpp
index 29c476e..232a477 100644
--- a/src/xercesc/validators/schema/XercesGroupInfo.cpp
+++ b/src/xercesc/validators/schema/XercesGroupInfo.cpp
@@ -28,7 +28,7 @@
 
 #include <xercesc/internal/XTemplateSerializer.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  XercesGroupInfo: Constructors and Destructor
@@ -132,7 +132,7 @@
 
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file XercesGroupInfo.cpp
diff --git a/src/xercesc/validators/schema/XercesGroupInfo.hpp b/src/xercesc/validators/schema/XercesGroupInfo.hpp
index 3cd1058..dfa879f 100644
--- a/src/xercesc/validators/schema/XercesGroupInfo.hpp
+++ b/src/xercesc/validators/schema/XercesGroupInfo.hpp
@@ -37,7 +37,7 @@
 
 #include <xercesc/internal/XSerializable.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Forward Declarations
@@ -194,7 +194,7 @@
     fCheckElementConsistency = aValue;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/schema/identity/FieldActivator.cpp b/src/xercesc/validators/schema/identity/FieldActivator.cpp
index 8f93dd2..32d7f14 100644
--- a/src/xercesc/validators/schema/identity/FieldActivator.cpp
+++ b/src/xercesc/validators/schema/identity/FieldActivator.cpp
@@ -27,7 +27,7 @@
 #include <xercesc/validators/schema/identity/ValueStoreCache.hpp>
 #include <xercesc/validators/schema/identity/XPathMatcherStack.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  FieldActivator: Constructors and Destructor
@@ -117,7 +117,7 @@
     valueStore->endValueScope();
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file FieldActivator.cpp
diff --git a/src/xercesc/validators/schema/identity/FieldActivator.hpp b/src/xercesc/validators/schema/identity/FieldActivator.hpp
index 6e9dda3..51ce4f1 100644
--- a/src/xercesc/validators/schema/identity/FieldActivator.hpp
+++ b/src/xercesc/validators/schema/identity/FieldActivator.hpp
@@ -32,7 +32,7 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/util/ValueHashTableOf.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Forward Declaration
@@ -132,7 +132,7 @@
     fMayMatch->put(field, value);
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/schema/identity/FieldValueMap.cpp b/src/xercesc/validators/schema/identity/FieldValueMap.cpp
index b3cf34f..2605d8d 100644
--- a/src/xercesc/validators/schema/identity/FieldValueMap.cpp
+++ b/src/xercesc/validators/schema/identity/FieldValueMap.cpp
@@ -26,7 +26,7 @@
 #include <xercesc/util/Janitor.hpp>
 #include <xercesc/util/OutOfMemoryException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 typedef JanitorMemFunCall<FieldValueMap>    CleanupType;
 
@@ -119,7 +119,7 @@
         fValues->removeAllElements();
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file FieldValueMap.cpp
diff --git a/src/xercesc/validators/schema/identity/FieldValueMap.hpp b/src/xercesc/validators/schema/identity/FieldValueMap.hpp
index dd39eb7..cc07fdc 100644
--- a/src/xercesc/validators/schema/identity/FieldValueMap.hpp
+++ b/src/xercesc/validators/schema/identity/FieldValueMap.hpp
@@ -34,7 +34,7 @@
 #include <xercesc/util/ValueVectorOf.hpp>
 #include <xercesc/util/RefArrayVectorOf.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Forward Declaration
@@ -188,7 +188,7 @@
     }
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/schema/identity/IC_Field.cpp b/src/xercesc/validators/schema/identity/IC_Field.cpp
index ef56740..7aad692 100644
--- a/src/xercesc/validators/schema/identity/IC_Field.cpp
+++ b/src/xercesc/validators/schema/identity/IC_Field.cpp
@@ -28,7 +28,7 @@
 #include <xercesc/validators/schema/identity/XercesXPath.hpp>
 #include <xercesc/validators/schema/identity/IdentityConstraint.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  FieldMatcher: Constructors and Destructor
@@ -133,7 +133,7 @@
 {
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file IC_Field.cpp
diff --git a/src/xercesc/validators/schema/identity/IC_Field.hpp b/src/xercesc/validators/schema/identity/IC_Field.hpp
index ccb4e82..a33bef6 100644
--- a/src/xercesc/validators/schema/identity/IC_Field.hpp
+++ b/src/xercesc/validators/schema/identity/IC_Field.hpp
@@ -30,7 +30,7 @@
 
 #include <xercesc/internal/XSerializable.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Forward Declaration
@@ -142,7 +142,7 @@
     FieldActivator* fFieldActivator;
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/schema/identity/IC_Key.cpp b/src/xercesc/validators/schema/identity/IC_Key.cpp
index 88502bf..050ebb6 100644
--- a/src/xercesc/validators/schema/identity/IC_Key.cpp
+++ b/src/xercesc/validators/schema/identity/IC_Key.cpp
@@ -24,7 +24,7 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/validators/schema/identity/IC_Key.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  IC_Key: Constructors and Destructor
@@ -59,7 +59,7 @@
 {
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file IC_Key.cpp
diff --git a/src/xercesc/validators/schema/identity/IC_Key.hpp b/src/xercesc/validators/schema/identity/IC_Key.hpp
index 8d476bc..504c55e 100644
--- a/src/xercesc/validators/schema/identity/IC_Key.hpp
+++ b/src/xercesc/validators/schema/identity/IC_Key.hpp
@@ -28,7 +28,7 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/validators/schema/identity/IdentityConstraint.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class VALIDATORS_EXPORT IC_Key: public IdentityConstraint
 {
@@ -70,7 +70,7 @@
     return IdentityConstraint::ICType_KEY;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/schema/identity/IC_KeyRef.cpp b/src/xercesc/validators/schema/identity/IC_KeyRef.cpp
index d15e9a7..2afcbbf 100644
--- a/src/xercesc/validators/schema/identity/IC_KeyRef.cpp
+++ b/src/xercesc/validators/schema/identity/IC_KeyRef.cpp
@@ -24,7 +24,7 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/validators/schema/identity/IC_KeyRef.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  IC_KeyRef: Constructors and Destructor
@@ -70,7 +70,7 @@
 {
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file IC_KeyRef.cpp
diff --git a/src/xercesc/validators/schema/identity/IC_KeyRef.hpp b/src/xercesc/validators/schema/identity/IC_KeyRef.hpp
index cdc8b1a..f1501b7 100644
--- a/src/xercesc/validators/schema/identity/IC_KeyRef.hpp
+++ b/src/xercesc/validators/schema/identity/IC_KeyRef.hpp
@@ -28,7 +28,7 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/validators/schema/identity/IdentityConstraint.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class VALIDATORS_EXPORT IC_KeyRef: public IdentityConstraint
 {
@@ -82,7 +82,7 @@
     return fKey;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/schema/identity/IC_Selector.cpp b/src/xercesc/validators/schema/identity/IC_Selector.cpp
index 29c006e..ed62330 100644
--- a/src/xercesc/validators/schema/identity/IC_Selector.cpp
+++ b/src/xercesc/validators/schema/identity/IC_Selector.cpp
@@ -28,7 +28,7 @@
 #include <xercesc/validators/schema/identity/IdentityConstraint.hpp>
 #include <xercesc/validators/schema/identity/FieldActivator.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  SelectorMatcher: Constructors and Destructor
@@ -194,7 +194,7 @@
 {
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file IC_Selector.cpp
diff --git a/src/xercesc/validators/schema/identity/IC_Selector.hpp b/src/xercesc/validators/schema/identity/IC_Selector.hpp
index a74d310..9ec5764 100644
--- a/src/xercesc/validators/schema/identity/IC_Selector.hpp
+++ b/src/xercesc/validators/schema/identity/IC_Selector.hpp
@@ -30,7 +30,7 @@
 
 #include <xercesc/internal/XSerializable.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Forward Declaration
@@ -145,7 +145,7 @@
     FieldActivator* fFieldActivator;
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/schema/identity/IC_Unique.cpp b/src/xercesc/validators/schema/identity/IC_Unique.cpp
index 2b15ee8..a12fd8c 100644
--- a/src/xercesc/validators/schema/identity/IC_Unique.cpp
+++ b/src/xercesc/validators/schema/identity/IC_Unique.cpp
@@ -24,7 +24,7 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/validators/schema/identity/IC_Unique.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  IC_Unique: Constructors and Destructor
@@ -59,7 +59,7 @@
 {
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file IC_Unique.cpp
diff --git a/src/xercesc/validators/schema/identity/IC_Unique.hpp b/src/xercesc/validators/schema/identity/IC_Unique.hpp
index 267fb28..6ca29c0 100644
--- a/src/xercesc/validators/schema/identity/IC_Unique.hpp
+++ b/src/xercesc/validators/schema/identity/IC_Unique.hpp
@@ -32,7 +32,7 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/validators/schema/identity/IdentityConstraint.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class VALIDATORS_EXPORT IC_Unique: public IdentityConstraint
 {
@@ -74,7 +74,7 @@
     return IdentityConstraint::ICType_UNIQUE;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/schema/identity/IdentityConstraint.cpp b/src/xercesc/validators/schema/identity/IdentityConstraint.cpp
index 958c2a3..2fe9094 100644
--- a/src/xercesc/validators/schema/identity/IdentityConstraint.cpp
+++ b/src/xercesc/validators/schema/identity/IdentityConstraint.cpp
@@ -37,7 +37,7 @@
 
 #include <xercesc/internal/XTemplateSerializer.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 typedef JanitorMemFunCall<IdentityConstraint>   CleanupType;
 
@@ -218,7 +218,7 @@
 
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file IdentityConstraint.cpp
diff --git a/src/xercesc/validators/schema/identity/IdentityConstraint.hpp b/src/xercesc/validators/schema/identity/IdentityConstraint.hpp
index f0c1859..dea3437 100644
--- a/src/xercesc/validators/schema/identity/IdentityConstraint.hpp
+++ b/src/xercesc/validators/schema/identity/IdentityConstraint.hpp
@@ -35,7 +35,7 @@
 
 #include <xercesc/internal/XSerializable.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Forward Declarations
@@ -213,7 +213,7 @@
     return 0;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/schema/identity/IdentityConstraintHandler.cpp b/src/xercesc/validators/schema/identity/IdentityConstraintHandler.cpp
index 5a08684..fa83a9a 100644
--- a/src/xercesc/validators/schema/identity/IdentityConstraintHandler.cpp
+++ b/src/xercesc/validators/schema/identity/IdentityConstraintHandler.cpp
@@ -32,7 +32,7 @@
 
 #include <xercesc/util/OutOfMemoryException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 typedef JanitorMemFunCall<IdentityConstraintHandler>    CleanupType;
 
@@ -207,7 +207,7 @@
     fMatcherStack->clear();
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file IdentityConstraintHandler.cpp
diff --git a/src/xercesc/validators/schema/identity/IdentityConstraintHandler.hpp b/src/xercesc/validators/schema/identity/IdentityConstraintHandler.hpp
index 75eb2c2..d4ebc8d 100644
--- a/src/xercesc/validators/schema/identity/IdentityConstraintHandler.hpp
+++ b/src/xercesc/validators/schema/identity/IdentityConstraintHandler.hpp
@@ -28,7 +28,7 @@
 #include <xercesc/validators/schema/identity/ValueStoreCache.hpp>
 #include <xercesc/validators/schema/identity/XPathMatcherStack.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Forward Declarations
@@ -149,7 +149,7 @@
     return fMatcherStack->getMatcherCount();
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/schema/identity/ValueStore.cpp b/src/xercesc/validators/schema/identity/ValueStore.cpp
index 0e0b269..2391601 100644
--- a/src/xercesc/validators/schema/identity/ValueStore.cpp
+++ b/src/xercesc/validators/schema/identity/ValueStore.cpp
@@ -31,7 +31,7 @@
 #include <xercesc/validators/schema/identity/IC_KeyRef.hpp>
 #include <xercesc/validators/schema/identity/ValueStoreCache.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 //
 // ---------------------------------------------------------------------------
@@ -344,7 +344,7 @@
     }
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file ValueStore.cpp
diff --git a/src/xercesc/validators/schema/identity/ValueStore.hpp b/src/xercesc/validators/schema/identity/ValueStore.hpp
index 9dda3e9..0c9f19e 100644
--- a/src/xercesc/validators/schema/identity/ValueStore.hpp
+++ b/src/xercesc/validators/schema/identity/ValueStore.hpp
@@ -34,7 +34,7 @@
 #include <xercesc/validators/schema/identity/FieldValueMap.hpp>
 #include <xercesc/util/RefHashTableOf.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Forward Declaration
@@ -136,7 +136,7 @@
     return fIdentityConstraint;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/schema/identity/ValueStoreCache.cpp b/src/xercesc/validators/schema/identity/ValueStoreCache.cpp
index af1a33c..f3f9dc6 100644
--- a/src/xercesc/validators/schema/identity/ValueStoreCache.cpp
+++ b/src/xercesc/validators/schema/identity/ValueStoreCache.cpp
@@ -27,7 +27,7 @@
 #include <xercesc/validators/schema/SchemaElementDecl.hpp>
 #include <xercesc/util/OutOfMemoryException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 typedef JanitorMemFunCall<ValueStoreCache>    CleanupType;
 
@@ -177,7 +177,7 @@
     }
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file ValueStoreCache.cpp
diff --git a/src/xercesc/validators/schema/identity/ValueStoreCache.hpp b/src/xercesc/validators/schema/identity/ValueStoreCache.hpp
index cf02064..f468b70 100644
--- a/src/xercesc/validators/schema/identity/ValueStoreCache.hpp
+++ b/src/xercesc/validators/schema/identity/ValueStoreCache.hpp
@@ -50,7 +50,7 @@
 #include <xercesc/validators/schema/identity/IdentityConstraint.hpp>
 #include <xercesc/validators/schema/identity/IC_Field.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Forward Declaration
@@ -163,7 +163,7 @@
 inline void ValueStoreCache::endDocument() {
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/schema/identity/XPathException.hpp b/src/xercesc/validators/schema/identity/XPathException.hpp
index 45c184a..af8cdac 100644
--- a/src/xercesc/validators/schema/identity/XPathException.hpp
+++ b/src/xercesc/validators/schema/identity/XPathException.hpp
@@ -25,10 +25,10 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/util/XMLException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 MakeXMLException(XPathException, VALIDATORS_EXPORT)
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/src/xercesc/validators/schema/identity/XPathMatcher.cpp b/src/xercesc/validators/schema/identity/XPathMatcher.cpp
index 6ec4f9a..1c797c1 100644
--- a/src/xercesc/validators/schema/identity/XPathMatcher.cpp
+++ b/src/xercesc/validators/schema/identity/XPathMatcher.cpp
@@ -31,7 +31,7 @@
 #include <xercesc/util/OutOfMemoryException.hpp>
 #include <xercesc/framework/ValidationContext.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 typedef JanitorMemFunCall<XPathMatcher>     CleanupType;
 
@@ -405,7 +405,7 @@
     return 0; // to make some compilers happy
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file XPathMatcher.cpp
diff --git a/src/xercesc/validators/schema/identity/XPathMatcher.hpp b/src/xercesc/validators/schema/identity/XPathMatcher.hpp
index 6d37731..ed7ef0c 100644
--- a/src/xercesc/validators/schema/identity/XPathMatcher.hpp
+++ b/src/xercesc/validators/schema/identity/XPathMatcher.hpp
@@ -30,7 +30,7 @@
 #include <xercesc/util/RefVectorOf.hpp>
 #include <xercesc/framework/XMLBuffer.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Forward Declaration
@@ -173,7 +173,7 @@
     delete fStepIndexes;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/schema/identity/XPathMatcherStack.cpp b/src/xercesc/validators/schema/identity/XPathMatcherStack.cpp
index b67f179..26d6802 100644
--- a/src/xercesc/validators/schema/identity/XPathMatcherStack.cpp
+++ b/src/xercesc/validators/schema/identity/XPathMatcherStack.cpp
@@ -26,7 +26,7 @@
 #include <xercesc/util/Janitor.hpp>
 #include <xercesc/util/OutOfMemoryException.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 typedef JanitorMemFunCall<XPathMatcherStack>    CleanupType;
 
@@ -78,7 +78,7 @@
     fMatchersCount = 0;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file XPathMatcherStack.cpp
diff --git a/src/xercesc/validators/schema/identity/XPathMatcherStack.hpp b/src/xercesc/validators/schema/identity/XPathMatcherStack.hpp
index 46561f3..a77d71d 100644
--- a/src/xercesc/validators/schema/identity/XPathMatcherStack.hpp
+++ b/src/xercesc/validators/schema/identity/XPathMatcherStack.hpp
@@ -28,7 +28,7 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/validators/schema/identity/XPathMatcher.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class VALIDATORS_EXPORT XPathMatcherStack : public XMemory
 {
@@ -129,7 +129,7 @@
     }
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/schema/identity/XPathSymbols.cpp b/src/xercesc/validators/schema/identity/XPathSymbols.cpp
index c3951e9..55ba2d1 100644
--- a/src/xercesc/validators/schema/identity/XPathSymbols.cpp
+++ b/src/xercesc/validators/schema/identity/XPathSymbols.cpp
@@ -26,7 +26,7 @@
 #include <xercesc/util/XMLUniDefs.hpp>
 #include <xercesc/validators/schema/identity/XPathSymbols.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  SchemaSymbols: Static data
@@ -153,7 +153,7 @@
     chLatin_s, chLatin_e, chLatin_l, chLatin_f, chNull
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file XPathSymbols.cpp
diff --git a/src/xercesc/validators/schema/identity/XPathSymbols.hpp b/src/xercesc/validators/schema/identity/XPathSymbols.hpp
index c1ce1ac..91b3ef3 100644
--- a/src/xercesc/validators/schema/identity/XPathSymbols.hpp
+++ b/src/xercesc/validators/schema/identity/XPathSymbols.hpp
@@ -24,7 +24,7 @@
 
 #include <xercesc/util/XercesDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 /*
  * Collection of symbols used to parse a Schema Grammar
@@ -65,7 +65,7 @@
     XPathSymbols();
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/validators/schema/identity/XercesXPath.cpp b/src/xercesc/validators/schema/identity/XercesXPath.cpp
index 8b2be70..032a6d0 100644
--- a/src/xercesc/validators/schema/identity/XercesXPath.cpp
+++ b/src/xercesc/validators/schema/identity/XercesXPath.cpp
@@ -35,7 +35,7 @@
 
 #include <xercesc/internal/XTemplateSerializer.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 // ---------------------------------------------------------------------------
@@ -1453,7 +1453,7 @@
     ThrowXMLwithMemMgr(XPathException, XMLExcepts::XPath_TokenNotSupported, tokens->getMemoryManager());
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 /**
   * End of file XercesPath.cpp
diff --git a/src/xercesc/validators/schema/identity/XercesXPath.hpp b/src/xercesc/validators/schema/identity/XercesXPath.hpp
index d93cfd2..099b400 100644
--- a/src/xercesc/validators/schema/identity/XercesXPath.hpp
+++ b/src/xercesc/validators/schema/identity/XercesXPath.hpp
@@ -32,7 +32,7 @@
 #include <xercesc/validators/schema/NamespaceScope.hpp>
 #include <xercesc/internal/XSerializable.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Forward Declarations
@@ -489,7 +489,7 @@
     return fExpression;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
 
diff --git a/src/xercesc/xinclude/XIncludeDOMDocumentProcessor.cpp b/src/xercesc/xinclude/XIncludeDOMDocumentProcessor.cpp
index dd7b29e..23266ff 100644
--- a/src/xercesc/xinclude/XIncludeDOMDocumentProcessor.cpp
+++ b/src/xercesc/xinclude/XIncludeDOMDocumentProcessor.cpp
@@ -29,7 +29,7 @@
 #include <xercesc/util/XMLUniDefs.hpp>
 #include <xercesc/framework/XMLErrorReporter.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 DOMDocument *
 XIncludeDOMDocumentProcessor::doXIncludeDOMProcess(const DOMDocument * const source, XMLErrorReporter *errorHandler, XMLEntityHandler* entityResolver /*=NULL*/){
@@ -77,4 +77,4 @@
     return xincludedDocument;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/xinclude/XIncludeDOMDocumentProcessor.hpp b/src/xercesc/xinclude/XIncludeDOMDocumentProcessor.hpp
index 725976c..bd35e13 100644
--- a/src/xercesc/xinclude/XIncludeDOMDocumentProcessor.hpp
+++ b/src/xercesc/xinclude/XIncludeDOMDocumentProcessor.hpp
@@ -26,7 +26,7 @@
 #include <xercesc/dom/DOM.hpp>
 #include <xercesc/framework/XMLErrorReporter.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLEntityHandler;
 
@@ -52,7 +52,7 @@
     DOMDocument *doXIncludeDOMProcess(const DOMDocument * const source, XMLErrorReporter *errorHandler, XMLEntityHandler* entityResolver=NULL);
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif /* XINCLUDEDOMDOCUMENTPROCESSOR_HPP */
 
diff --git a/src/xercesc/xinclude/XIncludeLocation.cpp b/src/xercesc/xinclude/XIncludeLocation.cpp
index edd5e68..a5b847f 100644
--- a/src/xercesc/xinclude/XIncludeLocation.cpp
+++ b/src/xercesc/xinclude/XIncludeLocation.cpp
@@ -27,7 +27,7 @@
 #include <xercesc/dom/DOM.hpp>
 #include <xercesc/util/XMLUniDefs.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 const XMLCh *allocate(const XMLCh *href){
     XMLCh *allocated;
@@ -138,4 +138,4 @@
     return URI;
 }
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/xinclude/XIncludeLocation.hpp b/src/xercesc/xinclude/XIncludeLocation.hpp
index 8648c0e..58eb72a 100644
--- a/src/xercesc/xinclude/XIncludeLocation.hpp
+++ b/src/xercesc/xinclude/XIncludeLocation.hpp
@@ -25,7 +25,7 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/dom/DOM.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 
 /**
@@ -83,7 +83,7 @@
     const XMLCh *fHref;
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif /* XINCLUDELOCATION_HPP */
 
diff --git a/src/xercesc/xinclude/XIncludeUtils.cpp b/src/xercesc/xinclude/XIncludeUtils.cpp
index 314e496..258c17e 100644
--- a/src/xercesc/xinclude/XIncludeUtils.cpp
+++ b/src/xercesc/xinclude/XIncludeUtils.cpp
@@ -34,7 +34,7 @@
 #include <xercesc/sax/InputSource.hpp>
 #include <xercesc/framework/URLInputSource.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 // ---------------------------------------------------------------------------
 //  Local static data
@@ -857,4 +857,4 @@
     chLatin_x, chLatin_m, chLatin_l, chColon, chLatin_b, chLatin_a, chLatin_s, chLatin_e, chNull
 };
 
-XERCES_CPP_NAMESPACE_END
+}
diff --git a/src/xercesc/xinclude/XIncludeUtils.hpp b/src/xercesc/xinclude/XIncludeUtils.hpp
index b740976..e57ab56 100644
--- a/src/xercesc/xinclude/XIncludeUtils.hpp
+++ b/src/xercesc/xinclude/XIncludeUtils.hpp
@@ -31,7 +31,7 @@
 #include <xercesc/xinclude/XIncludeLocation.hpp>
 #include <xercesc/framework/XMLErrorCodes.hpp>
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 
 class XMLEntityHandler;
 
@@ -262,6 +262,6 @@
     friend class AbstractDOMParser;
 };
 
-XERCES_CPP_NAMESPACE_END
+}
 
 #endif
diff --git a/tests/src/DOM/DOMMemTest/DOMMemTest.cpp b/tests/src/DOM/DOMMemTest/DOMMemTest.cpp
index c6271cf..644034e 100644
--- a/tests/src/DOM/DOMMemTest/DOMMemTest.cpp
+++ b/tests/src/DOM/DOMMemTest/DOMMemTest.cpp
@@ -24,8 +24,8 @@
  * $Id$
  */
 
-#include <stdio.h>
-#include <string.h>
+#include <cstdio>
+#include <cstring>
 #include <xercesc/dom/DOM.hpp>
 #include <xercesc/util/PlatformUtils.hpp>
 #include <xercesc/util/XMLException.hpp>
@@ -33,7 +33,7 @@
 #include <xercesc/util/XMLUniDefs.hpp>
 
 
-XERCES_CPP_NAMESPACE_USE
+using namespace XERCES_CPP_NAMESPACE;
 
 bool errorOccurred = false;
 
diff --git a/tests/src/DOM/DOMTest/DTest.cpp b/tests/src/DOM/DOMTest/DTest.cpp
index 99c8b97..2980ca6 100644
--- a/tests/src/DOM/DOMTest/DTest.cpp
+++ b/tests/src/DOM/DOMTest/DTest.cpp
@@ -27,7 +27,7 @@
  *
  */
 
-#include <stdio.h>
+#include <cstdio>
 #include "DTest.h"
 #include <xercesc/util/PlatformUtils.hpp>
 #include <xercesc/util/XMLException.hpp>
diff --git a/tests/src/DOM/DOMTest/DTest.h b/tests/src/DOM/DOMTest/DTest.h
index 18ea6af..2b7a2bf 100644
--- a/tests/src/DOM/DOMTest/DTest.h
+++ b/tests/src/DOM/DOMTest/DTest.h
@@ -32,11 +32,11 @@
 //  define null for compatibility with original Java source code.
 #define null 0
 
-XERCES_CPP_NAMESPACE_USE
+using namespace XERCES_CPP_NAMESPACE;
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 class XercesDOMParser;
-XERCES_CPP_NAMESPACE_END
+}
 
 
 class DOMTest {
diff --git a/tests/src/DOM/Normalizer/Normalizer.cpp b/tests/src/DOM/Normalizer/Normalizer.cpp
index 204f28e..c605a40 100644
--- a/tests/src/DOM/Normalizer/Normalizer.cpp
+++ b/tests/src/DOM/Normalizer/Normalizer.cpp
@@ -21,11 +21,7 @@
 #include <xercesc/framework/XMLBuffer.hpp>
 #include <xercesc/parsers/XercesDOMParser.hpp>
 
-#if defined(XERCES_NEW_IOSTREAMS)
 #include <iostream>
-#else
-#include <iostream.h>
-#endif
 
 #include <xercesc/util/XMLUni.hpp>
 #include <xercesc/util/XMLUniDefs.hpp>
@@ -128,9 +124,9 @@
 
     catch(const XMLException &toCatch)
     {
-        XERCES_STD_QUALIFIER cerr << "Error during Xerces-c Initialization.\n"
+        std::cerr << "Error during Xerces-c Initialization.\n"
              << "  Exception message:"
-             << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl;
+             << StrX(toCatch.getMessage()) << std::endl;
     }
     parser = 0;
 
@@ -146,13 +142,13 @@
 
     while(child != 0) {
         if(child->getNodeType() == DOMNode::ENTITY_REFERENCE_NODE) {
-            XERCES_STD_QUALIFIER cout << "start of entity ref node" << XERCES_STD_QUALIFIER endl;
+            std::cout << "start of entity ref node" << std::endl;
             DOMNode *entChild = ((DOMEntityReference*)child)->getFirstChild();
             while(entChild != 0) {
                 serializeNode(entChild);
                 entChild = entChild->getNextSibling();
             }
-            XERCES_STD_QUALIFIER cout << "\nend of entity ref node\n\n" << XERCES_STD_QUALIFIER endl;
+            std::cout << "\nend of entity ref node\n\n" << std::endl;
 
         }
 
@@ -170,20 +166,20 @@
 {
     // Display whatever error message passed from the serializer
     if (domError.getSeverity() == DOMError::DOM_SEVERITY_WARNING)
-        XERCES_STD_QUALIFIER cerr << "\nWarning Message: ";
+        std::cerr << "\nWarning Message: ";
     else if (domError.getSeverity() == DOMError::DOM_SEVERITY_ERROR)
-        XERCES_STD_QUALIFIER cerr << "\nError Message: ";
+        std::cerr << "\nError Message: ";
     else
-        XERCES_STD_QUALIFIER cerr << "\nFatal Message: ";
+        std::cerr << "\nFatal Message: ";
 
     char *msg = XMLString::transcode(domError.getMessage());
-    XERCES_STD_QUALIFIER cerr<< msg <<XERCES_STD_QUALIFIER endl;
+    std::cerr<< msg <<std::endl;
     XMLString::release(&msg);
 
-    XERCES_STD_QUALIFIER cerr << "Related data ";
+    std::cerr << "Related data ";
 
     msg = XMLString::transcode(((DOMNode*)domError.getRelatedData())->getNodeName());
-    XERCES_STD_QUALIFIER cerr << msg <<XERCES_STD_QUALIFIER endl;
+    std::cerr << msg <<std::endl;
     XMLString::release(&msg);
 
 
@@ -235,20 +231,20 @@
     //create default ns
     doc->normalizeDocument();
     normalizer->serializeNode(doc);
-    XERCES_STD_QUALIFIER cout << "\n\n";
+    std::cout << "\n\n";
 
     //add in binding
     docFirstElement->setPrefix(X("po"));
     doc->normalizeDocument();
     normalizer->serializeNode(doc);
-    XERCES_STD_QUALIFIER cout << "\n\n";
+    std::cout << "\n\n";
 
     //use default
     DOMElement* docFirstElementChildChild = doc->createElementNS(X("http://www.test2.com"),X("docEleChildChild"));
     docFirstElementChild->appendChild(docFirstElementChildChild);
     doc->normalizeDocument();
     normalizer->serializeNode(doc);
-    XERCES_STD_QUALIFIER cout << "\n\n";
+    std::cout << "\n\n";
 
     // this block is needed to destroy the XMLBuffer
     {
@@ -263,7 +259,7 @@
         docFirstElementChild->setPrefix(X("po2"));
         doc->normalizeDocument();
         normalizer->serializeNode(doc);
-        XERCES_STD_QUALIFIER cout << "\n\n";
+        std::cout << "\n\n";
     }
 
     //some siblngs to ensure the scope stacks are working
@@ -275,13 +271,13 @@
     docFirstElementChild->appendChild(docFirstElementChildChild);
     doc->normalizeDocument();
     normalizer->serializeNode(doc);
-    XERCES_STD_QUALIFIER cout << "\n\n";
+    std::cout << "\n\n";
 
     //conflicting prefix
     docFirstElementChildChild->setAttributeNS(XMLUni::fgXMLNSURIName, X("po4"), X("conflict"));
     doc->normalizeDocument();
     normalizer->serializeNode(doc);
-    XERCES_STD_QUALIFIER cout << "\n\n";
+    std::cout << "\n\n";
 
     //conflicting default
     docFirstElementChildChild = doc->createElementNS(X("http://www.test4.com"),X("docEleChildChild5"));
@@ -289,14 +285,14 @@
     docFirstElementChildChild->setAttributeNS(XMLUni::fgXMLNSURIName, XMLUni::fgXMLNSString, X("conflict"));
     doc->normalizeDocument();
     normalizer->serializeNode(doc);
-    XERCES_STD_QUALIFIER cout << "\n\n";
+    std::cout << "\n\n";
 
     //set the xmlns to ""
     DOMElement *noNamespaceEle = doc->createElementNS(X(""),X("noNamespace"));
     docFirstElementChildChild->appendChild(noNamespaceEle);
     doc->normalizeDocument();
     normalizer->serializeNode(doc);
-    XERCES_STD_QUALIFIER cout << "\n\n";
+    std::cout << "\n\n";
 
 
     //now lets do a bit off attribute testing on the doc ele
@@ -309,7 +305,7 @@
     docFirstElement->setAttributeNS(X("http://testattr3.com"), X("po3:attr7"), X("value"));
     doc->normalizeDocument();
     normalizer->serializeNode(doc);
-    XERCES_STD_QUALIFIER cout << "\n\n";
+    std::cout << "\n\n";
 
     //and now on one of its children
     docFirstElementChildChild->setAttributeNS(X("http://testattr.com"), X("attr1"), X("value"));
@@ -331,7 +327,7 @@
 
     doc->normalizeDocument();
     normalizer->serializeNode(doc);
-    XERCES_STD_QUALIFIER cout << "\n\n";
+    std::cout << "\n\n";
 
 
     //2 prefix with the same uri
@@ -343,7 +339,7 @@
     docFirstElementChildChild->setAttributeNS(X("http://www.uri1.com"), X("uri1b:attr2"), X("value"));
     doc->normalizeDocument();
     normalizer->serializeNode(doc);
-    XERCES_STD_QUALIFIER cout << "\n\n";
+    std::cout << "\n\n";
 
     //check to see we use the nearest binding and for more inheritence
     DOMElement *docFirstElementChildChildChild = doc->createElementNS(X("http://www.uri1.com"),X("docEleChildChildChild"));
@@ -353,7 +349,7 @@
     docFirstElementChildChildChild->setAttributeNS(X("http://www.test.com"), X("attr1"), X("value"));
     doc->normalizeDocument();
     normalizer->serializeNode(doc);
-    XERCES_STD_QUALIFIER cout << "\n\n";
+    std::cout << "\n\n";
 
 
     //NS1.1 stuff
@@ -374,7 +370,7 @@
 
 
     //check error conditions
-    XERCES_STD_QUALIFIER cout << "error conditions" << XERCES_STD_QUALIFIER endl;
+    std::cout << "error conditions" << std::endl;
 
     DOMConfiguration *conf = doc->getDOMConfig();
     conf->setParameter(XMLUni::fgDOMErrorHandler, normalizer);
diff --git a/tests/src/DOM/Normalizer/Normalizer.hpp b/tests/src/DOM/Normalizer/Normalizer.hpp
index e906f0b..8def995 100644
--- a/tests/src/DOM/Normalizer/Normalizer.hpp
+++ b/tests/src/DOM/Normalizer/Normalizer.hpp
@@ -21,11 +21,11 @@
 #include <xercesc/dom/DOM.hpp>
 #include <xercesc/dom/DOMErrorHandler.hpp>
 
-XERCES_CPP_NAMESPACE_USE
+using namespace XERCES_CPP_NAMESPACE;
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 class XercesDOMParser;
-XERCES_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/tests/src/DOM/RangeTest/RangeTest.cpp b/tests/src/DOM/RangeTest/RangeTest.cpp
index 6b1a7bd..e02406b 100644
--- a/tests/src/DOM/RangeTest/RangeTest.cpp
+++ b/tests/src/DOM/RangeTest/RangeTest.cpp
@@ -28,7 +28,7 @@
  *  corner cases.
  */
 
-#include <stdio.h>
+#include <cstdio>
 #include <xercesc/dom/DOM.hpp>
 #include <xercesc/util/PlatformUtils.hpp>
 #include <xercesc/util/XMLException.hpp>
@@ -38,7 +38,7 @@
 #include <xercesc/dom/DOMRange.hpp>
 
 
-XERCES_CPP_NAMESPACE_USE
+using namespace XERCES_CPP_NAMESPACE;
 
 bool errorOccurred = false;
 
diff --git a/tests/src/DOM/Traversal/Traversal.cpp b/tests/src/DOM/Traversal/Traversal.cpp
index 1cc1c59..e36d93f 100644
--- a/tests/src/DOM/Traversal/Traversal.cpp
+++ b/tests/src/DOM/Traversal/Traversal.cpp
@@ -29,8 +29,8 @@
  * $Id$
  */
 
-#include <stdio.h>
-#include <string.h>
+#include <cstdio>
+#include <cstring>
 #include <xercesc/dom/DOM.hpp>
 #include <xercesc/util/PlatformUtils.hpp>
 #include <xercesc/util/XMLException.hpp>
@@ -38,7 +38,7 @@
 #include <xercesc/util/XMLUniDefs.hpp>
 
 
-XERCES_CPP_NAMESPACE_USE
+using namespace XERCES_CPP_NAMESPACE;
 
 bool errorOccurred = false;
 
diff --git a/tests/src/DOM/TypeInfo/TypeInfo.cpp b/tests/src/DOM/TypeInfo/TypeInfo.cpp
index a56bbee..a1bed95 100644
--- a/tests/src/DOM/TypeInfo/TypeInfo.cpp
+++ b/tests/src/DOM/TypeInfo/TypeInfo.cpp
@@ -25,29 +25,25 @@
 #include <xercesc/dom/DOM.hpp>
 #include <xercesc/validators/schema/SchemaSymbols.hpp>
 
-#if defined(XERCES_NEW_IOSTREAMS)
 #include <iostream>
-#else
-#include <iostream.h>
-#endif
 
 #define UNUSED(x) { if(x!=0){} }
 
 #define DOMTYPEINFOTEST(info, type, uri, line) \
     tmp = XMLString::equals(info->getTypeName(), type) && XMLString::equals(info->getTypeNamespace(), uri);\
     if(!tmp) { \
-      XERCES_STD_QUALIFIER cerr << "DOMTypeInfo test failed at line, " << line << "\nExpected values : typename '" << XMLString::transcode((XMLCh*)type) << "', uri '" << XMLString::transcode((XMLCh*)uri); \
-      XERCES_STD_QUALIFIER cerr << "'\nActual values   : typename '"; \
+      std::cerr << "DOMTypeInfo test failed at line, " << line << "\nExpected values : typename '" << XMLString::transcode((XMLCh*)type) << "', uri '" << XMLString::transcode((XMLCh*)uri); \
+      std::cerr << "'\nActual values   : typename '"; \
       if(info->getTypeName())   \
-        XERCES_STD_QUALIFIER cerr << XMLString::transcode(info->getTypeName());  \
+        std::cerr << XMLString::transcode(info->getTypeName());  \
       else \
-        XERCES_STD_QUALIFIER cerr << "(null)"; \
-      XERCES_STD_QUALIFIER cerr << "', uri '"; \
+        std::cerr << "(null)"; \
+      std::cerr << "', uri '"; \
       if(info->getTypeNamespace())   \
-        XERCES_STD_QUALIFIER cerr << XMLString::transcode(info->getTypeNamespace()); \
+        std::cerr << XMLString::transcode(info->getTypeNamespace()); \
       else \
-        XERCES_STD_QUALIFIER cerr << "(null)"; \
-      XERCES_STD_QUALIFIER cerr << "'\n" << XERCES_STD_QUALIFIER endl; \
+        std::cerr << "(null)"; \
+      std::cerr << "'\n" << std::endl; \
       passed = false; \
     }
 
@@ -145,9 +141,9 @@
 
     catch(const XMLException &toCatch)
     {
-        XERCES_STD_QUALIFIER cerr << "Error during Xerces-c Initialization.\n"
+        std::cerr << "Error during Xerces-c Initialization.\n"
              << "  Exception message:"
-             << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl;
+             << StrX(toCatch.getMessage()) << std::endl;
     }
     parser = 0;
 }
@@ -843,7 +839,7 @@
         ti.doc = ti.parser->getDocument();
     }
     catch (...) {
-        XERCES_STD_QUALIFIER cerr << "parsing data/TypeInfo.xml failed at line" <<  __LINE__ << XERCES_STD_QUALIFIER endl;
+        std::cerr << "parsing data/TypeInfo.xml failed at line" <<  __LINE__ << std::endl;
         delete ti.parser;
         return false;
     }
@@ -861,7 +857,7 @@
         passed &= ti.testInvaild();
     }
     else
-        XERCES_STD_QUALIFIER cout << "DOMTypeInfo test at line " << __LINE__ << "was not carried out" << XERCES_STD_QUALIFIER endl;
+        std::cout << "DOMTypeInfo test at line " << __LINE__ << "was not carried out" << std::endl;
 
     delete ti.parser;
 
@@ -877,7 +873,7 @@
         ti.doc = ti.parser->getDocument();
     }
     catch (...) {
-        XERCES_STD_QUALIFIER cerr << "parsing data/TypeInfoNoDTD.xml failed at line" <<  __LINE__ << XERCES_STD_QUALIFIER endl;
+        std::cerr << "parsing data/TypeInfoNoDTD.xml failed at line" <<  __LINE__ << std::endl;
         delete ti.parser;
         return false;
     }
@@ -895,7 +891,7 @@
         passed &= ti.testInvaild();
     }
     else
-        XERCES_STD_QUALIFIER cout << "DOMTypeInfo test at line " << __LINE__ << "was not carried out" << XERCES_STD_QUALIFIER endl;
+        std::cout << "DOMTypeInfo test at line " << __LINE__ << "was not carried out" << std::endl;
 
     delete ti.parser;
 
@@ -909,7 +905,7 @@
         ti.doc = ti.parser->getDocument();
     }
     catch (...) {
-        XERCES_STD_QUALIFIER cerr << "parsing data/TypeInfoJustDTD.xml failed at line" <<  __LINE__ << XERCES_STD_QUALIFIER endl;
+        std::cerr << "parsing data/TypeInfoJustDTD.xml failed at line" <<  __LINE__ << std::endl;
         delete ti.parser;
         return false;
     }
@@ -919,7 +915,7 @@
         passed &= ti.testDTD();
     }
     else
-        XERCES_STD_QUALIFIER cout << "DOMTypeInfo test at line " << __LINE__ << "was not carried out" << XERCES_STD_QUALIFIER endl;
+        std::cout << "DOMTypeInfo test at line " << __LINE__ << "was not carried out" << std::endl;
 
     delete ti.parser;
 
@@ -934,7 +930,7 @@
         ti.doc = ti.parser->getDocument();
     }
     catch (...) {
-        XERCES_STD_QUALIFIER cerr << "parsing data/TypeInfoJustDTD.xml failed at line" <<  __LINE__ << XERCES_STD_QUALIFIER endl;
+        std::cerr << "parsing data/TypeInfoJustDTD.xml failed at line" <<  __LINE__ << std::endl;
         delete ti.parser;
         return false;
     }
@@ -944,7 +940,7 @@
         passed &=  ti.testDTD();
     }
     else
-        XERCES_STD_QUALIFIER cout << "DOMTypeInfo test at line " << __LINE__ << "was not carried out" << XERCES_STD_QUALIFIER endl;
+        std::cout << "DOMTypeInfo test at line " << __LINE__ << "was not carried out" << std::endl;
 
     delete ti.parser;
 
@@ -958,7 +954,7 @@
         ti.doc = ti.parser->getDocument();
     }
     catch (...) {
-        XERCES_STD_QUALIFIER cerr << "parsing data/combined.xml failed at line" <<  __LINE__ << XERCES_STD_QUALIFIER endl;
+        std::cerr << "parsing data/combined.xml failed at line" <<  __LINE__ << std::endl;
         delete ti.parser;
         return false;
     }
@@ -968,15 +964,15 @@
         passed &= ti.combinedTest();
     }
     else
-        XERCES_STD_QUALIFIER cout << "DOMTypeInfo test at line " << __LINE__ << "was not carried out" << XERCES_STD_QUALIFIER endl;
+        std::cout << "DOMTypeInfo test at line " << __LINE__ << "was not carried out" << std::endl;
 
     delete ti.parser;
 
     if (!passed) {
-        XERCES_STD_QUALIFIER cerr << "test failed" << XERCES_STD_QUALIFIER endl;
+        std::cerr << "test failed" << std::endl;
         return 4;
     }
 
-    XERCES_STD_QUALIFIER cerr << "Test Run Successfully" << XERCES_STD_QUALIFIER endl;
+    std::cerr << "Test Run Successfully" << std::endl;
     return 0;
 }
diff --git a/tests/src/DOM/TypeInfo/TypeInfo.hpp b/tests/src/DOM/TypeInfo/TypeInfo.hpp
index 8007808..7a659e3 100644
--- a/tests/src/DOM/TypeInfo/TypeInfo.hpp
+++ b/tests/src/DOM/TypeInfo/TypeInfo.hpp
@@ -20,11 +20,11 @@
 
 #include <xercesc/dom/DOM.hpp>
 
-XERCES_CPP_NAMESPACE_USE
+using namespace XERCES_CPP_NAMESPACE;
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 class XercesDOMParser;
-XERCES_CPP_NAMESPACE_END
+}
 
 
 
diff --git a/tests/src/EncodingTest/EncodingTest.cpp b/tests/src/EncodingTest/EncodingTest.cpp
index ffce121..95cd945 100644
--- a/tests/src/EncodingTest/EncodingTest.cpp
+++ b/tests/src/EncodingTest/EncodingTest.cpp
@@ -38,9 +38,9 @@
 #include <xercesc/util/OutOfMemoryException.hpp>
 #include <xercesc/parsers/XercesDOMParser.hpp>
 #include <xercesc/dom/DOM.hpp>
-#include <stdio.h>
+#include <cstdio>
 
-XERCES_CPP_NAMESPACE_USE
+using namespace XERCES_CPP_NAMESPACE;
 
 static int gTestsFailed = 0;
 static int gTestsRun    = 0;
diff --git a/tests/src/InitTermTest/InitTermTest.cpp b/tests/src/InitTermTest/InitTermTest.cpp
index 80a83a5..8cfe19b 100644
--- a/tests/src/InitTermTest/InitTermTest.cpp
+++ b/tests/src/InitTermTest/InitTermTest.cpp
@@ -39,14 +39,10 @@
 #include <xercesc/dom/DOMException.hpp>
 #include "InitTermTest.hpp"
 
-#include <string.h>
-#include <stdlib.h>
+#include <cstring>
+#include <cstdlib>
 
-#if defined(XERCES_NEW_IOSTREAMS)
 #include <fstream>
-#else
-#include <fstream.h>
-#endif
 #include <limits.h>
 
 
@@ -95,8 +91,8 @@
                                                                   \
         catch (const XMLException& toCatch)                       \
         {                                                         \
-             XERCES_STD_QUALIFIER cerr << "Error during initialization! :\n"           \
-                  << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl;          \
+             std::cerr << "Error during initialization! :\n"           \
+                  << StrX(toCatch.getMessage()) << std::endl;          \
              return 1;                                            \
         }                                                         \
     }                                                             \
@@ -109,8 +105,8 @@
                                                                   \
         catch (const XMLException& toCatch)                       \
         {                                                         \
-             XERCES_STD_QUALIFIER cerr << "Error during initialization! :\n"           \
-                  << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl;          \
+             std::cerr << "Error during initialization! :\n"           \
+                  << StrX(toCatch.getMessage()) << std::endl;          \
              return 1;                                            \
         }                                                         \
     }
@@ -129,33 +125,33 @@
     }                                                             \
     catch (const OutOfMemoryException&)                           \
     {                                                             \
-        XERCES_STD_QUALIFIER cerr << "OutOfMemoryException" << XERCES_STD_QUALIFIER endl; \
+        std::cerr << "OutOfMemoryException" << std::endl; \
         errorOccurred = true;                                     \
     }                                                             \
     catch (const XMLException& toCatch)                           \
     {                                                             \
-        XERCES_STD_QUALIFIER cerr << "\nError during parsing: '" << xmlFile << "'\n"   \
+        std::cerr << "\nError during parsing: '" << xmlFile << "'\n"   \
              << "Exception message is:  \n"                       \
-             << StrX(toCatch.getMessage()) << "\n" << XERCES_STD_QUALIFIER endl;       \
+             << StrX(toCatch.getMessage()) << "\n" << std::endl;       \
         errorOccurred = true;                                     \
     }                                                             \
     catch (const DOMException& toCatch)                           \
     {                                                             \
-        XERCES_STD_QUALIFIER cerr << "\nDOM Error during parsing: '" << xmlFile        \
+        std::cerr << "\nDOM Error during parsing: '" << xmlFile        \
              << "\nDOMException code is:  \n"                     \
-             << toCatch.code << "\n" << XERCES_STD_QUALIFIER endl;                     \
+             << toCatch.code << "\n" << std::endl;                     \
         errorOccurred = true;                                     \
     }                                                             \
     catch (...)                                                   \
     {                                                             \
-        XERCES_STD_QUALIFIER cerr << "\nUnexpected exception during parsing: '"        \
+        std::cerr << "\nUnexpected exception during parsing: '"        \
         << xmlFile << "'\n";                                      \
         errorOccurred = true;                                     \
     }                                                             \
                                                                   \
     if (errorHandler.getSawErrors())                              \
     {                                                             \
-        XERCES_STD_QUALIFIER cout << "\nErrors occurred, no output available\n" << XERCES_STD_QUALIFIER endl;\
+        std::cout << "\nErrors occurred, no output available\n" << std::endl;\
         errorOccurred = true;                                     \
     }                                                             \
                                                                   \
@@ -237,7 +233,7 @@
 // ---------------------------------------------------------------------------
 void usage()
 {
-    XERCES_STD_QUALIFIER cout << "\nUsage:\n"
+    std::cout << "\nUsage:\n"
             "    InitTermTest [options] <XML file>\n\n"
             "This program tests the XMLPlatformUtils::Initialize()/Terminate()\n"
             "pair by calling it a number of times.\n"
@@ -246,7 +242,7 @@
             "    -s          Enable schema processing. Default is off.\n"
             "    -f          Enable full schema constraint checking. Defaults to off.\n"
 		      "    -?          Show this help.\n"
-          <<  XERCES_STD_QUALIFIER endl;
+          <<  std::endl;
 }
 
 // ---------------------------------------------------------------------------
@@ -309,8 +305,8 @@
         }
          else
         {
-            XERCES_STD_QUALIFIER cerr << "Unknown option '" << argV[parmInd]
-                 << "', ignoring it.\n" << XERCES_STD_QUALIFIER endl;
+            std::cerr << "Unknown option '" << argV[parmInd]
+                 << "', ignoring it.\n" << std::endl;
         }
     }
 
@@ -333,7 +329,7 @@
     unsigned int i = 0;
     for (i=0; i < 100; i++) {
         if (error) {
-            XERCES_STD_QUALIFIER cout << "Test Failed" << XERCES_STD_QUALIFIER endl;
+            std::cout << "Test Failed" << std::endl;
             return 4;
         }
 
@@ -379,11 +375,11 @@
         error = true;
 
     if (error) {
-        XERCES_STD_QUALIFIER cout << "Test Failed" << XERCES_STD_QUALIFIER endl;
+        std::cout << "Test Failed" << std::endl;
         return 4;
     }
 
-    XERCES_STD_QUALIFIER cout << "Test Run Successfully" << XERCES_STD_QUALIFIER endl;
+    std::cout << "Test Run Successfully" << std::endl;
     return 0;
 }
 
@@ -403,27 +399,27 @@
 void InitTermTestErrorHandler::error(const SAXParseException& e)
 {
     fSawErrors = true;
-    XERCES_STD_QUALIFIER cerr << "\nError at file " << StrX(e.getSystemId())
+    std::cerr << "\nError at file " << StrX(e.getSystemId())
          << ", line " << e.getLineNumber()
          << ", char " << e.getColumnNumber()
-         << "\n  Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+         << "\n  Message: " << StrX(e.getMessage()) << std::endl;
 }
 
 void InitTermTestErrorHandler::fatalError(const SAXParseException& e)
 {
     fSawErrors = true;
-    XERCES_STD_QUALIFIER cerr << "\nFatal Error at file " << StrX(e.getSystemId())
+    std::cerr << "\nFatal Error at file " << StrX(e.getSystemId())
          << ", line " << e.getLineNumber()
          << ", char " << e.getColumnNumber()
-         << "\n  Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+         << "\n  Message: " << StrX(e.getMessage()) << std::endl;
 }
 
 void InitTermTestErrorHandler::warning(const SAXParseException& e)
 {
-    XERCES_STD_QUALIFIER cerr << "\nWarning at file " << StrX(e.getSystemId())
+    std::cerr << "\nWarning at file " << StrX(e.getSystemId())
          << ", line " << e.getLineNumber()
          << ", char " << e.getColumnNumber()
-         << "\n  Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+         << "\n  Message: " << StrX(e.getMessage()) << std::endl;
 }
 
 void InitTermTestErrorHandler::resetErrors()
diff --git a/tests/src/InitTermTest/InitTermTest.hpp b/tests/src/InitTermTest/InitTermTest.hpp
index bc480c3..c04801a 100644
--- a/tests/src/InitTermTest/InitTermTest.hpp
+++ b/tests/src/InitTermTest/InitTermTest.hpp
@@ -25,17 +25,13 @@
 #include <xercesc/sax/ErrorHandler.hpp>
 #include <xercesc/util/PlatformUtils.hpp>
 
-#if defined(XERCES_NEW_IOSTREAMS)
 #include <iostream>
-#else
-#include <iostream.h>
-#endif
 
-XERCES_CPP_NAMESPACE_USE
+using namespace XERCES_CPP_NAMESPACE;
 
-XERCES_CPP_NAMESPACE_BEGIN
+namespace XERCES_CPP_NAMESPACE {
 class SAXParseException;
-XERCES_CPP_NAMESPACE_END
+}
 
 
 // ---------------------------------------------------------------------------
@@ -126,7 +122,7 @@
     char*   fLocalForm;
 };
 
-inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump)
+inline std::ostream& operator<<(std::ostream& target, const StrX& toDump)
 {
     target << toDump.localForm();
     return target;
diff --git a/tests/src/MemHandlerTest/MemoryMonitor.cpp b/tests/src/MemHandlerTest/MemoryMonitor.cpp
index 551af7b..ac21af4 100644
--- a/tests/src/MemHandlerTest/MemoryMonitor.cpp
+++ b/tests/src/MemHandlerTest/MemoryMonitor.cpp
@@ -24,13 +24,8 @@
 //  Includes
 // ---------------------------------------------------------------------------
 #include "MemoryMonitor.hpp"
-#if defined(XERCES_NEW_IOSTREAMS)
 #include <iostream>
 #include <fstream>
-#else
-#include <iostream.h>
-#include <fstream.h>
-#endif
 #include <assert.h>
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/util/OutOfMemoryException.hpp>
@@ -74,7 +69,7 @@
 
 static void usage()
 {
-    XERCES_STD_QUALIFIER cout << "\nUsage:\n"
+    std::cout << "\nUsage:\n"
             "    MemHandlerTest [options] <XML file | List file>\n\n"
             "This program invokes the XercesDOMParser, DOMLSParser, SAXParser ,\n"
             "and the SAX2XMLReader, and ensures that MemoryManagers set on these\n"
@@ -91,7 +86,7 @@
             "    -r=n        Run file through domBuilders n times.\n"
 		    "    -?          Show this help.\n\n"
             "  * = Default if not provided explicitly.\n"
-         << XERCES_STD_QUALIFIER endl;
+         << std::endl;
 }
 
 class DOMLSParserHandler : public DOMErrorHandler
@@ -102,8 +97,8 @@
     bool handleError(const DOMError &error)
     {
         char *message = 0;
-        XERCES_STD_QUALIFIER cerr << "Error occurred in DOMBuilder!  Message:  " <<
-            (message = XMLString::transcode(error.getMessage())) << " of severity " << error.getSeverity() << "." << XERCES_STD_QUALIFIER endl;
+        std::cerr << "Error occurred in DOMBuilder!  Message:  " <<
+            (message = XMLString::transcode(error.getMessage())) << " of severity " << error.getSeverity() << "." << std::endl;
         XMLString::release(&message);
         return true;
     }
@@ -117,22 +112,22 @@
     void warning(const SAXParseException &exc )
     {
         char *message = 0;
-        XERCES_STD_QUALIFIER cerr << "SAX warning received!  Text:  " <<
-            (message = XMLString::transcode(exc.getMessage())) << "." << XERCES_STD_QUALIFIER endl;
+        std::cerr << "SAX warning received!  Text:  " <<
+            (message = XMLString::transcode(exc.getMessage())) << "." << std::endl;
         XMLString::release(&message);
     }
     void error(const SAXParseException &exc )
     {
         char *message = 0;
-        XERCES_STD_QUALIFIER cerr << "SAX error received!  Text:  " <<
-            (message = XMLString::transcode(exc.getMessage())) << "." << XERCES_STD_QUALIFIER endl;
+        std::cerr << "SAX error received!  Text:  " <<
+            (message = XMLString::transcode(exc.getMessage())) << "." << std::endl;
         XMLString::release(&message);
     }
     void fatalError(const SAXParseException &exc )
     {
         char *message = 0;
-        XERCES_STD_QUALIFIER cerr << "SAX fatalError received!  Text:  " <<
-            (message = XMLString::transcode(exc.getMessage())) << "." << XERCES_STD_QUALIFIER endl;
+        std::cerr << "SAX fatalError received!  Text:  " <<
+            (message = XMLString::transcode(exc.getMessage())) << "." << std::endl;
         XMLString::release(&message);
     }
 
@@ -163,8 +158,8 @@
     catch (const XMLException& toCatch)
     {
          char *msg = XMLString::transcode(toCatch.getMessage());
-         XERCES_STD_QUALIFIER cerr << "Error during initialization! :\n"
-              << msg << XERCES_STD_QUALIFIER endl;
+         std::cerr << "Error during initialization! :\n"
+              << msg << std::endl;
          XMLString::release(&msg);
          return 1;
     }
@@ -210,7 +205,7 @@
                 domBuilderValScheme = AbstractDOMParser::Val_Always;
             else
             {
-                XERCES_STD_QUALIFIER cerr << "Unknown -v= value: " << parm << XERCES_STD_QUALIFIER endl;
+                std::cerr << "Unknown -v= value: " << parm << std::endl;
                 return 2;
             }
         }
@@ -244,8 +239,8 @@
         }
          else
         {
-            XERCES_STD_QUALIFIER cerr << "Unknown option '" << argV[argInd]
-                 << "', ignoring it\n" << XERCES_STD_QUALIFIER endl;
+            std::cerr << "Unknown option '" << argV[argInd]
+                 << "', ignoring it\n" << std::endl;
         }
     }
 
@@ -319,7 +314,7 @@
     // enable datatype normalization - default is off
     domBuilder->getDomConfig()->setParameter(XMLUni::fgDOMDatatypeNormalization, true);
 
-    XERCES_STD_QUALIFIER ifstream fin;
+    std::ifstream fin;
     bool more = true;
 
     // the input is a list file
@@ -327,7 +322,7 @@
         fin.open(argV[argInd]);
 
     if (fin.fail()) {
-        XERCES_STD_QUALIFIER cerr <<"Cannot open the list file: " << argV[argInd] << XERCES_STD_QUALIFIER endl;
+        std::cerr <<"Cannot open the list file: " << argV[argInd] << std::endl;
         return 2;
     }
 
@@ -344,7 +339,7 @@
                     continue;
                 else {
                     xmlFile = fURI;
-                    XERCES_STD_QUALIFIER cerr << "==Parsing== " << xmlFile << XERCES_STD_QUALIFIER endl;
+                    std::cerr << "==Parsing== " << xmlFile << std::endl;
                 }
             }
             else
@@ -359,7 +354,7 @@
         for (int i=0; i<numReps; i++)
         {
 
-            XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *doc = 0;
+            xercesc::DOMDocument *doc = 0;
 
             try
             {
@@ -369,15 +364,15 @@
                 doc = domBuilder->parseURI(xmlFile);
                 if(doc && doc->getDocumentElement())
                 {
-                    XERCES_CPP_NAMESPACE_QUALIFIER DOMNodeList *list=NULL;
+                    xercesc::DOMNodeList *list=NULL;
                     if(doNamespaces)
                         list=doc->getElementsByTagNameNS(doc->getDocumentElement()->getNamespaceURI(), doc->getDocumentElement()->getLocalName());
                     else
                         list=doc->getElementsByTagName(doc->getDocumentElement()->getNodeName());
                     if(list==NULL)
-                        XERCES_STD_QUALIFIER cout << "getElementsByTagName didn't return a valid DOMNodeList." << XERCES_STD_QUALIFIER endl;
+                        std::cout << "getElementsByTagName didn't return a valid DOMNodeList." << std::endl;
                     else if(list->item(0)!=doc->getDocumentElement())
-                        XERCES_STD_QUALIFIER cout << "getElementsByTagName didn't find the root element." << XERCES_STD_QUALIFIER endl;
+                        std::cout << "getElementsByTagName didn't find the root element." << std::endl;
 
                     DOMTreeWalker* pWalker=doc->createTreeWalker(doc->getDocumentElement(), DOMNodeFilter::SHOW_TEXT, NULL, true);
 	                DOMText* textNode=(DOMText*)pWalker->nextNode();
@@ -391,15 +386,15 @@
             }
             catch (const OutOfMemoryException&)
             {
-                XERCES_STD_QUALIFIER cerr << "OutOfMemoryException during parsing: '" << xmlFile << "'\n" << XERCES_STD_QUALIFIER endl;;
+                std::cerr << "OutOfMemoryException during parsing: '" << xmlFile << "'\n" << std::endl;;
                 continue;
             }
             catch (const XMLException& toCatch)
             {
                 char *msg = XMLString::transcode(toCatch.getMessage());
-                XERCES_STD_QUALIFIER cerr << "\nError during parsing: '" << xmlFile << "'\n"
+                std::cerr << "\nError during parsing: '" << xmlFile << "'\n"
                     << "Exception message is:  \n"
-                    << msg << "\n" << XERCES_STD_QUALIFIER endl;
+                    << msg << "\n" << std::endl;
                 XMLString::release(&msg);
                 continue;
             }
@@ -408,20 +403,20 @@
                 const unsigned int maxChars = 2047;
                 XMLCh errText[maxChars + 1];
 
-                XERCES_STD_QUALIFIER cerr << "\nDOM Error during parsing: '" << xmlFile << "'\n"
-                    << "DOMException code is:  " << toCatch.code << XERCES_STD_QUALIFIER endl;
+                std::cerr << "\nDOM Error during parsing: '" << xmlFile << "'\n"
+                    << "DOMException code is:  " << toCatch.code << std::endl;
 
                 if (DOMImplementation::loadDOMExceptionMsg(toCatch.code, errText, maxChars))
                 {
                     char * msg = XMLString::transcode(errText);
-                    XERCES_STD_QUALIFIER cerr << "Message is: " << msg << XERCES_STD_QUALIFIER endl;
+                    std::cerr << "Message is: " << msg << std::endl;
 
                     continue;
                 }
             }
             catch (...)
             {
-                XERCES_STD_QUALIFIER cerr << "\nUnexpected exception during parsing: '" << xmlFile << "'\n";
+                std::cerr << "\nUnexpected exception during parsing: '" << xmlFile << "'\n";
                 continue;
             }
 
@@ -435,15 +430,15 @@
     delete sax2parser;
     delete saxParser;
 
-    XERCES_STD_QUALIFIER cout << "At destruction, domBuilderMemMonitor has " << domBuilderMemMonitor->getTotalMemory() << " bytes." << XERCES_STD_QUALIFIER endl;
-    XERCES_STD_QUALIFIER cout << "At destruction, sax2MemMonitor has " << sax2MemMonitor->getTotalMemory() << " bytes." << XERCES_STD_QUALIFIER endl;
-    XERCES_STD_QUALIFIER cout << "At destruction, sax1MemMonitor has " << sax1MemMonitor->getTotalMemory() << " bytes." << XERCES_STD_QUALIFIER endl;
+    std::cout << "At destruction, domBuilderMemMonitor has " << domBuilderMemMonitor->getTotalMemory() << " bytes." << std::endl;
+    std::cout << "At destruction, sax2MemMonitor has " << sax2MemMonitor->getTotalMemory() << " bytes." << std::endl;
+    std::cout << "At destruction, sax1MemMonitor has " << sax1MemMonitor->getTotalMemory() << " bytes." << std::endl;
     delete domBuilderMemMonitor;
     delete sax2MemMonitor;
     delete sax1MemMonitor;
 
     XMLPlatformUtils::Terminate();
-    XERCES_STD_QUALIFIER cout << "At destruction, staticMemMonitor has " << staticMemMonitor->getTotalMemory() << " bytes." << XERCES_STD_QUALIFIER endl;
+    std::cout << "At destruction, staticMemMonitor has " << staticMemMonitor->getTotalMemory() << " bytes." << std::endl;
     delete staticMemMonitor;
     return 0;
 }
diff --git a/tests/src/MemHandlerTest/MemoryMonitor.hpp b/tests/src/MemHandlerTest/MemoryMonitor.hpp
index 9fd7243..88684ef 100644
--- a/tests/src/MemHandlerTest/MemoryMonitor.hpp
+++ b/tests/src/MemHandlerTest/MemoryMonitor.hpp
@@ -36,7 +36,7 @@
 #include <xercesc/parsers/SAXParser.hpp>
 #include "SimpleValueHashTableOf.hpp"
 
-XERCES_CPP_NAMESPACE_USE
+using namespace XERCES_CPP_NAMESPACE;
 
 /**
   * Configurable memory manager
diff --git a/tests/src/MemHandlerTest/SimpleValueHashTableOf.hpp b/tests/src/MemHandlerTest/SimpleValueHashTableOf.hpp
index 6291c6f..4f7c3e3 100644
--- a/tests/src/MemHandlerTest/SimpleValueHashTableOf.hpp
+++ b/tests/src/MemHandlerTest/SimpleValueHashTableOf.hpp
@@ -34,7 +34,7 @@
 #include <xercesc/util/XMLEnumerator.hpp>
 #include <xercesc/util/Hashers.hpp>
 
-XERCES_CPP_NAMESPACE_USE
+using namespace XERCES_CPP_NAMESPACE;
 
 //  Forward declare the enumerator so it can be our friend.
 //
diff --git a/tests/src/NetAccessorTest/NetAccessorTest.cpp b/tests/src/NetAccessorTest/NetAccessorTest.cpp
index 3bb735b..7cbc84c 100644
--- a/tests/src/NetAccessorTest/NetAccessorTest.cpp
+++ b/tests/src/NetAccessorTest/NetAccessorTest.cpp
@@ -30,16 +30,12 @@
 #include    <xercesc/util/XMLNetAccessor.hpp>
 #include    <xercesc/util/BinInputStream.hpp>
 
-#if defined(XERCES_NEW_IOSTREAMS)
 #include	<iostream>
-#else
-#include	<iostream.h>
-#endif
 
-XERCES_CPP_NAMESPACE_USE
+using namespace XERCES_CPP_NAMESPACE;
 
 
-inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& os, const XMLCh* xmlStr)
+inline std::ostream& operator<<(std::ostream& os, const XMLCh* xmlStr)
 {
 	char* transcoded = XMLString::transcode(xmlStr);
     os << transcoded;
@@ -73,12 +69,12 @@
 		
 		// Read bytes into our buffer
 		bytesRead = stream.readBytes(buffer, bufCnt);
-		//XERCES_STD_QUALIFIER cerr << "Read " << bytesRead << " bytes into a " << bufCnt << " byte buffer\n";
+		//std::cerr << "Read " << bytesRead << " bytes into a " << bufCnt << " byte buffer\n";
 
 		if (bytesRead > 0)
 		{
 			// Write the data to standard out
-			XERCES_STD_QUALIFIER cout.write((char*)buffer, bytesRead);
+			std::cout.write((char*)buffer, bytesRead);
 		}
 		
 		++iteration;
@@ -100,15 +96,15 @@
 
     catch(const XMLException& toCatch)
     {
-        XERCES_STD_QUALIFIER cout << "Error during platform init! Message:\n"
-             << toCatch.getMessage() << XERCES_STD_QUALIFIER endl;
+        std::cout << "Error during platform init! Message:\n"
+             << toCatch.getMessage() << std::endl;
         return 1;
     }
     
     // Look for our one and only parameter
     if (argc != 2)
     {
-    	XERCES_STD_QUALIFIER cerr << "Usage: NetAccessorTest url\n"
+    	std::cerr << "Usage: NetAccessorTest url\n"
     			"\n"
     			"This test reads data from the given url and writes the result\n"
     			"to standard output.\n"
@@ -131,7 +127,7 @@
 		XMLNetAccessor* na = XMLPlatformUtils::fgNetAccessor;
 		if (na == 0)
 		{
-			XERCES_STD_QUALIFIER cerr <<  "No netaccessor is available. Aborting.\n";
+			std::cerr <<  "No netaccessor is available. Aborting.\n";
 			exit(2);
 		}
 		
@@ -139,7 +135,7 @@
 		BinInputStream* is = na->makeNew(xmlURL);
 		if (is == 0)
 		{
-			XERCES_STD_QUALIFIER cerr <<  "No binary input stream created. Aborting.\n";
+			std::cerr <<  "No binary input stream created. Aborting.\n";
 			exit(3);
 		}
 		
@@ -152,9 +148,9 @@
     }
     catch(const XMLException& toCatch)
     {
-        XERCES_STD_QUALIFIER cout << "Exception during test:\n    "
+        std::cout << "Exception during test:\n    "
              << toCatch.getMessage()
-             << XERCES_STD_QUALIFIER endl;
+             << std::endl;
     }
 
     // And call the termination method
diff --git a/tests/src/ParserTest/ParserTest.cpp b/tests/src/ParserTest/ParserTest.cpp
index d88986d..cb63752 100644
--- a/tests/src/ParserTest/ParserTest.cpp
+++ b/tests/src/ParserTest/ParserTest.cpp
@@ -44,8 +44,8 @@
 
     catch(const XMLException& toCatch)
     {
-        XERCES_STD_QUALIFIER cout << "Error during platform init! Message:\n"
-             << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl;
+        std::cout << "Error during platform init! Message:\n"
+             << StrX(toCatch.getMessage()) << std::endl;
         return 1;
     }
 
@@ -88,13 +88,13 @@
         else if (!XMLString::compareNIString(argV[index], "/URL=", 5))
             urlPath = XMLString::transcode(&argV[index][5]);
         else
-            XERCES_STD_QUALIFIER cout << "Unknown parameter: " << argV[index] << XERCES_STD_QUALIFIER endl;
+            std::cout << "Unknown parameter: " << argV[index] << std::endl;
     }
 
     // We have to have a URL to work on
     if (!urlPath)
     {
-        XERCES_STD_QUALIFIER cout << "A URL must be provided, /URL=xxxx" << XERCES_STD_QUALIFIER endl;
+        std::cout << "A URL must be provided, /URL=xxxx" << std::endl;
         return 1;
     }
 
@@ -134,9 +134,9 @@
 
     catch(const XMLException& toCatch)
     {
-        XERCES_STD_QUALIFIER cout << "Exception during scan:\n    "
+        std::cout << "Exception during scan:\n    "
              << StrX(toCatch.getMessage())
-             << XERCES_STD_QUALIFIER endl;
+             << std::endl;
     }
 
     // And call the termination method
diff --git a/tests/src/ParserTest/ParserTest.hpp b/tests/src/ParserTest/ParserTest.hpp
index 46e6be1..122a2d7 100644
--- a/tests/src/ParserTest/ParserTest.hpp
+++ b/tests/src/ParserTest/ParserTest.hpp
@@ -37,14 +37,10 @@
 //  Includes that everyone uses inside this program
 // ---------------------------------------------------------------------------
 #include "ParserTest_Parser.hpp"
-#include <stdlib.h>
+#include <cstdlib>
 #include <xercesc/util/PlatformUtils.hpp>
 
-#if defined(XERCES_NEW_IOSTREAMS)
 #include <iostream>
-#else
-#include <iostream.h>
-#endif
 
 
 // ---------------------------------------------------------------------------
@@ -96,7 +92,7 @@
     char*   fLocalForm;
 };
 
-inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump)
+inline std::ostream& operator<<(std::ostream& target, const StrX& toDump)
 {
     target << toDump.localForm();
     return target;
diff --git a/tests/src/ParserTest/ParserTest_Parser.cpp b/tests/src/ParserTest/ParserTest_Parser.cpp
index 549b623..9a4c923 100644
--- a/tests/src/ParserTest/ParserTest_Parser.cpp
+++ b/tests/src/ParserTest/ParserTest_Parser.cpp
@@ -36,7 +36,7 @@
 #include <xercesc/validators/DTD/DTDEntityDecl.hpp>
 #include "ParserTest.hpp"
 
-#include <stdlib.h>
+#include <cstdlib>
 #include <ctype.h>
 
 
@@ -85,12 +85,12 @@
 {
     if (fOutputType == OutputType_Debug)
     {
-        XERCES_STD_QUALIFIER cout << "Got CHARS:\n    Bytes: "
+        std::cout << "Got CHARS:\n    Bytes: "
              << length << ", CDATA?: "
              << (cdataSection ? "Yes" : "No")
              << "\n"
              << "    SrcOfs: " << fScanner->getSrcOffset()
-             << "\n" << XERCES_STD_QUALIFIER endl;
+             << "\n" << std::endl;
     }
      else if ((fOutputType == OutputType_JCCanon)
           ||  (fOutputType == OutputType_SunCanon))
@@ -100,10 +100,10 @@
      else if (fOutputType == OutputType_XML)
     {
         if (cdataSection)
-            XERCES_STD_QUALIFIER cout << "<![CDATA[";
+            std::cout << "<![CDATA[";
         showChars(chars, length);
         if (cdataSection)
-            XERCES_STD_QUALIFIER cout << "]]>";
+            std::cout << "]]>";
     }
 }
 
@@ -111,16 +111,16 @@
 {
     if (fOutputType == OutputType_Debug)
     {
-        XERCES_STD_QUALIFIER cout << "Got document COMMENT:\n    "
+        std::cout << "Got document COMMENT:\n    "
              << "Text: \"" << StrX(comment) << "\"\n"
              << "    SrcOfs: " << fScanner->getSrcOffset()
-             << "\n" << XERCES_STD_QUALIFIER endl;
+             << "\n" << std::endl;
     }
      else if (fOutputType == OutputType_XML)
     {
-        XERCES_STD_QUALIFIER cout << "<!--";
+        std::cout << "<!--";
         showString(comment);
-        XERCES_STD_QUALIFIER cout << "-->";
+        std::cout << "-->";
     }
 }
 
@@ -129,25 +129,25 @@
 {
     if (fOutputType == OutputType_Debug)
     {
-        XERCES_STD_QUALIFIER cout << "Got document PI:\n     "
+        std::cout << "Got document PI:\n     "
              << "Target: \"" << target << '"';
 
         if (XMLString::stringLen(data))
-            XERCES_STD_QUALIFIER cout << ", Data: \"" << StrX(data) << "\"\n";
+            std::cout << ", Data: \"" << StrX(data) << "\"\n";
 
-        XERCES_STD_QUALIFIER cout << "    SrcOfs: " << fScanner->getSrcOffset()
-             << "\n" << XERCES_STD_QUALIFIER endl;
+        std::cout << "    SrcOfs: " << fScanner->getSrcOffset()
+             << "\n" << std::endl;
     }
      else if ((fOutputType == OutputType_XML)
           ||  (fOutputType == OutputType_JCCanon)
           ||  (fOutputType == OutputType_SunCanon))
     {
-        XERCES_STD_QUALIFIER cout << "<?";
+        std::cout << "<?";
         showString(target);
-        XERCES_STD_QUALIFIER cout << " ";
+        std::cout << " ";
         if (XMLString::stringLen(data))
-            XERCES_STD_QUALIFIER cout << StrX(data);
-        XERCES_STD_QUALIFIER cout << "?>";
+            std::cout << StrX(data);
+        std::cout << "?>";
     }
 }
 
@@ -156,13 +156,13 @@
 {
     if (fOutputType == OutputType_Debug)
     {
-        XERCES_STD_QUALIFIER cout << "Got ENDDOCUMENT:\n"
+        std::cout << "Got ENDDOCUMENT:\n"
              << "    SrcOfs: " << fScanner->getSrcOffset()
-             << "\n" << XERCES_STD_QUALIFIER endl;
+             << "\n" << std::endl;
     }
      else if (fOutputType == OutputType_SunCanon)
     {
-        XERCES_STD_QUALIFIER cout << "\r\n";
+        std::cout << "\r\n";
     }
 }
 
@@ -177,27 +177,27 @@
             XMLBuffer bufURI;
             fScanner->getURIText(uriId, bufURI);
 
-            XERCES_STD_QUALIFIER cout << "Got ENDELEMENT:\n    Name: "
+            std::cout << "Got ENDELEMENT:\n    Name: "
                  << "{" << StrX(bufURI.getRawBuffer()) << "}"
                  << StrX(elemDecl.getBaseName())
-                 << XERCES_STD_QUALIFIER endl;
+                 << std::endl;
         }
          else
         {
-            XERCES_STD_QUALIFIER cout << "Got ENDELEMENT:\n    Name: "
-                 << StrX(elemDecl.getFullName()) << XERCES_STD_QUALIFIER endl;
+            std::cout << "Got ENDELEMENT:\n    Name: "
+                 << StrX(elemDecl.getFullName()) << std::endl;
         }
 
-        XERCES_STD_QUALIFIER cout << "    SrcOfs: " << fScanner->getSrcOffset()
-             << "\n" << XERCES_STD_QUALIFIER endl;
+        std::cout << "    SrcOfs: " << fScanner->getSrcOffset()
+             << "\n" << std::endl;
     }
      else if ((fOutputType == OutputType_XML)
           ||  (fOutputType == OutputType_JCCanon)
           ||  (fOutputType == OutputType_SunCanon))
     {
-        XERCES_STD_QUALIFIER cout << "</";
+        std::cout << "</";
         showString(elemDecl.getFullName());
-        XERCES_STD_QUALIFIER cout << ">";
+        std::cout << ">";
     }
 
     // Clear the flag that says we're now inside the root
@@ -209,8 +209,8 @@
 {
     if (fOutputType == OutputType_Debug)
     {
-        XERCES_STD_QUALIFIER cout << "Got ENDENTITYREF:\n    "
-             << "Name: " << StrX(entDecl.getName()) << "\n" << XERCES_STD_QUALIFIER endl;
+        std::cout << "Got ENDENTITYREF:\n    "
+             << "Name: " << StrX(entDecl.getName()) << "\n" << std::endl;
     }
 }
 
@@ -220,20 +220,20 @@
 {
     if (fOutputType == OutputType_Debug)
     {
-        XERCES_STD_QUALIFIER cout << "Got WHITESPACE:\n    Bytes: "
+        std::cout << "Got WHITESPACE:\n    Bytes: "
              << length << ", CDATA?: "
              << (cdataSection ? "Yes" : "No")
              << "\n"
              << "    SrcOfs: " << fScanner->getSrcOffset()
-             << "\n" << XERCES_STD_QUALIFIER endl;
+             << "\n" << std::endl;
     }
      else if (fOutputType == OutputType_XML)
     {
         if (cdataSection)
-            XERCES_STD_QUALIFIER cout << "<![CDATA[";
+            std::cout << "<![CDATA[";
         showChars(chars, length);
         if (cdataSection)
-            XERCES_STD_QUALIFIER cout << "]]>";
+            std::cout << "]]>";
     }
      else if ((fOutputType == OutputType_JCCanon)
           ||  (fOutputType == OutputType_SunCanon))
@@ -247,13 +247,13 @@
 void TestParser::resetDocument()
 {
     if (fOutputType == OutputType_Debug)
-        XERCES_STD_QUALIFIER cout << "Got RESETDOCUMENT:\n" << XERCES_STD_QUALIFIER endl;
+        std::cout << "Got RESETDOCUMENT:\n" << std::endl;
 }
 
 void TestParser::startDocument()
 {
     if (fOutputType == OutputType_Debug)
-        XERCES_STD_QUALIFIER cout << "Got STARTDOCUMENT:\n" << XERCES_STD_QUALIFIER endl;
+        std::cout << "Got STARTDOCUMENT:\n" << std::endl;
 }
 
 void
@@ -275,7 +275,7 @@
         if (fDoNamespaces)
         {
             fScanner->getURIText(uriId, bufURI);
-            XERCES_STD_QUALIFIER cout << "Got STARTELEMENT:\n    "
+            std::cout << "Got STARTELEMENT:\n    "
                  << " Name: {" << StrX(bufURI.getRawBuffer()) << "}"
                  << StrX(elemDecl.getBaseName())
                  << ", AttCount: " << attCount
@@ -285,7 +285,7 @@
         }
          else
         {
-            XERCES_STD_QUALIFIER cout << "Got STARTELEMENT:\n    Name: "
+            std::cout << "Got STARTELEMENT:\n    Name: "
                  << StrX(elemDecl.getFullName())
                  << ", AttCount: " << attCount
                  << ", Empty?: "
@@ -293,12 +293,12 @@
                  << "\n";
         }
 
-        XERCES_STD_QUALIFIER cout << "    SrcOfs: " << fScanner->getSrcOffset() << "\n";
+        std::cout << "    SrcOfs: " << fScanner->getSrcOffset() << "\n";
 
         // If any attributes, then show them
         if (attCount)
         {
-            XERCES_STD_QUALIFIER cout << "    Attrs: ";
+            std::cout << "    Attrs: ";
             for (unsigned int attInd = 0; attInd < attCount; attInd++)
             {
                 const XMLAttr* curAttr = attrList.elementAt(attInd);
@@ -306,62 +306,62 @@
                 if (fDoNamespaces)
                 {
                     fScanner->getURIText(curAttr->getURIId(), bufURI);
-                    XERCES_STD_QUALIFIER cout << "Name=" << "{" << StrX(bufURI.getRawBuffer())
+                    std::cout << "Name=" << "{" << StrX(bufURI.getRawBuffer())
                          << "}" << StrX(curAttr->getName());
                 }
                  else
                 {
-                    XERCES_STD_QUALIFIER cout << "Name=" << StrX(curAttr->getQName());
+                    std::cout << "Name=" << StrX(curAttr->getQName());
                 }
 
                 if (curAttr->getSpecified())
-                    XERCES_STD_QUALIFIER cout << " (Explicit)  ";
+                    std::cout << " (Explicit)  ";
                 else
-                    XERCES_STD_QUALIFIER cout << " (Defaulted) ";
+                    std::cout << " (Defaulted) ";
 
-                XERCES_STD_QUALIFIER cout << "Value=" << StrX(curAttr->getValue()) << "\n"
+                std::cout << "Value=" << StrX(curAttr->getValue()) << "\n"
                      << "           ";
             }
         }
 
-        XERCES_STD_QUALIFIER cout << XERCES_STD_QUALIFIER endl;
+        std::cout << std::endl;
     }
      else if (fOutputType == OutputType_XML)
     {
-        XERCES_STD_QUALIFIER cout << "<";
+        std::cout << "<";
         showString(elemDecl.getFullName());
 
         if (attCount)
         {
-            XERCES_STD_QUALIFIER cout << " ";
+            std::cout << " ";
 
             for (unsigned int index = 0; index < attCount; index++)
             {
                 const XMLAttr* curAttr = attrList.elementAt(index);
                 showString(curAttr->getQName());
-                XERCES_STD_QUALIFIER cout << "=\"";
+                std::cout << "=\"";
                 showString(curAttr->getValue());
-                XERCES_STD_QUALIFIER cout << "\"";
+                std::cout << "\"";
 
                 if (index < attCount-1)
-                    XERCES_STD_QUALIFIER cout << " ";
+                    std::cout << " ";
             }
         }
 
         if (isEmpty)
-            XERCES_STD_QUALIFIER cout << "/>";
+            std::cout << "/>";
         else
-            XERCES_STD_QUALIFIER cout << ">";
+            std::cout << ">";
     }
      else if ((fOutputType == OutputType_JCCanon)
           ||  (fOutputType == OutputType_SunCanon))
     {
-        XERCES_STD_QUALIFIER cout << "<";
+        std::cout << "<";
         showString(elemDecl.getFullName());
 
         if (attCount)
         {
-            XERCES_STD_QUALIFIER cout << " ";
+            std::cout << " ";
 
             //
             //  Get a list of attribute pointers. The canonical output
@@ -381,25 +381,25 @@
             {
                 const XMLAttr* curAttr = attrTmp[index];
                 showString(curAttr->getQName());
-                XERCES_STD_QUALIFIER cout << "=\"";
+                std::cout << "=\"";
                 showString(curAttr->getValue());
-                XERCES_STD_QUALIFIER cout << "\"";
+                std::cout << "\"";
 
                 if (index < attCount-1)
-                    XERCES_STD_QUALIFIER cout << " ";
+                    std::cout << " ";
             }
             delete [] attrTmp;
         }
 
         if (isEmpty)
         {
-            XERCES_STD_QUALIFIER cout << "></";
+            std::cout << "></";
             showString(elemDecl.getFullName());
-            XERCES_STD_QUALIFIER cout << ">";
+            std::cout << ">";
         }
          else
         {
-            XERCES_STD_QUALIFIER cout << ">";
+            std::cout << ">";
         }
     }
 }
@@ -408,8 +408,8 @@
 {
     if (fOutputType == OutputType_Debug)
     {
-        XERCES_STD_QUALIFIER cout << "Got STARTENTITY:\n    "
-             << "Name: " << StrX(entDecl.getName()) << "\n" << XERCES_STD_QUALIFIER endl;
+        std::cout << "Got STARTENTITY:\n    "
+             << "Name: " << StrX(entDecl.getName()) << "\n" << std::endl;
     }
 }
 
@@ -420,29 +420,29 @@
 {
     if (fOutputType == OutputType_Debug)
     {
-        XERCES_STD_QUALIFIER cout << "Got XMLDECL:\n    "
+        std::cout << "Got XMLDECL:\n    "
              << "Version:\"" << StrX(versionStr) << "\""
              << " Encoding:\"" << StrX(encodingStr) << "\""
              << " Standalone:\"" << StrX(standaloneStr) << "\""
              << " Auto Encoding:\"" << StrX(autoEncStr) << "\""
              << "\n"
              << "    SrcOfs: " << fScanner->getSrcOffset()
-             << "\n" << XERCES_STD_QUALIFIER endl;
+             << "\n" << std::endl;
     }
      else if (fOutputType == OutputType_XML)
     {
-        XERCES_STD_QUALIFIER cout << "<?xml";
+        std::cout << "<?xml";
 
         if (XMLString::stringLen(versionStr))
-            XERCES_STD_QUALIFIER cout << " version=\"" << StrX(versionStr) << '"';
+            std::cout << " version=\"" << StrX(versionStr) << '"';
 
         if (XMLString::stringLen(encodingStr))
-            XERCES_STD_QUALIFIER cout << " encoding=\"" << StrX(encodingStr) << '"';
+            std::cout << " encoding=\"" << StrX(encodingStr) << '"';
 
         if (XMLString::stringLen(standaloneStr))
-            XERCES_STD_QUALIFIER cout  << " standlone=\"" << StrX(standaloneStr) << '"';
+            std::cout  << " standlone=\"" << StrX(standaloneStr) << '"';
 
-        XERCES_STD_QUALIFIER cout << " ?>";
+        std::cout << " ?>";
     }
 }
 
@@ -456,7 +456,7 @@
 {
     if (fOutputType == OutputType_Debug)
     {
-        XERCES_STD_QUALIFIER cout << "Got ATTDEF:\n    "
+        std::cout << "Got ATTDEF:\n    "
              << "Name: " << StrX(attDef.getFullName())
              << ", Type: "
              << StrX(XMLAttDef::getAttTypeString(attDef.getType()))
@@ -464,10 +464,10 @@
              << StrX(XMLAttDef::getDefAttTypeString(attDef.getDefaultType()));
 
         if (XMLString::stringLen(attDef.getValue()))
-            XERCES_STD_QUALIFIER cout << ", Value: \"" << StrX(attDef.getValue()) << '"';
+            std::cout << ", Value: \"" << StrX(attDef.getValue()) << '"';
 
-        XERCES_STD_QUALIFIER cout << "\n    SrcOfs: " << fScanner->getSrcOffset()
-             << "\n" << XERCES_STD_QUALIFIER endl;
+        std::cout << "\n    SrcOfs: " << fScanner->getSrcOffset()
+             << "\n" << std::endl;
     }
      else if (fOutputType != OutputType_None)
     {
@@ -476,36 +476,36 @@
 
         if (fIntDTDOutput)
         {
-            XERCES_STD_QUALIFIER cout << StrX(attDef.getFullName()) << " ";
+            std::cout << StrX(attDef.getFullName()) << " ";
             if (attDef.getType() == XMLAttDef::Enumeration)
             {
-                XERCES_STD_QUALIFIER cout << '(';
+                std::cout << '(';
                 StrX tmpStr(attDef.getEnumeration());
                 const char* curCh = tmpStr.localForm();
                 while (*curCh)
                 {
                     while (!isspace(*curCh) && *curCh)
-                        XERCES_STD_QUALIFIER cout << *curCh++;
+                        std::cout << *curCh++;
 
                     if (*curCh)
                     {
-                        XERCES_STD_QUALIFIER cout << '|';
+                        std::cout << '|';
                         curCh++;
                     }
                 }
-                XERCES_STD_QUALIFIER cout << ')';
+                std::cout << ')';
             }
              else
             {
-                XERCES_STD_QUALIFIER cout << StrX(XMLAttDef::getAttTypeString(attDef.getType()));
+                std::cout << StrX(XMLAttDef::getAttTypeString(attDef.getType()));
             }
 
             if (XMLString::stringLen(attDef.getValue()))
-                XERCES_STD_QUALIFIER cout << " \"" << StrX(attDef.getValue()) << '"';
+                std::cout << " \"" << StrX(attDef.getValue()) << '"';
 
             if (attDef.getDefaultType() != XMLAttDef::Default)
             {
-                XERCES_STD_QUALIFIER cout << " "
+                std::cout << " "
                      << StrX(XMLAttDef::getDefAttTypeString(attDef.getDefaultType()));
             }
         }
@@ -516,10 +516,10 @@
 {
     if (fOutputType == OutputType_Debug)
     {
-        XERCES_STD_QUALIFIER cout << "Got DTD COMMENT:\n    "
+        std::cout << "Got DTD COMMENT:\n    "
              << "Text: \"" << StrX(comment) << "\"\n"
              << "    SrcOfs: " << fScanner->getSrcOffset()
-             << "\n" << XERCES_STD_QUALIFIER endl;
+             << "\n" << std::endl;
     }
      else if (fOutputType != OutputType_None)
     {
@@ -527,7 +527,7 @@
             return;
 
         if (fIntDTDOutput)
-            XERCES_STD_QUALIFIER cout << "<!--" << StrX(comment) << "-->";
+            std::cout << "<!--" << StrX(comment) << "-->";
     }
 }
 
@@ -538,27 +538,27 @@
 {
     if (fOutputType == OutputType_Debug)
     {
-        XERCES_STD_QUALIFIER cout << "Got DOCTYPE:\n    "
+        std::cout << "Got DOCTYPE:\n    "
                 << "Root: " << StrX(elemDecl.getFullName());
 
         if (XMLString::stringLen(publicId))
-            XERCES_STD_QUALIFIER cout << ", PUBLIC: " << StrX(publicId);
+            std::cout << ", PUBLIC: " << StrX(publicId);
 
         if (XMLString::stringLen(systemId))
-            XERCES_STD_QUALIFIER cout << ", SYSTEM: " << StrX(systemId);
+            std::cout << ", SYSTEM: " << StrX(systemId);
 
-        XERCES_STD_QUALIFIER cout << "\n    SrcOfs: " << fScanner->getSrcOffset()
-             << "\n" << XERCES_STD_QUALIFIER endl;
+        std::cout << "\n    SrcOfs: " << fScanner->getSrcOffset()
+             << "\n" << std::endl;
     }
      else if (fOutputType != OutputType_None)
     {
         if (fIntDTDOutput)
         {
-            XERCES_STD_QUALIFIER cout << "<!DOCTYPE " << StrX(elemDecl.getFullName());
+            std::cout << "<!DOCTYPE " << StrX(elemDecl.getFullName());
             showIds(publicId, systemId);
 
             if (!hasIntSubset)
-                XERCES_STD_QUALIFIER cout << ">";
+                std::cout << ">";
         }
     }
 }
@@ -568,14 +568,14 @@
 {
     if (fOutputType == OutputType_Debug)
     {
-        XERCES_STD_QUALIFIER cout << "Got DTD PI:\n     "
+        std::cout << "Got DTD PI:\n     "
                 << "Target: \"" << StrX(target) << '"';
 
         if (XMLString::stringLen(data))
-            XERCES_STD_QUALIFIER cout << ", Data: \"" << StrX(data) << '"';
+            std::cout << ", Data: \"" << StrX(data) << '"';
 
-        XERCES_STD_QUALIFIER cout << "    SrcOfs: " << fScanner->getSrcOffset()
-             << "\n" << XERCES_STD_QUALIFIER endl;
+        std::cout << "    SrcOfs: " << fScanner->getSrcOffset()
+             << "\n" << std::endl;
     }
      else if (fOutputType != OutputType_None)
     {
@@ -584,10 +584,10 @@
 
         if (fIntDTDOutput)
         {
-            XERCES_STD_QUALIFIER cout << "<?" << target;
+            std::cout << "<?" << target;
             if (XMLString::stringLen(data))
-                XERCES_STD_QUALIFIER cout << " " << StrX(data);
-            XERCES_STD_QUALIFIER cout << "?>";
+                std::cout << " " << StrX(data);
+            std::cout << "?>";
         }
     }
 }
@@ -597,10 +597,10 @@
 {
     if (fOutputType == OutputType_Debug)
     {
-        XERCES_STD_QUALIFIER cout << "Got DTD Spaces:\n    Bytes: "
+        std::cout << "Got DTD Spaces:\n    Bytes: "
              << length << "\n"
              << "    SrcOfs: " << fScanner->getSrcOffset()
-             << "\n" << XERCES_STD_QUALIFIER endl;
+             << "\n" << std::endl;
     }
      else if (fOutputType != OutputType_None)
     {
@@ -617,16 +617,16 @@
 {
     if (fOutputType == OutputType_Debug)
     {
-        XERCES_STD_QUALIFIER cout << "Got ELEMENT DECL:\n    "
+        std::cout << "Got ELEMENT DECL:\n    "
              << "Name: " << StrX(decl.getFullName());
 
         if (isIgnored)
-            XERCES_STD_QUALIFIER cout << " (Ignored)";
+            std::cout << " (Ignored)";
 
-        XERCES_STD_QUALIFIER cout << ", Content: "
+        std::cout << ", Content: "
              << StrX(decl.getFormattedContentModel())
              << "\n    SrcOfs: " << fScanner->getSrcOffset()
-             << "\n" << XERCES_STD_QUALIFIER endl;
+             << "\n" << std::endl;
     }
      else if (fOutputType != OutputType_None)
     {
@@ -635,7 +635,7 @@
 
         if (fIntDTDOutput)
         {
-            XERCES_STD_QUALIFIER cout << "<!ELEMENT " << StrX(decl.getFullName()) << " "
+            std::cout << "<!ELEMENT " << StrX(decl.getFullName()) << " "
                  << StrX(decl.getFormattedContentModel())
                  << ">";
         }
@@ -646,10 +646,10 @@
 {
     if (fOutputType == OutputType_Debug)
     {
-        XERCES_STD_QUALIFIER cout << "Got ENDATTLIST:\n    "
+        std::cout << "Got ENDATTLIST:\n    "
              << "Name: " << StrX(elemDecl.getFullName()) << "\n"
              << "    SrcOfs: " << fScanner->getSrcOffset()
-             << "\n" << XERCES_STD_QUALIFIER endl;
+             << "\n" << std::endl;
     }
      else if (fOutputType != OutputType_None)
     {
@@ -657,7 +657,7 @@
             return;
 
         if (fIntDTDOutput)
-            XERCES_STD_QUALIFIER cout << ">";
+            std::cout << ">";
     }
 }
 
@@ -665,14 +665,14 @@
 {
     if (fOutputType == OutputType_Debug)
     {
-        XERCES_STD_QUALIFIER cout << "Got ENDINTSUBSET\n"
+        std::cout << "Got ENDINTSUBSET\n"
              << "    SrcOfs: " << fScanner->getSrcOffset()
-             << "\n" << XERCES_STD_QUALIFIER endl;
+             << "\n" << std::endl;
     }
      else if (fOutputType != OutputType_None)
     {
         if (fIntDTDOutput)
-            XERCES_STD_QUALIFIER cout << "]>";
+            std::cout << "]>";
     }
 }
 
@@ -680,7 +680,7 @@
 {
     fInExtSubset = false;
     if (fOutputType == OutputType_Debug)
-        XERCES_STD_QUALIFIER cout << "Got ENDEXTSUBSET\n" << XERCES_STD_QUALIFIER endl;
+        std::cout << "Got ENDEXTSUBSET\n" << std::endl;
 }
 
 void TestParser::entityDecl(const   DTDEntityDecl&  entityDecl
@@ -689,10 +689,10 @@
 {
     if (fOutputType == OutputType_Debug)
     {
-        XERCES_STD_QUALIFIER cout << "Got ENTITYDECL:\n    "
+        std::cout << "Got ENTITYDECL:\n    "
              << "Name: " << StrX(entityDecl.getName())
              << (isPEDecl ? " [Parameter Entity]" : " [General Entity]")
-             << "\n" << XERCES_STD_QUALIFIER endl;
+             << "\n" << std::endl;
     }
      else if (fOutputType != OutputType_None)
     {
@@ -701,17 +701,17 @@
 
         if (fIntDTDOutput)
         {
-            XERCES_STD_QUALIFIER cout << "<!ENTITY ";
+            std::cout << "<!ENTITY ";
             if (isPEDecl)
-                XERCES_STD_QUALIFIER cout << "% ";
-            XERCES_STD_QUALIFIER cout << StrX(entityDecl.getName());
+                std::cout << "% ";
+            std::cout << StrX(entityDecl.getName());
 
             if (entityDecl.isExternal())
                 showIds(entityDecl.getPublicId(), entityDecl.getSystemId());
              else
-                XERCES_STD_QUALIFIER cout << " \"" << StrX(entityDecl.getValue()) << "\"";
+                std::cout << " \"" << StrX(entityDecl.getValue()) << "\"";
 
-            XERCES_STD_QUALIFIER cout << ">";
+            std::cout << ">";
         }
     }
 }
@@ -719,7 +719,7 @@
 void TestParser::resetDocType()
 {
     if (fOutputType == OutputType_Debug)
-        XERCES_STD_QUALIFIER cout << "Got RESETDOCTYPE:\n" << XERCES_STD_QUALIFIER endl;
+        std::cout << "Got RESETDOCTYPE:\n" << std::endl;
 }
 
 void TestParser::notationDecl(  const   XMLNotationDecl&    notDecl
@@ -727,9 +727,9 @@
 {
     if (fOutputType == OutputType_Debug)
     {
-        XERCES_STD_QUALIFIER cout << "Got NOTATIONDECL:\n    "
+        std::cout << "Got NOTATIONDECL:\n    "
              << "Name: " << StrX(notDecl.getName())
-             << XERCES_STD_QUALIFIER endl;
+             << std::endl;
     }
      else if (fOutputType != OutputType_None)
     {
@@ -738,20 +738,20 @@
 
         if (fIntDTDOutput)
         {
-            XERCES_STD_QUALIFIER cout << "<!NOTATION " << StrX(notDecl.getName()) << " ";
+            std::cout << "<!NOTATION " << StrX(notDecl.getName()) << " ";
 
             if (!XMLString::stringLen(notDecl.getSystemId()))
-                XERCES_STD_QUALIFIER cout << "PUBLIC ";
+                std::cout << "PUBLIC ";
             else
-                XERCES_STD_QUALIFIER cout << "SYSTEM ";
+                std::cout << "SYSTEM ";
 
             if (XMLString::stringLen(notDecl.getPublicId()))
-                XERCES_STD_QUALIFIER cout << "\"" << StrX(notDecl.getPublicId()) << '"';
+                std::cout << "\"" << StrX(notDecl.getPublicId()) << '"';
 
             if (XMLString::stringLen(notDecl.getSystemId()))
-                XERCES_STD_QUALIFIER cout << " \"" << StrX(notDecl.getSystemId()) << '"';
+                std::cout << " \"" << StrX(notDecl.getSystemId()) << '"';
 
-            XERCES_STD_QUALIFIER cout << ">";
+            std::cout << ">";
         }
     }
 }
@@ -760,9 +760,9 @@
 {
     if (fOutputType == OutputType_Debug)
     {
-        XERCES_STD_QUALIFIER cout << "Got STARTATTLIST:\n    "
+        std::cout << "Got STARTATTLIST:\n    "
                 << "Name: " << StrX(elemDecl.getFullName())
-                << "\n" << XERCES_STD_QUALIFIER endl;
+                << "\n" << std::endl;
     }
      else if (fOutputType != OutputType_None)
     {
@@ -770,7 +770,7 @@
             return;
 
         if (fIntDTDOutput)
-            XERCES_STD_QUALIFIER cout << "<!ATTLIST " << StrX(elemDecl.getFullName());
+            std::cout << "<!ATTLIST " << StrX(elemDecl.getFullName());
     }
 }
 
@@ -778,12 +778,12 @@
 {
     if (fOutputType == OutputType_Debug)
     {
-        XERCES_STD_QUALIFIER cout << "Got STARTINTSUBSET\n" << XERCES_STD_QUALIFIER endl;
+        std::cout << "Got STARTINTSUBSET\n" << std::endl;
     }
      else if (fOutputType != OutputType_None)
     {
         if (fIntDTDOutput)
-            XERCES_STD_QUALIFIER cout << " [";
+            std::cout << " [";
     }
 }
 
@@ -791,7 +791,7 @@
 {
     fInExtSubset = true;
     if (fOutputType == OutputType_Debug)
-        XERCES_STD_QUALIFIER cout << "Got STARTEXTSUBSET\n" << XERCES_STD_QUALIFIER endl;
+        std::cout << "Got STARTEXTSUBSET\n" << std::endl;
 }
 
 void TestParser::TextDecl(  const   XMLCh* const    versionStr
@@ -799,15 +799,15 @@
 {
     if (fOutputType == OutputType_Debug)
     {
-        XERCES_STD_QUALIFIER cout << "Got TEXTDECL:\n    ";
+        std::cout << "Got TEXTDECL:\n    ";
 
         if (XMLString::stringLen(versionStr))
-            XERCES_STD_QUALIFIER cout << "Version: " << StrX(versionStr);
+            std::cout << "Version: " << StrX(versionStr);
 
         if (XMLString::stringLen(encodingStr))
-            XERCES_STD_QUALIFIER cout << "Encoding: " << StrX(encodingStr);
+            std::cout << "Encoding: " << StrX(encodingStr);
 
-        XERCES_STD_QUALIFIER cout << "\n" << XERCES_STD_QUALIFIER endl;
+        std::cout << "\n" << std::endl;
     }
 }
 
@@ -847,10 +847,10 @@
         if (ofs != -1)
             entName = &systemId[ofs + 1];
 
-        XERCES_STD_QUALIFIER cout << lineNum << "/" << colNum
+        std::cout << lineNum << "/" << colNum
                 << ":" << StrX(entName)
                 << " - " << StrX(text)
-                << XERCES_STD_QUALIFIER endl;
+                << std::endl;
         return;
     }
 
@@ -867,27 +867,27 @@
         typeStr = "VALIDITY";
 
     // Output the error heading and the error type string
-    XERCES_STD_QUALIFIER cout << "\nError: (" << typeStr;
+    std::cout << "\nError: (" << typeStr;
 
     // If we have either id, display them
     if (XMLString::stringLen(systemId))
-         XERCES_STD_QUALIFIER cout << ", System Id: " << StrX(systemId);
+         std::cout << ", System Id: " << StrX(systemId);
 
     if (XMLString::stringLen(publicId))
-        XERCES_STD_QUALIFIER cout << ", Public Id: " << StrX(publicId);
+        std::cout << ", Public Id: " << StrX(publicId);
 
     // Display the position information
-    XERCES_STD_QUALIFIER cout << ", Line/Col: " << lineNum << "/" << colNum
+    std::cout << ", Line/Col: " << lineNum << "/" << colNum
          << ")\n";
 
     // And finally the error text
-    XERCES_STD_QUALIFIER cout << StrX(text) << XERCES_STD_QUALIFIER endl;
+    std::cout << StrX(text) << std::endl;
 }
 
 void TestParser::resetErrors()
 {
     if (fOutputType == OutputType_Debug)
-        XERCES_STD_QUALIFIER cout << "Got RESETERRORS:\n" << XERCES_STD_QUALIFIER endl;
+        std::cout << "Got RESETERRORS:\n" << std::endl;
 }
 
 
@@ -919,7 +919,7 @@
         {
             if (index == length)
             {
-                XERCES_STD_QUALIFIER cout << "Missing trailing surrogate\n" << XERCES_STD_QUALIFIER endl;
+                std::cout << "Missing trailing surrogate\n" << std::endl;
                 break;
             }
 
@@ -980,27 +980,27 @@
     if (doCan)
     {
         if (toShow == chLF)
-            XERCES_STD_QUALIFIER cout << "&#10;";
+            std::cout << "&#10;";
         else if (toShow == chHTab)
-            XERCES_STD_QUALIFIER cout << "&#9;";
+            std::cout << "&#9;";
         else if (toShow == chCR)
-            XERCES_STD_QUALIFIER cout << "&#13;";
+            std::cout << "&#13;";
         else if (toShow == chSingleQuote)
-            XERCES_STD_QUALIFIER cout << "&apos;";
+            std::cout << "&apos;";
         else if (toShow == chAmpersand)
-            XERCES_STD_QUALIFIER cout << "&amp;";
+            std::cout << "&amp;";
         else if (toShow == chDoubleQuote)
-            XERCES_STD_QUALIFIER cout << "&quot;";
+            std::cout << "&quot;";
         else if (toShow == chOpenAngle)
-            XERCES_STD_QUALIFIER cout << "&lt;";
+            std::cout << "&lt;";
         else if (toShow == chCloseAngle)
-            XERCES_STD_QUALIFIER cout << "&gt;";
+            std::cout << "&gt;";
         else
-            XERCES_STD_QUALIFIER cout << toShow;
+            std::cout << toShow;
     }
      else
     {
-        XERCES_STD_QUALIFIER cout << toShow;
+        std::cout << toShow;
     }
 }
 
@@ -1011,13 +1011,13 @@
     {
         if (!XMLString::stringLen(publicId))
         {
-            XERCES_STD_QUALIFIER cout << " SYSTEM '" << StrX(systemId) << "'";
+            std::cout << " SYSTEM '" << StrX(systemId) << "'";
         }
          else
         {
-            XERCES_STD_QUALIFIER cout << " PUBLIC '" << StrX(publicId) << "'";
+            std::cout << " PUBLIC '" << StrX(publicId) << "'";
             if (systemId)
-                XERCES_STD_QUALIFIER cout << " '" << StrX(systemId) << "'";
+                std::cout << " '" << StrX(systemId) << "'";
         }
     }
 }
diff --git a/tests/src/ParserTest/ParserTest_Parser.hpp b/tests/src/ParserTest/ParserTest_Parser.hpp
index e4a3806..2f3c7d1 100644
--- a/tests/src/ParserTest/ParserTest_Parser.hpp
+++ b/tests/src/ParserTest/ParserTest_Parser.hpp
@@ -27,7 +27,7 @@
 #include    <xercesc/framework/XMLErrorReporter.hpp>
 #include    <xercesc/validators/DTD/DocTypeHandler.hpp>
 
-XERCES_CPP_NAMESPACE_USE
+using namespace XERCES_CPP_NAMESPACE;
 
 
 class TestParser :
diff --git a/tests/src/ThreadTest/ThreadTest.cpp b/tests/src/ThreadTest/ThreadTest.cpp
index 91ce7b3..f651575 100644
--- a/tests/src/ThreadTest/ThreadTest.cpp
+++ b/tests/src/ThreadTest/ThreadTest.cpp
@@ -25,9 +25,9 @@
 #	include <config.h>
 #endif
 
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
+#include <cstdlib>
+#include <cstdio>
+#include <cstring>
 #include <ctype.h>
 #include <xercesc/parsers/SAXParser.hpp>
 #include <xercesc/parsers/XercesDOMParser.hpp>
@@ -204,7 +204,7 @@
 };
 
 
-XERCES_CPP_NAMESPACE_USE
+using namespace XERCES_CPP_NAMESPACE;
 //------------------------------------------------------------------------------
 //
 //  struct runInfo     Holds the info extracted from the command line.
@@ -406,7 +406,7 @@
     SAXParser*                                      fSAXParser;
     SAX2XMLReader*                                  fSAX2Parser;
     XercesDOMParser*                                fXercesDOMParser;
-    XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *    fDoc;
+    xercesc::DOMDocument *    fDoc;
 
 
     ThreadParser(const ThreadParser &); // No copy constructor
diff --git a/tests/src/UtilTests/CoreTests.hpp b/tests/src/UtilTests/CoreTests.hpp
index 307176d..c586cf0 100644
--- a/tests/src/UtilTests/CoreTests.hpp
+++ b/tests/src/UtilTests/CoreTests.hpp
@@ -24,11 +24,7 @@
 #include <xercesc/util/XMLUni.hpp>
 #include <xercesc/util/PlatformUtils.hpp>
 
-#if defined(XERCES_NEW_IOSTREAMS)
 #include <iostream>
-#else
-#include <iostream.h>
-#endif
 
-XERCES_CPP_NAMESPACE_USE
+using namespace XERCES_CPP_NAMESPACE;
 
diff --git a/tests/src/UtilTests/CoreTestsMain.cpp b/tests/src/UtilTests/CoreTestsMain.cpp
index 36470a9..bcb49d1 100644
--- a/tests/src/UtilTests/CoreTestsMain.cpp
+++ b/tests/src/UtilTests/CoreTestsMain.cpp
@@ -56,13 +56,13 @@
 
     catch(const XMLException& toCatch)
     {
-        XERCES_STD_QUALIFIER wcout << L"Parser Init Failed!\n   INFO: ("
+        std::wcout << L"Parser Init Failed!\n   INFO: ("
                    << toCatch.getSrcFile() << L"." << toCatch.getSrcLine()
-                   << L") -" << toCatch.getMessage() << XERCES_STD_QUALIFIER endl;
+                   << L") -" << toCatch.getMessage() << std::endl;
         return 0xFFFF;
     }
 
-    XERCES_STD_QUALIFIER wcout << L"\nXML4C2 Core Utilities Unit Tester\n" << XERCES_STD_QUALIFIER endl;
+    std::wcout << L"\nXML4C2 Core Utilities Unit Tester\n" << std::endl;
 
     // This value will return the number of failed tests
     int retVal = 0;
@@ -75,10 +75,10 @@
         // -------------------------------------------------------------------
         if (!testTranscoders())
         {
-            XERCES_STD_QUALIFIER wcout << L"Transcoder tests failed" << XERCES_STD_QUALIFIER endl;
+            std::wcout << L"Transcoder tests failed" << std::endl;
             retVal++;
         }
-        XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl;
+        std::wcout << std::endl;
 
 
         // -------------------------------------------------------------------
@@ -86,10 +86,10 @@
         // -------------------------------------------------------------------
         if (!testString())
         {
-            XERCES_STD_QUALIFIER wcout << L"String tests failed" << XERCES_STD_QUALIFIER endl;
+            std::wcout << L"String tests failed" << std::endl;
             retVal++;
         }
-        XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl;
+        std::wcout << std::endl;
 
 
         // -------------------------------------------------------------------
@@ -97,10 +97,10 @@
         // -------------------------------------------------------------------
         if (!testCountedPointer())
         {
-            XERCES_STD_QUALIFIER wcout << L"CountedPointerTo tests failed" << XERCES_STD_QUALIFIER endl;
+            std::wcout << L"CountedPointerTo tests failed" << std::endl;
             retVal++;
         }
-        XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl;
+        std::wcout << std::endl;
 
 
         // -------------------------------------------------------------------
@@ -108,10 +108,10 @@
         // -------------------------------------------------------------------
         if (!testURL())
         {
-            XERCES_STD_QUALIFIER wcout << L"URL tests failed" << XERCES_STD_QUALIFIER endl;
+            std::wcout << L"URL tests failed" << std::endl;
             retVal++;
         }
-        XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl;
+        std::wcout << std::endl;
 
 
         // -------------------------------------------------------------------
@@ -119,10 +119,10 @@
         // -------------------------------------------------------------------
         if (!testValueVector())
         {
-            XERCES_STD_QUALIFIER wcout << L"ValueVectorOf tests failed" << XERCES_STD_QUALIFIER endl;
+            std::wcout << L"ValueVectorOf tests failed" << std::endl;
             retVal++;
         }
-        XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl;
+        std::wcout << std::endl;
 
 
         // -------------------------------------------------------------------
@@ -130,10 +130,10 @@
         // -------------------------------------------------------------------
         if (!testValueArray())
         {
-            XERCES_STD_QUALIFIER wcout << L"ValueArrayOf tests failed" << XERCES_STD_QUALIFIER endl;
+            std::wcout << L"ValueArrayOf tests failed" << std::endl;
             retVal++;
         }
-        XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl;
+        std::wcout << std::endl;
 
 
         // -------------------------------------------------------------------
@@ -141,10 +141,10 @@
         // -------------------------------------------------------------------
         if (!testValueStack())
         {
-            XERCES_STD_QUALIFIER wcout << L"ValueStackOf tests failed" << XERCES_STD_QUALIFIER endl;
+            std::wcout << L"ValueStackOf tests failed" << std::endl;
             retVal++;
         }
-        XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl;
+        std::wcout << std::endl;
 
 
         // -------------------------------------------------------------------
@@ -152,10 +152,10 @@
         // -------------------------------------------------------------------
         if (!testRefArray())
         {
-            XERCES_STD_QUALIFIER wcout << L"RefArrayOf tests failed" << XERCES_STD_QUALIFIER endl;
+            std::wcout << L"RefArrayOf tests failed" << std::endl;
             retVal++;
         }
-        XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl;
+        std::wcout << std::endl;
 
 
         // -------------------------------------------------------------------
@@ -163,10 +163,10 @@
         // -------------------------------------------------------------------
         if (!testRefStack())
         {
-            XERCES_STD_QUALIFIER wcout << L"RefStackOf tests failed" << XERCES_STD_QUALIFIER endl;
+            std::wcout << L"RefStackOf tests failed" << std::endl;
             retVal++;
         }
-        XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl;
+        std::wcout << std::endl;
 
 
         // -------------------------------------------------------------------
@@ -174,10 +174,10 @@
         // -------------------------------------------------------------------
         if (!testRefVector())
         {
-            XERCES_STD_QUALIFIER wcout << L"RefVectorOf tests failed" << XERCES_STD_QUALIFIER endl;
+            std::wcout << L"RefVectorOf tests failed" << std::endl;
             retVal++;
         }
-        XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl;
+        std::wcout << std::endl;
 
 
         // -------------------------------------------------------------------
@@ -185,10 +185,10 @@
         // -------------------------------------------------------------------
         if (!testRefHashTable())
         {
-            XERCES_STD_QUALIFIER wcout << L"RefHashTableOf tests failed" << XERCES_STD_QUALIFIER endl;
+            std::wcout << L"RefHashTableOf tests failed" << std::endl;
             retVal++;
         }
-        XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl;
+        std::wcout << std::endl;
 
 
         // -------------------------------------------------------------------
@@ -196,28 +196,28 @@
         // -------------------------------------------------------------------
         if (!testBitSet())
         {
-            XERCES_STD_QUALIFIER wcout << L"BitSet tests failed" << XERCES_STD_QUALIFIER endl;
+            std::wcout << L"BitSet tests failed" << std::endl;
             retVal++;
         }
-        XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl;
+        std::wcout << std::endl;
     }
 
     catch(const XMLException& toCatch)
     {
-        XERCES_STD_QUALIFIER wcout  << L"Exception During Test!\n   INFO: ("
+        std::wcout  << L"Exception During Test!\n   INFO: ("
                     << toCatch.getSrcFile() << L"."
                     << toCatch.getSrcLine() << L") -"
-                    << toCatch.getMessage() << XERCES_STD_QUALIFIER endl;
+                    << toCatch.getMessage() << std::endl;
         return 0xFFFF;
     }
 
     // If we failed any tests, display a message
-    XERCES_STD_QUALIFIER wcout << L"--------------------------------\n";
+    std::wcout << L"--------------------------------\n";
     if (retVal == 0)
-        XERCES_STD_QUALIFIER wcout << L"<<PASSED>>: All tests passed\n";
+        std::wcout << L"<<PASSED>>: All tests passed\n";
     else
-        XERCES_STD_QUALIFIER wcout << L"<<FAILED>>: Some tests failed\n";
-    XERCES_STD_QUALIFIER wcout << L"--------------------------------\n" << XERCES_STD_QUALIFIER endl;
+        std::wcout << L"<<FAILED>>: Some tests failed\n";
+    std::wcout << L"--------------------------------\n" << std::endl;
 
     return retVal;
 }
diff --git a/tests/src/UtilTests/CoreTests_BitSet.cpp b/tests/src/UtilTests/CoreTests_BitSet.cpp
index d93f933..ad9d172 100644
--- a/tests/src/UtilTests/CoreTests_BitSet.cpp
+++ b/tests/src/UtilTests/CoreTests_BitSet.cpp
@@ -41,8 +41,8 @@
 
     if (setTest.size() != 32)
     {
-        XERCES_STD_QUALIFIER wcout  << L"    Ctor did not create set of correct size"
-                    << XERCES_STD_QUALIFIER endl;
+        std::wcout  << L"    Ctor did not create set of correct size"
+                    << std::endl;
         return false;
     }
 
@@ -56,8 +56,8 @@
     {
         if (setTest.get(index))
         {
-            XERCES_STD_QUALIFIER wcout << L"    A bit's initial value was not zero"
-                       << XERCES_STD_QUALIFIER endl;
+            std::wcout << L"    A bit's initial value was not zero"
+                       << std::endl;
             return false;
         }
     }
@@ -65,8 +65,8 @@
     // Make sure that allAreCleared() agrees
     if (!setTest.allAreCleared())
     {
-        XERCES_STD_QUALIFIER wcout  << L"    allAreCleared() disagrees with individual bit gets"
-                    << XERCES_STD_QUALIFIER endl;
+        std::wcout  << L"    allAreCleared() disagrees with individual bit gets"
+                    << std::endl;
         return false;
     }
 
@@ -76,16 +76,16 @@
         setTest.set(index);
         if (!setTest.get(index))
         {
-            XERCES_STD_QUALIFIER wcout << L"    Bit was set but get returned false"
-                       << XERCES_STD_QUALIFIER endl;
+            std::wcout << L"    Bit was set but get returned false"
+                       << std::endl;
             return false;
         }
 
         setTest.clear(index);
         if (setTest.get(index))
         {
-            XERCES_STD_QUALIFIER wcout  << L"    Bit was cleared but get returned true"
-                        << XERCES_STD_QUALIFIER endl;
+            std::wcout  << L"    Bit was cleared but get returned true"
+                        << std::endl;
             return false;
         }
     }
@@ -95,8 +95,8 @@
     {
         if (setTest.get(index))
         {
-            XERCES_STD_QUALIFIER wcout << L"    A bit remained set after clearing"
-                       << XERCES_STD_QUALIFIER endl;
+            std::wcout << L"    A bit remained set after clearing"
+                       << std::endl;
             return false;
         }
     }
@@ -113,8 +113,8 @@
     BitSet setTest2(setTest);
     if (!setTest.equals(setTest2))
     {
-        XERCES_STD_QUALIFIER wcout  << L"    Copy ctor did not create equal sets"
-                    << XERCES_STD_QUALIFIER endl;
+        std::wcout  << L"    Copy ctor did not create equal sets"
+                    << std::endl;
         return false;
     }
 
@@ -124,8 +124,8 @@
     {
         if (setTest2.get(index))
         {
-            XERCES_STD_QUALIFIER wcout  << L"    clearAll() did not clear all bits"
-                        << XERCES_STD_QUALIFIER endl;
+            std::wcout  << L"    clearAll() did not clear all bits"
+                        << std::endl;
             return false;
         }
     }
@@ -136,8 +136,8 @@
     // Make sure it expanded
     if (setTest2.size() != 64)
     {
-        XERCES_STD_QUALIFIER wcout  << L"    Set of bit beyond size did not expand"
-                    << XERCES_STD_QUALIFIER endl;
+        std::wcout  << L"    Set of bit beyond size did not expand"
+                    << std::endl;
         return false;
     }
 
@@ -148,8 +148,8 @@
     // Make sure that allAreSet() sees them all set
     if (!setTest.allAreSet())
     {
-        XERCES_STD_QUALIFIER wcout  << L"    After setting all bits, allAreSet() returned false"
-                    << XERCES_STD_QUALIFIER endl;
+        std::wcout  << L"    After setting all bits, allAreSet() returned false"
+                    << std::endl;
         return false;
     }
 
@@ -178,8 +178,8 @@
     // They should be equal now
     if (!setTest.equals(setTest2))
     {
-        XERCES_STD_QUALIFIER wcout  << L"    OR of set with empty set did not create equal sets"
-                    << XERCES_STD_QUALIFIER endl;
+        std::wcout  << L"    OR of set with empty set did not create equal sets"
+                    << std::endl;
         return false;
     }
 
@@ -187,8 +187,8 @@
     setTest2.xorWith(setTest);
     if (!setTest2.allAreCleared())
     {
-        XERCES_STD_QUALIFIER wcout  << L"    XOR against original set did not get back original"
-                    << XERCES_STD_QUALIFIER endl;
+        std::wcout  << L"    XOR against original set did not get back original"
+                    << std::endl;
         return false;
     }
 
@@ -196,7 +196,7 @@
     setTest2.andWith(setTest);
     if (!setTest2.allAreCleared())
     {
-        XERCES_STD_QUALIFIER wcout << L"    AND against empty set changed bits" << XERCES_STD_QUALIFIER endl;
+        std::wcout << L"    AND against empty set changed bits" << std::endl;
         return false;
     }
 
@@ -209,43 +209,43 @@
 // ---------------------------------------------------------------------------
 bool testBitSet()
 {
-    XERCES_STD_QUALIFIER wcout  << L"----------------------------------\n"
+    std::wcout  << L"----------------------------------\n"
                 << L"Testing BitSet class\n"
-                << L"----------------------------------" << XERCES_STD_QUALIFIER endl;
+                << L"----------------------------------" << std::endl;
 
     bool retVal = true;
 
     try
     {
-        XERCES_STD_QUALIFIER wcout << L"Testing basic BitSet methods" << XERCES_STD_QUALIFIER endl;
+        std::wcout << L"Testing basic BitSet methods" << std::endl;
         if (!basicTests())
         {
-            XERCES_STD_QUALIFIER wcout << L"Bitset basic test methods failed" << XERCES_STD_QUALIFIER endl;
+            std::wcout << L"Bitset basic test methods failed" << std::endl;
             retVal = false;
         }
          else
         {
-            XERCES_STD_QUALIFIER wcout << L"Bitset basic tests passed" << XERCES_STD_QUALIFIER endl;
+            std::wcout << L"Bitset basic tests passed" << std::endl;
         }
-        XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl;
+        std::wcout << std::endl;
 
-        XERCES_STD_QUALIFIER wcout << L"Testing BitSet logical bit ops methods" << XERCES_STD_QUALIFIER endl;
+        std::wcout << L"Testing BitSet logical bit ops methods" << std::endl;
         if (!bitopsTests())
         {
-            XERCES_STD_QUALIFIER wcout << L"Bitset logical bit ops failed" << XERCES_STD_QUALIFIER endl;
+            std::wcout << L"Bitset logical bit ops failed" << std::endl;
             retVal = false;
         }
          else
         {
-            XERCES_STD_QUALIFIER wcout << L"Bitset logical bit ops passed" << XERCES_STD_QUALIFIER endl;
+            std::wcout << L"Bitset logical bit ops passed" << std::endl;
         }
-        XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl;
+        std::wcout << std::endl;
     }
 
     catch(const XMLException& toCatch)
     {
-        XERCES_STD_QUALIFIER wcout << L"  ERROR: Unexpected exception!\n   Msg: "
-                << toCatch.getMessage() << XERCES_STD_QUALIFIER endl;
+        std::wcout << L"  ERROR: Unexpected exception!\n   Msg: "
+                << toCatch.getMessage() << std::endl;
         return false;
     }
     return retVal;
diff --git a/tests/src/UtilTests/CoreTests_CountedPointer.cpp b/tests/src/UtilTests/CoreTests_CountedPointer.cpp
index 754b64d..7906a0a 100644
--- a/tests/src/UtilTests/CoreTests_CountedPointer.cpp
+++ b/tests/src/UtilTests/CoreTests_CountedPointer.cpp
@@ -75,9 +75,9 @@
 // ---------------------------------------------------------------------------
 bool testCountedPointer()
 {
-    XERCES_STD_QUALIFIER wcout  << L"----------------------------------\n"
+    std::wcout  << L"----------------------------------\n"
                 << L"Testing CountedPointerTo class\n"
-                << L"----------------------------------" << XERCES_STD_QUALIFIER endl;
+                << L"----------------------------------" << std::endl;
 
     bool retVal = true;
 
@@ -87,8 +87,8 @@
 
     catch(const XMLException& toCatch)
     {
-        XERCES_STD_QUALIFIER wcout << L"  ERROR: Unexpected exception!\n   Msg: "
-                   << toCatch.getMessage() << XERCES_STD_QUALIFIER endl;
+        std::wcout << L"  ERROR: Unexpected exception!\n   Msg: "
+                   << toCatch.getMessage() << std::endl;
         return false;
     }
     return retVal;
diff --git a/tests/src/UtilTests/CoreTests_RefArray.cpp b/tests/src/UtilTests/CoreTests_RefArray.cpp
index b5613cc..9a1f3d6 100644
--- a/tests/src/UtilTests/CoreTests_RefArray.cpp
+++ b/tests/src/UtilTests/CoreTests_RefArray.cpp
@@ -53,8 +53,8 @@
     // Make sure that it has the right initial size
     if (testArray1.length() != 255)
     {
-        XERCES_STD_QUALIFIER wcout  << L"    The ctor created wrong length() value"
-                    << XERCES_STD_QUALIFIER endl;
+        std::wcout  << L"    The ctor created wrong length() value"
+                    << std::endl;
         return false;
     }
 
@@ -63,16 +63,16 @@
 
     if (testArray2.length() != 255)
     {
-        XERCES_STD_QUALIFIER wcout  << L"    The copy ctor created wrong length() value"
-                    << XERCES_STD_QUALIFIER endl;
+        std::wcout  << L"    The copy ctor created wrong length() value"
+                    << std::endl;
         return false;
     }
 
     // Test the equality of the two arrays
     if (testArray1 != testArray2)
     {
-        XERCES_STD_QUALIFIER wcout  << L"    The copy ctor created unequal arrays"
-                    << XERCES_STD_QUALIFIER endl;
+        std::wcout  << L"    The copy ctor created unequal arrays"
+                    << std::endl;
         return false;
     }
 
@@ -86,8 +86,8 @@
 
     if (testArray3.length() != 16)
     {
-        XERCES_STD_QUALIFIER wcout  << L"    The init values ctor created wrong length() value"
-                    << XERCES_STD_QUALIFIER endl;
+        std::wcout  << L"    The init values ctor created wrong length() value"
+                    << std::endl;
         return false;
     }
 
@@ -96,8 +96,8 @@
     {
         if (*testArray3[index] != (double)index)
         {
-            XERCES_STD_QUALIFIER wcout  << L"    The init values ctor did not init contents correctly"
-                        << XERCES_STD_QUALIFIER endl;
+            std::wcout  << L"    The init values ctor did not init contents correctly"
+                        << std::endl;
             return false;
         }
     }
@@ -111,8 +111,8 @@
 
     if (testArray4 != testArray3)
     {
-        XERCES_STD_QUALIFIER wcout  << L"    Assignment did not create equal arrays"
-                    << XERCES_STD_QUALIFIER endl;
+        std::wcout  << L"    Assignment did not create equal arrays"
+                    << std::endl;
         return false;
     }
 
@@ -139,8 +139,8 @@
     {
         if (testArray1[index] != &testVals[index])
         {
-            XERCES_STD_QUALIFIER wcout  << L"    Failed to read back values just set"
-                        << XERCES_STD_QUALIFIER endl;
+            std::wcout  << L"    Failed to read back values just set"
+                        << std::endl;
             return false;
         }
     }
@@ -159,7 +159,7 @@
 
     if (!caughtIt)
     {
-        XERCES_STD_QUALIFIER wcout << L"    Failed to catch index error" << XERCES_STD_QUALIFIER endl;
+        std::wcout << L"    Failed to catch index error" << std::endl;
         return false;
     }
 
@@ -172,48 +172,48 @@
 // ---------------------------------------------------------------------------
 bool testRefArray()
 {
-    XERCES_STD_QUALIFIER wcout  << L"----------------------------------\n"
+    std::wcout  << L"----------------------------------\n"
                 << L"Testing RefArrayOf template class\n"
-                << L"----------------------------------" << XERCES_STD_QUALIFIER endl;
+                << L"----------------------------------" << std::endl;
 
     bool retVal = true;
 
     try
     {
         // Call other local methods to do specific tests
-        XERCES_STD_QUALIFIER wcout << L"Testing RefArrayOf contructors" << XERCES_STD_QUALIFIER endl;
+        std::wcout << L"Testing RefArrayOf contructors" << std::endl;
         if (!constructorTests())
         {
-            XERCES_STD_QUALIFIER wcout  << L"RefArrayOf constructor tests failed"
-                        << XERCES_STD_QUALIFIER endl;
+            std::wcout  << L"RefArrayOf constructor tests failed"
+                        << std::endl;
             retVal = false;
         }
          else
         {
-            XERCES_STD_QUALIFIER wcout  << L"RefArrayOf constructor tests passed"
-                        << XERCES_STD_QUALIFIER endl;
+            std::wcout  << L"RefArrayOf constructor tests passed"
+                        << std::endl;
         }
-        XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl;
+        std::wcout << std::endl;
 
-        XERCES_STD_QUALIFIER wcout << L"Testing RefArrayOf element access" << XERCES_STD_QUALIFIER endl;
+        std::wcout << L"Testing RefArrayOf element access" << std::endl;
         if (!accessTests())
         {
-            XERCES_STD_QUALIFIER wcout  << L"RefArrayOf element access tests failed"
-                        << XERCES_STD_QUALIFIER endl;
+            std::wcout  << L"RefArrayOf element access tests failed"
+                        << std::endl;
             retVal = false;
         }
          else
         {
-            XERCES_STD_QUALIFIER wcout  << L"RefArrayOf element access tests passed"
-                        << XERCES_STD_QUALIFIER endl;
+            std::wcout  << L"RefArrayOf element access tests passed"
+                        << std::endl;
         }
-        XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl;
+        std::wcout << std::endl;
     }
 
     catch(const XMLException& toCatch)
     {
-        XERCES_STD_QUALIFIER wcout  << L"  ERROR: Unexpected exception!\n   Msg: "
-                    << toCatch.getMessage() << XERCES_STD_QUALIFIER endl;
+        std::wcout  << L"  ERROR: Unexpected exception!\n   Msg: "
+                    << toCatch.getMessage() << std::endl;
         return false;
     }
     return retVal;
diff --git a/tests/src/UtilTests/CoreTests_RefHashTable.cpp b/tests/src/UtilTests/CoreTests_RefHashTable.cpp
index 8fefa78..56ada49 100644
--- a/tests/src/UtilTests/CoreTests_RefHashTable.cpp
+++ b/tests/src/UtilTests/CoreTests_RefHashTable.cpp
@@ -83,32 +83,32 @@
 // ---------------------------------------------------------------------------
 bool testRefHashTable()
 {
-    XERCES_STD_QUALIFIER wcout  << L"----------------------------------\n"
+    std::wcout  << L"----------------------------------\n"
                 << L"Testing RefHashTableOf class\n"
-                << L"----------------------------------" << XERCES_STD_QUALIFIER endl;
+                << L"----------------------------------" << std::endl;
 
     bool retVal = true;
 
     try
     {
-        XERCES_STD_QUALIFIER wcout << L"Testing basic RefHashtable methods" << XERCES_STD_QUALIFIER endl;
+        std::wcout << L"Testing basic RefHashtable methods" << std::endl;
         if (!basicTests())
         {
-            XERCES_STD_QUALIFIER wcout  << L"RefHashtable basic test methods failed"
-                        << XERCES_STD_QUALIFIER endl;
+            std::wcout  << L"RefHashtable basic test methods failed"
+                        << std::endl;
             retVal = false;
         }
          else
         {
-            XERCES_STD_QUALIFIER wcout << L"RefHashtable basic tests passed" << XERCES_STD_QUALIFIER endl;
+            std::wcout << L"RefHashtable basic tests passed" << std::endl;
         }
-        XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl;
+        std::wcout << std::endl;
     }
 
     catch(const XMLException& toCatch)
     {
-        XERCES_STD_QUALIFIER wcout  << L"  ERROR: Unexpected exception!\n   Msg: "
-                    << toCatch.getMessage() << XERCES_STD_QUALIFIER endl;
+        std::wcout  << L"  ERROR: Unexpected exception!\n   Msg: "
+                    << toCatch.getMessage() << std::endl;
         return false;
     }
     return retVal;
diff --git a/tests/src/UtilTests/CoreTests_RefStack.cpp b/tests/src/UtilTests/CoreTests_RefStack.cpp
index d5a483f..66cfccf 100644
--- a/tests/src/UtilTests/CoreTests_RefStack.cpp
+++ b/tests/src/UtilTests/CoreTests_RefStack.cpp
@@ -51,33 +51,33 @@
 // ---------------------------------------------------------------------------
 bool testRefStack()
 {
-    XERCES_STD_QUALIFIER wcout  << L"----------------------------------\n"
+    std::wcout  << L"----------------------------------\n"
                 << L"Testing RefStackOf template class\n"
-                << L"----------------------------------" << XERCES_STD_QUALIFIER endl;
+                << L"----------------------------------" << std::endl;
 
     bool retVal = true;
 
     try
     {
         // Call other local methods to do specific tests
-        XERCES_STD_QUALIFIER wcout << L"Testing RefStackOf basics" << XERCES_STD_QUALIFIER endl;
+        std::wcout << L"Testing RefStackOf basics" << std::endl;
         if (!basicTests())
         {
-            XERCES_STD_QUALIFIER wcout << L"RefStackOf basic tests failed" << XERCES_STD_QUALIFIER endl;
+            std::wcout << L"RefStackOf basic tests failed" << std::endl;
             retVal = false;
         }
          else
         {
-            XERCES_STD_QUALIFIER wcout  << L"RefArrayOf constructor tests passed"
-                        << XERCES_STD_QUALIFIER endl;
+            std::wcout  << L"RefArrayOf constructor tests passed"
+                        << std::endl;
         }
-        XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl;
+        std::wcout << std::endl;
     }
 
     catch(const XMLException& toCatch)
     {
-        XERCES_STD_QUALIFIER wcout  << L"  ERROR: Unexpected exception!\n   Msg: "
-                    << toCatch.getMessage() << XERCES_STD_QUALIFIER endl;
+        std::wcout  << L"  ERROR: Unexpected exception!\n   Msg: "
+                    << toCatch.getMessage() << std::endl;
         return false;
     }
 
diff --git a/tests/src/UtilTests/CoreTests_RefVector.cpp b/tests/src/UtilTests/CoreTests_RefVector.cpp
index 4067d26..c10ec74 100644
--- a/tests/src/UtilTests/CoreTests_RefVector.cpp
+++ b/tests/src/UtilTests/CoreTests_RefVector.cpp
@@ -55,14 +55,14 @@
     // Make sure the initial capacity is what we set
     if (testVec.curCapacity() != testMax)
     {
-        XERCES_STD_QUALIFIER wcout << L"   Init capacity was incorrect" << XERCES_STD_QUALIFIER endl;
+        std::wcout << L"   Init capacity was incorrect" << std::endl;
         return false;
     }
 
     // Make sure the initial size is zero
     if (testVec.size() != 0)
     {
-        XERCES_STD_QUALIFIER wcout << L"   Init size was not correct" << XERCES_STD_QUALIFIER endl;
+        std::wcout << L"   Init size was not correct" << std::endl;
         return false;
     }
 
@@ -70,7 +70,7 @@
     testVec.addElement(new T);
     if (testVec.size() != 1)
     {
-        XERCES_STD_QUALIFIER wcout << L"   Adding one element caused bad size" << XERCES_STD_QUALIFIER endl;
+        std::wcout << L"   Adding one element caused bad size" << std::endl;
         return false;
     }
 
@@ -78,8 +78,8 @@
     testVec.addElement(new T);
     if (testVec.size() != 2)
     {
-        XERCES_STD_QUALIFIER wcout  << L"   Adding another element caused bad size"
-                    << XERCES_STD_QUALIFIER endl;
+        std::wcout  << L"   Adding another element caused bad size"
+                    << std::endl;
         return false;
     }
 
@@ -89,8 +89,8 @@
 
     if (testVec.curCapacity() == testMax)
     {
-        XERCES_STD_QUALIFIER wcout  << L"   Adding another element failed to cause an expansion"
-                    << XERCES_STD_QUALIFIER endl;
+        std::wcout  << L"   Adding another element failed to cause an expansion"
+                    << std::endl;
         return false;
     }
 
@@ -108,8 +108,8 @@
 
     if (!caughtIt)
     {
-        XERCES_STD_QUALIFIER wcout  << L"   Failed to catch array bounds error at element 4"
-                    << XERCES_STD_QUALIFIER endl;
+        std::wcout  << L"   Failed to catch array bounds error at element 4"
+                    << std::endl;
         return false;
     }
 
@@ -118,8 +118,8 @@
 
     if (testVec.size() != 3)
     {
-        XERCES_STD_QUALIFIER wcout  << L"   Removing an element did not adjust size correctly"
-                    << XERCES_STD_QUALIFIER endl;
+        std::wcout  << L"   Removing an element did not adjust size correctly"
+                    << std::endl;
         return false;
     }
 
@@ -130,8 +130,8 @@
 
     if (testVec.size() != 0)
     {
-        XERCES_STD_QUALIFIER wcout  << L"   Removing all elements did not zero the size"
-                    << XERCES_STD_QUALIFIER endl;
+        std::wcout  << L"   Removing all elements did not zero the size"
+                    << std::endl;
         return false;
     }
 
@@ -149,8 +149,8 @@
 
     if (!caughtIt)
     {
-        XERCES_STD_QUALIFIER wcout  << L"   Failed to catch array bounds error at element 0"
-                    << XERCES_STD_QUALIFIER endl;
+        std::wcout  << L"   Failed to catch array bounds error at element 0"
+                    << std::endl;
         return false;
     }
 
@@ -160,7 +160,7 @@
     testVec.insertElementAt(new T, 0);
     if (testVec.size() != 3)
     {
-        XERCES_STD_QUALIFIER wcout << L"   Inserting elements caused bad size" << XERCES_STD_QUALIFIER endl;
+        std::wcout << L"   Inserting elements caused bad size" << std::endl;
         return false;
     }
 
@@ -169,7 +169,7 @@
 
     if (testVec.size() != 0)
     {
-        XERCES_STD_QUALIFIER wcout  << L"   removeAllElements caused bad size" << XERCES_STD_QUALIFIER endl;
+        std::wcout  << L"   removeAllElements caused bad size" << std::endl;
         return false;
     }
 
@@ -198,8 +198,8 @@
     {
         if (*testVec.elementAt(index) != T(index))
         {
-            XERCES_STD_QUALIFIER wcout  << L"   addElement put elements in wrong order"
-                        << XERCES_STD_QUALIFIER endl;
+            std::wcout  << L"   addElement put elements in wrong order"
+                        << std::endl;
             return false;
         }
     }
@@ -211,8 +211,8 @@
     {
         if (*testVec.elementAt(index) != T(index+1))
         {
-            XERCES_STD_QUALIFIER wcout  << L"   removeElement at head removed wrong element"
-                        << XERCES_STD_QUALIFIER endl;
+            std::wcout  << L"   removeElement at head removed wrong element"
+                        << std::endl;
             return false;
         }
     }
@@ -224,8 +224,8 @@
     {
         if (*testVec.elementAt(index) != T(index+1))
         {
-            XERCES_STD_QUALIFIER wcout  << L"   removeElement at end removed wrong element"
-                        << XERCES_STD_QUALIFIER endl;
+            std::wcout  << L"   removeElement at end removed wrong element"
+                        << std::endl;
             return false;
         }
     }
@@ -244,29 +244,29 @@
     //
     // Do the common reference vector tests for ints, bools and strings.
     //
-    XERCES_STD_QUALIFIER wcout << L"Testing RefVectorOf<int>, common tests" << XERCES_STD_QUALIFIER endl;
+    std::wcout << L"Testing RefVectorOf<int>, common tests" << std::endl;
     if (!commonRefTests<int>())
     {
-        XERCES_STD_QUALIFIER wcout << L"RefVectorOf<int> failed" << XERCES_STD_QUALIFIER endl;
+        std::wcout << L"RefVectorOf<int> failed" << std::endl;
         retVal = false;
     }
      else
     {
-        XERCES_STD_QUALIFIER wcout << L"RefVectorOf<int> passed" << XERCES_STD_QUALIFIER endl;
+        std::wcout << L"RefVectorOf<int> passed" << std::endl;
     }
-    XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl;
+    std::wcout << std::endl;
 
-    XERCES_STD_QUALIFIER wcout << L"Testing RefVectorOf<bool>, common tests" << XERCES_STD_QUALIFIER endl;
+    std::wcout << L"Testing RefVectorOf<bool>, common tests" << std::endl;
     if (!commonRefTests<bool>())
     {
-        XERCES_STD_QUALIFIER wcout << L"RefVectorOf<bool> failed" << XERCES_STD_QUALIFIER endl;
+        std::wcout << L"RefVectorOf<bool> failed" << std::endl;
         retVal = false;
     }
      else
     {
-        XERCES_STD_QUALIFIER wcout << L"RefVectorOf<bool> passed" << XERCES_STD_QUALIFIER endl;
+        std::wcout << L"RefVectorOf<bool> passed" << std::endl;
     }
-    XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl;
+    std::wcout << std::endl;
 
 
     //
@@ -274,17 +274,17 @@
     //  the instantiation type be of a fundamental value, because its going
     //  to test element ordering issues.
     //
-    XERCES_STD_QUALIFIER wcout << L"Testing RefVectorOf<int>, extended tests" << XERCES_STD_QUALIFIER endl;
+    std::wcout << L"Testing RefVectorOf<int>, extended tests" << std::endl;
     if (!extendedRefTests<int>())
     {
-        XERCES_STD_QUALIFIER wcout << L"Extended RefVectorOf<int> failed" << XERCES_STD_QUALIFIER endl;
+        std::wcout << L"Extended RefVectorOf<int> failed" << std::endl;
         retVal = false;
     }
      else
     {
-        XERCES_STD_QUALIFIER wcout << L"Extended RefVectorOf<int> passed" << XERCES_STD_QUALIFIER endl;
+        std::wcout << L"Extended RefVectorOf<int> passed" << std::endl;
     }
-    XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl;
+    std::wcout << std::endl;
 
     return retVal;
 }
@@ -306,15 +306,15 @@
     {
         if (enumTest.nextElement() != index++)
         {
-            XERCES_STD_QUALIFIER wcout << L"    Enumerator sequence was incorrect" << XERCES_STD_QUALIFIER endl;
+            std::wcout << L"    Enumerator sequence was incorrect" << std::endl;
             return false;
         }
     }
 
     if (index != 32)
     {
-        XERCES_STD_QUALIFIER wcout  << L"    Enumerator did not enum enough elements"
-                    << XERCES_STD_QUALIFIER endl;
+        std::wcout  << L"    Enumerator did not enum enough elements"
+                    << std::endl;
         return false;
     }
     return true;
@@ -327,9 +327,9 @@
 // ---------------------------------------------------------------------------
 bool testRefVector()
 {
-    XERCES_STD_QUALIFIER wcout  << L"----------------------------------\n"
+    std::wcout  << L"----------------------------------\n"
                 << L"Testing RefVectorOf template class\n"
-                << L"----------------------------------" << XERCES_STD_QUALIFIER endl;
+                << L"----------------------------------" << std::endl;
 
     bool retVal = true;
 
@@ -340,23 +340,23 @@
             retVal = false;
 
         // Test the enumerator
-        XERCES_STD_QUALIFIER wcout << L"Testing RefVectorEnumerator" << XERCES_STD_QUALIFIER endl;
+        std::wcout << L"Testing RefVectorEnumerator" << std::endl;
         if (!enumTests())
         {
-            XERCES_STD_QUALIFIER wcout << L"RefVectorEnumeration failed" << XERCES_STD_QUALIFIER endl;
+            std::wcout << L"RefVectorEnumeration failed" << std::endl;
             retVal = false;
         }
          else
         {
-            XERCES_STD_QUALIFIER wcout << L"RefVectorEnumeration passed" << XERCES_STD_QUALIFIER endl;
+            std::wcout << L"RefVectorEnumeration passed" << std::endl;
         }
-        XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl;
+        std::wcout << std::endl;
     }
 
     catch(const XMLException& toCatch)
     {
-        XERCES_STD_QUALIFIER wcout  << L"  ERROR: Unexpected exception!\n   Msg: "
-                    << toCatch.getMessage() << XERCES_STD_QUALIFIER endl;
+        std::wcout  << L"  ERROR: Unexpected exception!\n   Msg: "
+                    << toCatch.getMessage() << std::endl;
         return false;
     }
     return retVal;
diff --git a/tests/src/UtilTests/CoreTests_String.cpp b/tests/src/UtilTests/CoreTests_String.cpp
index 002be00..b1c52e4 100644
--- a/tests/src/UtilTests/CoreTests_String.cpp
+++ b/tests/src/UtilTests/CoreTests_String.cpp
@@ -26,7 +26,7 @@
 #include "CoreTests.hpp"
 #include <xercesc/util/ArrayIndexOutOfBoundsException.hpp>
 #include <xercesc/util/ValueArrayOf.hpp>
-#include <string.h>
+#include <cstring>
 
 
 // ---------------------------------------------------------------------------
@@ -40,9 +40,9 @@
 // ---------------------------------------------------------------------------
 bool testString()
 {
-    XERCES_STD_QUALIFIER wcout  << L"----------------------------------\n"
+    std::wcout  << L"----------------------------------\n"
                 << L"Testing String class\n"
-                << L"----------------------------------" << XERCES_STD_QUALIFIER endl;
+                << L"----------------------------------" << std::endl;
 
     bool retVal = true;
 
@@ -52,8 +52,8 @@
 
     catch(const XMLException& toCatch)
     {
-        XERCES_STD_QUALIFIER wcout  << L"  ERROR: Unexpected exception!\n   Msg: "
-                    << toCatch.getMessage() << XERCES_STD_QUALIFIER endl;
+        std::wcout  << L"  ERROR: Unexpected exception!\n   Msg: "
+                    << toCatch.getMessage() << std::endl;
         return false;
     }
     return retVal;
diff --git a/tests/src/UtilTests/CoreTests_Transcoders.cpp b/tests/src/UtilTests/CoreTests_Transcoders.cpp
index a6949ae..8d453ab 100644
--- a/tests/src/UtilTests/CoreTests_Transcoders.cpp
+++ b/tests/src/UtilTests/CoreTests_Transcoders.cpp
@@ -44,9 +44,9 @@
 // ---------------------------------------------------------------------------
 bool testTranscoders()
 {
-    XERCES_STD_QUALIFIER wcout  << L"----------------------------------\n"
+    std::wcout  << L"----------------------------------\n"
                 << L"Testing transcoder classes\n"
-                << L"----------------------------------" << XERCES_STD_QUALIFIER endl;
+                << L"----------------------------------" << std::endl;
 
     return true;
 }
diff --git a/tests/src/UtilTests/CoreTests_URL.cpp b/tests/src/UtilTests/CoreTests_URL.cpp
index fe0de3c..3f4101e 100644
--- a/tests/src/UtilTests/CoreTests_URL.cpp
+++ b/tests/src/UtilTests/CoreTests_URL.cpp
@@ -60,20 +60,20 @@
 
     if (!test && expected)
     {
-        XERCES_STD_QUALIFIER wcout << L"Expected value for the " << fieldName
-                   << " field was not present" << XERCES_STD_QUALIFIER endl;
+        std::wcout << L"Expected value for the " << fieldName
+                   << " field was not present" << std::endl;
         return false;
     }
      else if (test && !expected)
     {
-        XERCES_STD_QUALIFIER wcout << L"The value '" << test << L"' for the " << fieldName
-                   << L" was not expected" << XERCES_STD_QUALIFIER endl;
+        std::wcout << L"The value '" << test << L"' for the " << fieldName
+                   << L" was not expected" << std::endl;
         return false;
     }
      else if (XMLString::compareString(test, expected))
     {
-        XERCES_STD_QUALIFIER wcout  << L"Expected: " << expected << L", but got: " << test
-                    << XERCES_STD_QUALIFIER endl;
+        std::wcout  << L"Expected: " << expected << L", but got: " << test
+                    << std::endl;
         return false;
     }
     return true;
@@ -98,8 +98,8 @@
 
     if (testURL.getPortNum() != testInfo.portNum)
     {
-        XERCES_STD_QUALIFIER wcout << L"Expected port number: " << testInfo.portNum
-                   << L" but got: " << testURL.getPortNum() << XERCES_STD_QUALIFIER endl;
+        std::wcout << L"Expected port number: " << testInfo.portNum
+                   << L" but got: " << testURL.getPortNum() << std::endl;
         return false;
     }
 
@@ -318,8 +318,8 @@
 
         if (XMLString::compareString(testURL.getURLText(), testList[index].result))
         {
-            XERCES_STD_QUALIFIER wcout  << L"Expected URL: " << testList[index].result
-                        << L" but got: " << testURL.getURLText() << XERCES_STD_QUALIFIER endl;
+            std::wcout  << L"Expected URL: " << testList[index].result
+                        << L" but got: " << testURL.getURLText() << std::endl;
             retVal = false;
         }
     }
@@ -332,44 +332,44 @@
 // ---------------------------------------------------------------------------
 bool testURL()
 {
-    XERCES_STD_QUALIFIER wcout  << L"----------------------------------\n"
+    std::wcout  << L"----------------------------------\n"
                 << L"Testing URL class \n"
                 << L"----------------------------------"
-                << XERCES_STD_QUALIFIER endl;
+                << std::endl;
 
     bool retVal = true;
     try
     {
         // Call other local methods to do specific tests
-        XERCES_STD_QUALIFIER wcout << L"Testing basic URL parsing" << XERCES_STD_QUALIFIER endl;
+        std::wcout << L"Testing basic URL parsing" << std::endl;
         if (!basicURLTest())
         {
-            XERCES_STD_QUALIFIER wcout << L"Basic URL parsing tests failed" << XERCES_STD_QUALIFIER endl;
+            std::wcout << L"Basic URL parsing tests failed" << std::endl;
             retVal = false;
         }
          else
         {
-            XERCES_STD_QUALIFIER wcout << L"Basic URL parsing tests passed" << XERCES_STD_QUALIFIER endl;
+            std::wcout << L"Basic URL parsing tests passed" << std::endl;
         }
-        XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl;
+        std::wcout << std::endl;
 
-        XERCES_STD_QUALIFIER wcout << L"Testing relative URL parsing" << XERCES_STD_QUALIFIER endl;
+        std::wcout << L"Testing relative URL parsing" << std::endl;
         if (!relativeURLTest())
         {
-            XERCES_STD_QUALIFIER wcout << L"Relative URL parsing tests failed" << XERCES_STD_QUALIFIER endl;
+            std::wcout << L"Relative URL parsing tests failed" << std::endl;
             retVal = false;
         }
          else
         {
-            XERCES_STD_QUALIFIER wcout << L"Relative URL parsing tests passed" << XERCES_STD_QUALIFIER endl;
+            std::wcout << L"Relative URL parsing tests passed" << std::endl;
         }
-        XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl;
+        std::wcout << std::endl;
     }
 
     catch(const XMLException& toCatch)
     {
-        XERCES_STD_QUALIFIER wcout  << L"  ERROR: Unexpected exception!\n   Msg: "
-                    << toCatch.getMessage() << XERCES_STD_QUALIFIER endl;
+        std::wcout  << L"  ERROR: Unexpected exception!\n   Msg: "
+                    << toCatch.getMessage() << std::endl;
         return false;
     }
     return retVal;
diff --git a/tests/src/UtilTests/CoreTests_ValueArray.cpp b/tests/src/UtilTests/CoreTests_ValueArray.cpp
index 589e107..0f7463e 100644
--- a/tests/src/UtilTests/CoreTests_ValueArray.cpp
+++ b/tests/src/UtilTests/CoreTests_ValueArray.cpp
@@ -47,8 +47,8 @@
     // Make sure that it has the right initial size
     if (testArray1.length() != 255)
     {
-        XERCES_STD_QUALIFIER wcout  << L"    The ctor created wrong length() value"
-                    << XERCES_STD_QUALIFIER endl;
+        std::wcout  << L"    The ctor created wrong length() value"
+                    << std::endl;
         return false;
     }
 
@@ -57,16 +57,16 @@
 
     if (testArray2.length() != 255)
     {
-        XERCES_STD_QUALIFIER wcout << L"    The copy ctor created wrong length() value"
-                << XERCES_STD_QUALIFIER endl;
+        std::wcout << L"    The copy ctor created wrong length() value"
+                << std::endl;
         return false;
     }
 
     // Test the equality of the two arrays
     if (testArray1 != testArray2)
     {
-        XERCES_STD_QUALIFIER wcout  << L"    The copy ctor created unequal arrays"
-                    << XERCES_STD_QUALIFIER endl;
+        std::wcout  << L"    The copy ctor created unequal arrays"
+                    << std::endl;
         return false;
     }
 
@@ -78,8 +78,8 @@
 
     if (testArray3.length() != 4)
     {
-        XERCES_STD_QUALIFIER wcout  << L"    The init values ctor created wrong length() value"
-                    << XERCES_STD_QUALIFIER endl;
+        std::wcout  << L"    The init values ctor created wrong length() value"
+                    << std::endl;
         return false;
     }
 
@@ -89,8 +89,8 @@
     ||  (testArray3[2] != 3.3)
     ||  (testArray3[3] != 4.4))
     {
-        XERCES_STD_QUALIFIER wcout  << L"    The init values ctor did not init contents correctly"
-                    << XERCES_STD_QUALIFIER endl;
+        std::wcout  << L"    The init values ctor did not init contents correctly"
+                    << std::endl;
         return false;
     }
 
@@ -103,8 +103,8 @@
 
     if (testArray4 != testArray3)
     {
-        XERCES_STD_QUALIFIER wcout  << L"    Assignment did not create equal arrays"
-                    << XERCES_STD_QUALIFIER endl;
+        std::wcout  << L"    Assignment did not create equal arrays"
+                    << std::endl;
         return false;
     }
     return true;
@@ -125,8 +125,8 @@
     {
         if (testArray1[index] != index)
         {
-            XERCES_STD_QUALIFIER wcout  << L"    Failed to read back values just set"
-                        << XERCES_STD_QUALIFIER endl;
+            std::wcout  << L"    Failed to read back values just set"
+                        << std::endl;
             return false;
         }
     }
@@ -145,7 +145,7 @@
 
     if (!caughtIt)
     {
-        XERCES_STD_QUALIFIER wcout << L"    Failed to catch index error" << XERCES_STD_QUALIFIER endl;
+        std::wcout << L"    Failed to catch index error" << std::endl;
         return false;
     }
 
@@ -158,48 +158,48 @@
 // ---------------------------------------------------------------------------
 bool testValueArray()
 {
-    XERCES_STD_QUALIFIER wcout  << L"----------------------------------\n"
+    std::wcout  << L"----------------------------------\n"
                 << L"Testing ValueArrayOf template class\n"
-                << L"----------------------------------" << XERCES_STD_QUALIFIER endl;
+                << L"----------------------------------" << std::endl;
 
     bool retVal = true;
 
     try
     {
         // Call other local methods to do specific tests
-        XERCES_STD_QUALIFIER wcout << L"Testing ValueArrayOf contructors" << XERCES_STD_QUALIFIER endl;
+        std::wcout << L"Testing ValueArrayOf contructors" << std::endl;
         if (!constructorTests())
         {
-            XERCES_STD_QUALIFIER wcout  << L"ValueArrayOf constructor tests failed"
-                        << XERCES_STD_QUALIFIER endl;
+            std::wcout  << L"ValueArrayOf constructor tests failed"
+                        << std::endl;
             retVal = false;
         }
          else
         {
-            XERCES_STD_QUALIFIER wcout  << L"ValueArrayOf constructor tests passed"
-                        << XERCES_STD_QUALIFIER endl;
+            std::wcout  << L"ValueArrayOf constructor tests passed"
+                        << std::endl;
         }
-        XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl;
+        std::wcout << std::endl;
 
-        XERCES_STD_QUALIFIER wcout << L"Testing ValueArrayOf element access" << XERCES_STD_QUALIFIER endl;
+        std::wcout << L"Testing ValueArrayOf element access" << std::endl;
         if (!accessTests())
         {
-            XERCES_STD_QUALIFIER wcout  << L"ValueArrayOf element access tests failed"
-                        << XERCES_STD_QUALIFIER endl;
+            std::wcout  << L"ValueArrayOf element access tests failed"
+                        << std::endl;
             retVal = false;
         }
          else
         {
-            XERCES_STD_QUALIFIER wcout  << L"ValueArrayOf element access tests passed"
-                        << XERCES_STD_QUALIFIER endl;
+            std::wcout  << L"ValueArrayOf element access tests passed"
+                        << std::endl;
         }
-        XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl;
+        std::wcout << std::endl;
     }
 
     catch(const XMLException& toCatch)
     {
-        XERCES_STD_QUALIFIER wcout  << L"  ERROR: Unexpected exception!\n   Msg: "
-                    << toCatch.getMessage() << XERCES_STD_QUALIFIER endl;
+        std::wcout  << L"  ERROR: Unexpected exception!\n   Msg: "
+                    << toCatch.getMessage() << std::endl;
         return false;
     }
     return retVal;
diff --git a/tests/src/UtilTests/CoreTests_ValueStack.cpp b/tests/src/UtilTests/CoreTests_ValueStack.cpp
index 4c3247c..adab298 100644
--- a/tests/src/UtilTests/CoreTests_ValueStack.cpp
+++ b/tests/src/UtilTests/CoreTests_ValueStack.cpp
@@ -51,33 +51,33 @@
 // ---------------------------------------------------------------------------
 bool testValueStack()
 {
-    XERCES_STD_QUALIFIER wcout  << L"----------------------------------\n"
+    std::wcout  << L"----------------------------------\n"
                 << L"Testing ValueStackOf template class\n"
-                << L"----------------------------------" << XERCES_STD_QUALIFIER endl;
+                << L"----------------------------------" << std::endl;
 
     bool retVal = true;
 
     try
     {
         // Call other local methods to do specific tests
-        XERCES_STD_QUALIFIER wcout << L"Testing ValueStackOf basics" << XERCES_STD_QUALIFIER endl;
+        std::wcout << L"Testing ValueStackOf basics" << std::endl;
         if (!basicTests())
         {
-            XERCES_STD_QUALIFIER wcout << L"ValueStackOf basic tests failed" << XERCES_STD_QUALIFIER endl;
+            std::wcout << L"ValueStackOf basic tests failed" << std::endl;
             retVal = false;
         }
          else
         {
-            XERCES_STD_QUALIFIER wcout  << L"ValueArrayOf constructor tests passed"
-                        << XERCES_STD_QUALIFIER endl;
+            std::wcout  << L"ValueArrayOf constructor tests passed"
+                        << std::endl;
         }
-        XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl;
+        std::wcout << std::endl;
     }
 
     catch(const XMLException& toCatch)
     {
-        XERCES_STD_QUALIFIER wcout  << L"  ERROR: Unexpected exception!\n   Msg: "
-                    << toCatch.getMessage() << XERCES_STD_QUALIFIER endl;
+        std::wcout  << L"  ERROR: Unexpected exception!\n   Msg: "
+                    << toCatch.getMessage() << std::endl;
         return false;
     }
     return retVal;
diff --git a/tests/src/UtilTests/CoreTests_ValueVector.cpp b/tests/src/UtilTests/CoreTests_ValueVector.cpp
index 5f015ff..15c339f 100644
--- a/tests/src/UtilTests/CoreTests_ValueVector.cpp
+++ b/tests/src/UtilTests/CoreTests_ValueVector.cpp
@@ -50,14 +50,14 @@
     // Make sure the initial capacity is what we set
     if (testVec.curCapacity() != testMax)
     {
-        XERCES_STD_QUALIFIER wcout << L"   Init capacity was bad" << XERCES_STD_QUALIFIER endl;
+        std::wcout << L"   Init capacity was bad" << std::endl;
         return false;
     }
 
     // Make sure the initial size is zero
     if (testVec.size() != 0)
     {
-        XERCES_STD_QUALIFIER wcout << L"   Init size was bad" << XERCES_STD_QUALIFIER endl;
+        std::wcout << L"   Init size was bad" << std::endl;
         return false;
     }
 
@@ -68,7 +68,7 @@
     testVec.addElement(testElem);
     if (testVec.size() != 1)
     {
-        XERCES_STD_QUALIFIER wcout << L"   Adding one element caused bad size" << XERCES_STD_QUALIFIER endl;
+        std::wcout << L"   Adding one element caused bad size" << std::endl;
         return false;
     }
 
@@ -76,14 +76,14 @@
     testVec.addElement(testElem);
     if (testVec.size() != 2)
     {
-        XERCES_STD_QUALIFIER wcout << L"   Adding another element caused bad size" << XERCES_STD_QUALIFIER endl;
+        std::wcout << L"   Adding another element caused bad size" << std::endl;
         return false;
     }
 
     // Test that the two of them are the same
     if (testVec.elementAt(0) != testVec.elementAt(1))
     {
-        XERCES_STD_QUALIFIER wcout << L"   First two elements did not match" << XERCES_STD_QUALIFIER endl;
+        std::wcout << L"   First two elements did not match" << std::endl;
         return false;
     }
 
@@ -93,8 +93,8 @@
 
     if (testVec.curCapacity() == testMax)
     {
-        XERCES_STD_QUALIFIER wcout  << L"   Adding another element failed to cause an expansion"
-                    << XERCES_STD_QUALIFIER endl;
+        std::wcout  << L"   Adding another element failed to cause an expansion"
+                    << std::endl;
         return false;
     }
 
@@ -112,8 +112,8 @@
 
     if (!caughtIt)
     {
-        XERCES_STD_QUALIFIER wcout  << L"   Failed to catch array bounds error at element 4"
-                    << XERCES_STD_QUALIFIER endl;
+        std::wcout  << L"   Failed to catch array bounds error at element 4"
+                    << std::endl;
         return false;
     }
 
@@ -122,8 +122,8 @@
 
     if (testVec.size() != 3)
     {
-        XERCES_STD_QUALIFIER wcout  << L"   Removing an element did not adjust size correctly"
-                    << XERCES_STD_QUALIFIER endl;
+        std::wcout  << L"   Removing an element did not adjust size correctly"
+                    << std::endl;
         return false;
     }
 
@@ -134,8 +134,8 @@
 
     if (testVec.size() != 0)
     {
-        XERCES_STD_QUALIFIER wcout  << L"   Removing all elements did not zero the size"
-                    << XERCES_STD_QUALIFIER endl;
+        std::wcout  << L"   Removing all elements did not zero the size"
+                    << std::endl;
         return false;
     }
 
@@ -153,8 +153,8 @@
 
     if (!caughtIt)
     {
-        XERCES_STD_QUALIFIER wcout  << L"   Failed to catch array bounds error at element 0"
-                    << XERCES_STD_QUALIFIER endl;
+        std::wcout  << L"   Failed to catch array bounds error at element 0"
+                    << std::endl;
         return false;
     }
 
@@ -164,7 +164,7 @@
     testVec.insertElementAt(testElem, 0);
     if (testVec.size() != 3)
     {
-        XERCES_STD_QUALIFIER wcout << L"   Inserting elements caused bad size" << XERCES_STD_QUALIFIER endl;
+        std::wcout << L"   Inserting elements caused bad size" << std::endl;
         return false;
     }
 
@@ -173,7 +173,7 @@
 
     if (testVec.size() != 0)
     {
-        XERCES_STD_QUALIFIER wcout << L"   removeAllElements caused bad size" << XERCES_STD_QUALIFIER endl;
+        std::wcout << L"   removeAllElements caused bad size" << std::endl;
         return false;
     }
     return true;
@@ -201,8 +201,8 @@
     {
         if (testVec.elementAt(index) != T(index))
         {
-            XERCES_STD_QUALIFIER wcout  << L"   addElement put elements in wrong order"
-                        << XERCES_STD_QUALIFIER endl;
+            std::wcout  << L"   addElement put elements in wrong order"
+                        << std::endl;
             return false;
         }
     }
@@ -214,8 +214,8 @@
     {
         if (testVec.elementAt(index) != T(index+1))
         {
-            XERCES_STD_QUALIFIER wcout  << L"   removeElement at head removed wrong element"
-                        << XERCES_STD_QUALIFIER endl;
+            std::wcout  << L"   removeElement at head removed wrong element"
+                        << std::endl;
             return false;
         }
     }
@@ -227,8 +227,8 @@
     {
         if (testVec.elementAt(index) != T(index+1))
         {
-            XERCES_STD_QUALIFIER wcout  << L"   removeElement at end removed wrong element"
-                        << XERCES_STD_QUALIFIER endl;
+            std::wcout  << L"   removeElement at end removed wrong element"
+                        << std::endl;
             return false;
         }
     }
@@ -246,29 +246,29 @@
     //
     // Do the common value vector tests for ints, bools and strings.
     //
-    XERCES_STD_QUALIFIER wcout << L"Testing ValueVectorOf<int>, common tests" << XERCES_STD_QUALIFIER endl;
+    std::wcout << L"Testing ValueVectorOf<int>, common tests" << std::endl;
     if (!commonValueTests<int>())
     {
-        XERCES_STD_QUALIFIER wcout << L"ValueVectorOf<int> failed" << XERCES_STD_QUALIFIER endl;
+        std::wcout << L"ValueVectorOf<int> failed" << std::endl;
         retVal = false;
     }
      else
     {
-        XERCES_STD_QUALIFIER wcout << L"ValueVectorOf<int> passed" << XERCES_STD_QUALIFIER endl;
+        std::wcout << L"ValueVectorOf<int> passed" << std::endl;
     }
-    XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl;
+    std::wcout << std::endl;
 
-    XERCES_STD_QUALIFIER wcout << L"Testing ValueVectorOf<bool>, common tests" << XERCES_STD_QUALIFIER endl;
+    std::wcout << L"Testing ValueVectorOf<bool>, common tests" << std::endl;
     if (!commonValueTests<bool>())
     {
-        XERCES_STD_QUALIFIER wcout << L"ValueVectorOf<bool> failed" << XERCES_STD_QUALIFIER endl;
+        std::wcout << L"ValueVectorOf<bool> failed" << std::endl;
         retVal = false;
     }
      else
     {
-        XERCES_STD_QUALIFIER wcout << L"ValueVectorOf<bool> passed" << XERCES_STD_QUALIFIER endl;
+        std::wcout << L"ValueVectorOf<bool> passed" << std::endl;
     }
-    XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl;
+    std::wcout << std::endl;
 
 
     //
@@ -276,17 +276,17 @@
     //  the instantiation type be of a fundamental value, because its going
     //  to test element ordering issues.
     //
-    XERCES_STD_QUALIFIER wcout << L"Testing ValueVectorOf<int>, extended tests" << XERCES_STD_QUALIFIER endl;
+    std::wcout << L"Testing ValueVectorOf<int>, extended tests" << std::endl;
     if (!extendedValueTests<int>())
     {
-        XERCES_STD_QUALIFIER wcout << L"Extended ValueVectorOf<int> failed" << XERCES_STD_QUALIFIER endl;
+        std::wcout << L"Extended ValueVectorOf<int> failed" << std::endl;
         retVal = false;
     }
      else
     {
-        XERCES_STD_QUALIFIER wcout << L"Extended ValueVectorOf<int> passed" << XERCES_STD_QUALIFIER endl;
+        std::wcout << L"Extended ValueVectorOf<int> passed" << std::endl;
     }
-    XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl;
+    std::wcout << std::endl;
 
     return retVal;
 }
@@ -308,16 +308,16 @@
     {
         if (enumTest.nextElement() != index++)
         {
-            XERCES_STD_QUALIFIER wcout  << L"    Enumerator sequence was incorrect"
-                        << XERCES_STD_QUALIFIER endl;
+            std::wcout  << L"    Enumerator sequence was incorrect"
+                        << std::endl;
             return false;
         }
     }
 
     if (index != 32)
     {
-        XERCES_STD_QUALIFIER wcout  << L"    Enumerator did not enum enough elements"
-                    << XERCES_STD_QUALIFIER endl;
+        std::wcout  << L"    Enumerator did not enum enough elements"
+                    << std::endl;
         return false;
     }
 
@@ -330,9 +330,9 @@
 // ---------------------------------------------------------------------------
 bool testValueVector()
 {
-    XERCES_STD_QUALIFIER wcout  << L"----------------------------------\n"
+    std::wcout  << L"----------------------------------\n"
                 << L"Testing ValueVectorOf template class\n"
-                << L"----------------------------------" << XERCES_STD_QUALIFIER endl;
+                << L"----------------------------------" << std::endl;
 
     bool retVal = true;
 
@@ -343,23 +343,23 @@
             retVal = false;
 
         // Test the enumerator
-        XERCES_STD_QUALIFIER wcout << L"Testing ValueVectorEnumerator" << XERCES_STD_QUALIFIER endl;
+        std::wcout << L"Testing ValueVectorEnumerator" << std::endl;
         if (!enumTests())
         {
-            XERCES_STD_QUALIFIER wcout << L"ValueVectorEnumeration failed" << XERCES_STD_QUALIFIER endl;
+            std::wcout << L"ValueVectorEnumeration failed" << std::endl;
             retVal = false;
         }
          else
         {
-            XERCES_STD_QUALIFIER wcout << L"ValueVectorEnumeration passed" << XERCES_STD_QUALIFIER endl;
+            std::wcout << L"ValueVectorEnumeration passed" << std::endl;
         }
-        XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl;
+        std::wcout << std::endl;
     }
 
     catch(const XMLException& toCatch)
     {
-        XERCES_STD_QUALIFIER wcout  << L"  ERROR: Unexpected exception!\n   Msg: "
-                    << toCatch.getMessage() << XERCES_STD_QUALIFIER endl;
+        std::wcout  << L"  ERROR: Unexpected exception!\n   Msg: "
+                    << toCatch.getMessage() << std::endl;
         return false;
     }
 
diff --git a/tests/src/XSTSHarness/XMLHarnessHandlers.cpp b/tests/src/XSTSHarness/XMLHarnessHandlers.cpp
index f46323e..ce5a0b8 100644
--- a/tests/src/XSTSHarness/XMLHarnessHandlers.cpp
+++ b/tests/src/XSTSHarness/XMLHarnessHandlers.cpp
@@ -131,18 +131,18 @@
         catch (const OutOfMemoryException&)
         {
             fatalFailure=true;
-            XERCES_STD_QUALIFIER cout << "Test " << StrX(testName) << " ran out of memory" << XERCES_STD_QUALIFIER endl;
+            std::cout << "Test " << StrX(testName) << " ran out of memory" << std::endl;
             success=false;
         }
         catch(const XMLException& exc)
         {
-            XERCES_STD_QUALIFIER cout << "Test " << StrX(testName) << " threw " << StrX(exc.getMessage()) << XERCES_STD_QUALIFIER endl;
+            std::cout << "Test " << StrX(testName) << " threw " << StrX(exc.getMessage()) << std::endl;
             success=false;
         }
         catch (...)
         {
             fatalFailure=true;
-            XERCES_STD_QUALIFIER cout << "Test " << StrX(testName) << " crashed" << XERCES_STD_QUALIFIER endl;
+            std::cout << "Test " << StrX(testName) << " crashed" << std::endl;
             success=false;
             exit(1);
         }
@@ -161,13 +161,13 @@
             else if(XMLString::equals(validity, szInvalid) || XMLString::equals(validity, szNotWellFormed) || XMLString::equals(validity, szError) )
                 expResult=invalid;
             else
-                XERCES_STD_QUALIFIER cerr << "Unknown result type " << StrX(validity) << XERCES_STD_QUALIFIER endl;
+                std::cerr << "Unknown result type " << StrX(validity) << std::endl;
             if(success && !fErrorHandler.getSawErrors())
             {
                 if(expResult!=valid)
                 {
                     fFailures++;
-                    XERCES_STD_QUALIFIER cout << "Test " << StrX(testName) << " succeeded but was expected to fail" << XERCES_STD_QUALIFIER endl;
+                    std::cout << "Test " << StrX(testName) << " succeeded but was expected to fail" << std::endl;
                     printFile(testSet);
                 }
             }
@@ -176,8 +176,8 @@
                 if(expResult!=invalid)
                 {
                     fFailures++;
-                    XERCES_STD_QUALIFIER cout << "Test " << StrX(testName) << " failed but was expected to pass" << XERCES_STD_QUALIFIER endl;
-                    XERCES_STD_QUALIFIER cout << "Reported error: " << StrX(fErrorHandler.getErrorText()) << XERCES_STD_QUALIFIER endl;
+                    std::cout << "Test " << StrX(testName) << " failed but was expected to pass" << std::endl;
+                    std::cout << "Reported error: " << StrX(fErrorHandler.getErrorText()) << std::endl;
                     printFile(testSet);
                 }
             }
diff --git a/tests/src/XSTSHarness/XMLHarnessHandlers.hpp b/tests/src/XSTSHarness/XMLHarnessHandlers.hpp
index 7a43d45..82d2e95 100644
--- a/tests/src/XSTSHarness/XMLHarnessHandlers.hpp
+++ b/tests/src/XSTSHarness/XMLHarnessHandlers.hpp
@@ -29,7 +29,7 @@
 #include <xercesc/util/XMLURL.hpp>
 #include <xercesc/util/RefStackOf.hpp>
 
-XERCES_CPP_NAMESPACE_USE
+using namespace XERCES_CPP_NAMESPACE;
 
 class XMLHarnessHandlers : public BaseHarnessHandlers 
 {
diff --git a/tests/src/XSTSHarness/XSTSHarness.cpp b/tests/src/XSTSHarness/XSTSHarness.cpp
index ce3f564..3e48564 100644
--- a/tests/src/XSTSHarness/XSTSHarness.cpp
+++ b/tests/src/XSTSHarness/XSTSHarness.cpp
@@ -31,11 +31,7 @@
 #include <xercesc/util/BinInputStream.hpp>
 #include <xercesc/sax2/SAX2XMLReader.hpp>
 #include <xercesc/sax2/XMLReaderFactory.hpp>
-#if defined(XERCES_NEW_IOSTREAMS)
 #include <fstream>
-#else
-#include <fstream.h>
-#endif
 #include <xercesc/util/OutOfMemoryException.hpp>
 #include <xercesc/framework/MemBufInputSource.hpp>
 
@@ -49,7 +45,7 @@
 // ---------------------------------------------------------------------------
 void usage()
 {
-    XERCES_STD_QUALIFIER cout <<
+    std::cout <<
             "\n"
             "Usage:\n"
             "    XSTSHarness <testSet>\n"
@@ -62,7 +58,7 @@
             "http://www.w3.org/XML/Test/xmlts20080827.zip\n"
             "Run this executable against the xmlconf.xml file found in the top directory\n"
             "\n"
-         << XERCES_STD_QUALIFIER endl;
+         << std::endl;
 }
 
 BaseHarnessHandlers::BaseHarnessHandlers(const XMLCh* baseURL) :
@@ -76,27 +72,27 @@
 void BaseHarnessHandlers::error(const SAXParseException& e)
 {
     fSawErrors = true;
-    XERCES_STD_QUALIFIER cout << "\nError at file " << StrX(e.getSystemId())
+    std::cout << "\nError at file " << StrX(e.getSystemId())
 		 << ", line " << e.getLineNumber()
 		 << ", char " << e.getColumnNumber()
-         << "\n  Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+         << "\n  Message: " << StrX(e.getMessage()) << std::endl;
 }
 
 void BaseHarnessHandlers::fatalError(const SAXParseException& e)
 {
     fSawErrors = true;
-    XERCES_STD_QUALIFIER cout << "\nFatal Error at file " << StrX(e.getSystemId())
+    std::cout << "\nFatal Error at file " << StrX(e.getSystemId())
 		 << ", line " << e.getLineNumber()
 		 << ", char " << e.getColumnNumber()
-         << "\n  Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+         << "\n  Message: " << StrX(e.getMessage()) << std::endl;
 }
 
 void BaseHarnessHandlers::warning(const SAXParseException& e)
 {
-    XERCES_STD_QUALIFIER cout << "\nWarning at file " << StrX(e.getSystemId())
+    std::cout << "\nWarning at file " << StrX(e.getSystemId())
 		 << ", line " << e.getLineNumber()
 		 << ", char " << e.getColumnNumber()
-         << "\n  Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+         << "\n  Message: " << StrX(e.getMessage()) << std::endl;
 }
 
 void BaseHarnessHandlers::printFile(XMLURL& url)
@@ -106,10 +102,10 @@
     BinInputStream* stream=url.makeNewStream();
     if(stream==NULL)
     {
-        XERCES_STD_QUALIFIER cout << "File " << StrX(url.getURLText()) << " is missing" << XERCES_STD_QUALIFIER endl;
+        std::cout << "File " << StrX(url.getURLText()) << " is missing" << std::endl;
         return;
     }
-    XERCES_STD_QUALIFIER cout << "Content of file " << StrX(url.getURLText()) << XERCES_STD_QUALIFIER endl;
+    std::cout << "Content of file " << StrX(url.getURLText()) << std::endl;
     XMLByte buffer[256];
     XMLSize_t nRead;
     while((nRead=stream->readBytes(buffer, 255)) >0)
@@ -127,9 +123,9 @@
             if(buffer[idx]==0)
                 break;
         }
-        XERCES_STD_QUALIFIER cout << (const char*)buffer;
+        std::cout << (const char*)buffer;
     }
-    XERCES_STD_QUALIFIER cout << XERCES_STD_QUALIFIER endl;
+    std::cout << std::endl;
     delete stream;
 }
 
@@ -254,8 +250,8 @@
 
     catch (const XMLException& toCatch)
     {
-        XERCES_STD_QUALIFIER cout << "Error during initialization! Message:\n"
-            << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl;
+        std::cout << "Error during initialization! Message:\n"
+            << StrX(toCatch.getMessage()) << std::endl;
         return 1;
     }
 
@@ -279,8 +275,8 @@
         }
         else
         {
-            XERCES_STD_QUALIFIER cout << "Unknown option '" << argV[argInd]
-                << "', ignoring it\n" << XERCES_STD_QUALIFIER endl;
+            std::cout << "Unknown option '" << argV[argInd]
+                << "', ignoring it\n" << std::endl;
         }
     }
 
@@ -345,19 +341,19 @@
     }
     catch (const OutOfMemoryException&)
     {
-        XERCES_STD_QUALIFIER cout << "OutOfMemoryException" << XERCES_STD_QUALIFIER endl;
+        std::cout << "OutOfMemoryException" << std::endl;
         errorOccurred = true;
     }
     catch (const XMLException& e)
     {
-        XERCES_STD_QUALIFIER cout << "\nError during parsing: '" << xmlFile << "'\n"
+        std::cout << "\nError during parsing: '" << xmlFile << "'\n"
             << "Exception message is:  \n"
-            << StrX(e.getMessage()) << "\n" << XERCES_STD_QUALIFIER endl;
+            << StrX(e.getMessage()) << "\n" << std::endl;
         errorOccurred = true;
     }
     catch (...)
     {
-        XERCES_STD_QUALIFIER cout << "\nUnexpected exception during parsing: '" << xmlFile << "'\n";
+        std::cout << "\nUnexpected exception during parsing: '" << xmlFile << "'\n";
         errorOccurred = true;
     }
 
@@ -367,19 +363,19 @@
     if (handler->getSawErrors())
         errorOccurred = true;
 
-    XERCES_STD_QUALIFIER cout << "Scanner: " << StrX(g_scanner) << XERCES_STD_QUALIFIER endl;
-    XERCES_STD_QUALIFIER cout << "  Total tests: " << handler->getTotalTests() << XERCES_STD_QUALIFIER endl;
-    XERCES_STD_QUALIFIER cout << "  Failed tests: " << handler->getFailedTests() << XERCES_STD_QUALIFIER endl;
-    XERCES_STD_QUALIFIER cout << "  Success rate: " << ((double)(handler->getTotalTests()-handler->getFailedTests()))/(double)handler->getTotalTests()*100 << "%" << XERCES_STD_QUALIFIER endl;
-    XERCES_STD_QUALIFIER cout << "  Duration: ";
+    std::cout << "Scanner: " << StrX(g_scanner) << std::endl;
+    std::cout << "  Total tests: " << handler->getTotalTests() << std::endl;
+    std::cout << "  Failed tests: " << handler->getFailedTests() << std::endl;
+    std::cout << "  Success rate: " << ((double)(handler->getTotalTests()-handler->getFailedTests()))/(double)handler->getTotalTests()*100 << "%" << std::endl;
+    std::cout << "  Duration: ";
     if(duration > 60000)
     {
-        XERCES_STD_QUALIFIER cout << duration/60000 << ":";
+        std::cout << duration/60000 << ":";
         duration=duration % 60000;
     }
     if(duration/1000 < 10)
-        XERCES_STD_QUALIFIER cout << "0";
-    XERCES_STD_QUALIFIER cout << duration/1000 << "." << duration % 1000 << XERCES_STD_QUALIFIER endl;
+        std::cout << "0";
+    std::cout << duration/1000 << "." << duration % 1000 << std::endl;
 
     //
     //  Delete the parser itself.  Must be done prior to calling Terminate, below.
diff --git a/tests/src/XSTSHarness/XSTSHarness.hpp b/tests/src/XSTSHarness/XSTSHarness.hpp
index f6ee05a..d0274a2 100644
--- a/tests/src/XSTSHarness/XSTSHarness.hpp
+++ b/tests/src/XSTSHarness/XSTSHarness.hpp
@@ -27,20 +27,16 @@
 // ---------------------------------------------------------------------------
 
 #include <xercesc/util/PlatformUtils.hpp>
-#include <stdlib.h>
-#include <string.h>
-#if defined(XERCES_NEW_IOSTREAMS)
+#include <cstdlib>
+#include <cstring>
 #include <iostream>
-#else
-#include <iostream.h>
-#endif
 #include <xercesc/sax2/XMLReaderFactory.hpp>
 #include <xercesc/sax2/SAX2XMLReader.hpp>
 #include <xercesc/sax2/DefaultHandler.hpp>
 #include <xercesc/util/XMLURL.hpp>
 #include <xercesc/util/XMLEntityResolver.hpp>
 
-XERCES_CPP_NAMESPACE_USE
+using namespace XERCES_CPP_NAMESPACE;
 
 typedef enum
 {
@@ -90,7 +86,7 @@
     char*   fLocalForm;
 };
 
-inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump)
+inline std::ostream& operator<<(std::ostream& target, const StrX& toDump)
 {
     target << toDump.localForm();
     return target;
diff --git a/tests/src/XSTSHarness/XSTSHarnessHandlers.cpp b/tests/src/XSTSHarness/XSTSHarnessHandlers.cpp
index 200499d..21cfa0e 100644
--- a/tests/src/XSTSHarness/XSTSHarnessHandlers.cpp
+++ b/tests/src/XSTSHarness/XSTSHarnessHandlers.cpp
@@ -193,7 +193,7 @@
             {
                 fTests++;
                 fFailures++;
-                XERCES_STD_QUALIFIER cout << "Test " << StrX(fCurrentTest.fTestName) << " skipped" << XERCES_STD_QUALIFIER endl;
+                std::cout << "Test " << StrX(fCurrentTest.fTestName) << " skipped" << std::endl;
                 return;
             }
             bool success=true, fatalFailure=false;
@@ -209,18 +209,18 @@
             catch (const OutOfMemoryException&)
             {
                 fatalFailure=true;
-                XERCES_STD_QUALIFIER cout << "Test " << StrX(fCurrentTest.fTestName) << " ran out of memory" << XERCES_STD_QUALIFIER endl;
+                std::cout << "Test " << StrX(fCurrentTest.fTestName) << " ran out of memory" << std::endl;
                 success=false;
             }
             catch(const XMLException& exc)
             {
-                XERCES_STD_QUALIFIER cout << "Test " << StrX(fCurrentTest.fTestName) << " threw " << StrX(exc.getMessage()) << XERCES_STD_QUALIFIER endl;
+                std::cout << "Test " << StrX(fCurrentTest.fTestName) << " threw " << StrX(exc.getMessage()) << std::endl;
                 success=false;
             }
             catch (...)
             {
                 fatalFailure=true;
-                XERCES_STD_QUALIFIER cout << "Test " << StrX(fCurrentTest.fTestName) << " crashed" << XERCES_STD_QUALIFIER endl;
+                std::cout << "Test " << StrX(fCurrentTest.fTestName) << " crashed" << std::endl;
                 success=false;
                 exit(1);
             }
@@ -242,7 +242,7 @@
                         // skip the rest of the group, as we had problems with the schema itself
                         fCurrentTest.fSkipped=true;
                         fFailures++;
-                        XERCES_STD_QUALIFIER cout << "Test " << StrX(fCurrentTest.fTestName) << " succeeded but was expected to fail" << XERCES_STD_QUALIFIER endl;
+                        std::cout << "Test " << StrX(fCurrentTest.fTestName) << " succeeded but was expected to fail" << std::endl;
                         for(XMLSize_t i=0;i<fCurrentTest.fXSDNames.size();i++)
                             printFile(*fCurrentTest.fXSDNames.elementAt(i));
                     }
@@ -254,8 +254,8 @@
                         // skip the rest of the group, as we had problems with the schema itself
                         fCurrentTest.fSkipped=true;
                         fFailures++;
-                        XERCES_STD_QUALIFIER cout << "Test " << StrX(fCurrentTest.fTestName) << " failed but was expected to pass" << XERCES_STD_QUALIFIER endl;
-                        XERCES_STD_QUALIFIER cout << "Reported error: " << StrX(fErrorHandler.getErrorText()) << XERCES_STD_QUALIFIER endl;
+                        std::cout << "Test " << StrX(fCurrentTest.fTestName) << " failed but was expected to pass" << std::endl;
+                        std::cout << "Reported error: " << StrX(fErrorHandler.getErrorText()) << std::endl;
                         for(XMLSize_t i=0;i<fCurrentTest.fXSDNames.size();i++)
                             printFile(*fCurrentTest.fXSDNames.elementAt(i));
                     }
@@ -268,7 +268,7 @@
             {
                 fTests++;
                 fFailures++;
-                XERCES_STD_QUALIFIER cout << "Test " << StrX(fCurrentTest.fTestName) << " skipped" << XERCES_STD_QUALIFIER endl;
+                std::cout << "Test " << StrX(fCurrentTest.fTestName) << " skipped" << std::endl;
                 return;
             }
             bool success=true, fatalFailure=false;
@@ -280,18 +280,18 @@
             catch (const OutOfMemoryException&)
             {
                 fatalFailure=true;
-                XERCES_STD_QUALIFIER cout << "Test " << StrX(fCurrentTest.fTestName) << " ran out of memory" << XERCES_STD_QUALIFIER endl;
+                std::cout << "Test " << StrX(fCurrentTest.fTestName) << " ran out of memory" << std::endl;
                 success=false;
             }
             catch(const XMLException& exc)
             {
-                XERCES_STD_QUALIFIER cout << "Test " << StrX(fCurrentTest.fTestName) << " threw " << StrX(exc.getMessage()) << XERCES_STD_QUALIFIER endl;
+                std::cout << "Test " << StrX(fCurrentTest.fTestName) << " threw " << StrX(exc.getMessage()) << std::endl;
                 success=false;
             }
             catch (...)
             {
                 fatalFailure=true;
-                XERCES_STD_QUALIFIER cout << "Test " << StrX(fCurrentTest.fTestName) << " crashed" << XERCES_STD_QUALIFIER endl;
+                std::cout << "Test " << StrX(fCurrentTest.fTestName) << " crashed" << std::endl;
                 success=false;
                 exit(1);
             }
@@ -310,7 +310,7 @@
                     if(fCurrentTest.fExpectedResult!=valid)
                     {
                         fFailures++;
-                        XERCES_STD_QUALIFIER cout << "Test " << StrX(fCurrentTest.fTestName) << " succeeded but was expected to fail" << XERCES_STD_QUALIFIER endl;
+                        std::cout << "Test " << StrX(fCurrentTest.fTestName) << " succeeded but was expected to fail" << std::endl;
                         for(XMLSize_t i=0;i<fCurrentTest.fXSDNames.size();i++)
                             printFile(*fCurrentTest.fXSDNames.elementAt(i));
                         printFile(fCurrentTest.fXMLName);
@@ -321,8 +321,8 @@
                     if(fCurrentTest.fExpectedResult!=invalid)
                     {
                         fFailures++;
-                        XERCES_STD_QUALIFIER cout << "Test " << StrX(fCurrentTest.fTestName) << " failed but was expected to pass" << XERCES_STD_QUALIFIER endl;
-                        XERCES_STD_QUALIFIER cout << "Reported error: " << StrX(fErrorHandler.getErrorText()) << XERCES_STD_QUALIFIER endl;
+                        std::cout << "Test " << StrX(fCurrentTest.fTestName) << " failed but was expected to pass" << std::endl;
+                        std::cout << "Reported error: " << StrX(fErrorHandler.getErrorText()) << std::endl;
                         for(XMLSize_t i=0;i<fCurrentTest.fXSDNames.size();i++)
                             printFile(*fCurrentTest.fXSDNames.elementAt(i));
                         printFile(fCurrentTest.fXMLName);
diff --git a/tests/src/XSTSHarness/XSTSHarnessHandlers.hpp b/tests/src/XSTSHarness/XSTSHarnessHandlers.hpp
index 957581c..8ecfde1 100644
--- a/tests/src/XSTSHarness/XSTSHarnessHandlers.hpp
+++ b/tests/src/XSTSHarness/XSTSHarnessHandlers.hpp
@@ -29,7 +29,7 @@
 #include <xercesc/sax2/DefaultHandler.hpp>
 #include <xercesc/util/RefVectorOf.hpp>
 
-XERCES_CPP_NAMESPACE_USE
+using namespace XERCES_CPP_NAMESPACE;
 
 class XSTSTest
 {
diff --git a/tests/src/XSValueTest/XSValueTest.cpp b/tests/src/XSValueTest/XSValueTest.cpp
index 14bc6c4..1b95625 100644
--- a/tests/src/XSValueTest/XSValueTest.cpp
+++ b/tests/src/XSValueTest/XSValueTest.cpp
@@ -31,13 +31,9 @@
 #	include <config.h>
 #endif
 
-#if defined(XERCES_NEW_IOSTREAMS)
 #include <fstream>
-#else
-#include <fstream.h>
-#endif
 
-#include <stdio.h>
+#include <cstdio>
 #include <math.h>
 
 #include <xercesc/framework/psvi/XSValue.hpp>
@@ -6729,8 +6725,8 @@
     catch (const XMLException& toCatch)
     {
         StrX msg(toCatch.getMessage());
-        XERCES_STD_QUALIFIER cerr << "Error during initialization! Message:\n"
-            << msg << XERCES_STD_QUALIFIER endl;
+        std::cerr << "Error during initialization! Message:\n"
+            << msg << std::endl;
         return 1;
     }
 
diff --git a/tests/src/XSValueTest/XSValueTest.hpp b/tests/src/XSValueTest/XSValueTest.hpp
index cdf46b5..b538f62 100644
--- a/tests/src/XSValueTest/XSValueTest.hpp
+++ b/tests/src/XSValueTest/XSValueTest.hpp
@@ -27,15 +27,11 @@
 // ---------------------------------------------------------------------------
 #include <xercesc/util/XercesDefs.hpp>
 
-#if defined(XERCES_NEW_IOSTREAMS)
 #include <iostream>
-#else
-#include <iostream.h>
-#endif
 
 #include <xercesc/util/XMLString.hpp>
 
-XERCES_CPP_NAMESPACE_USE
+using namespace XERCES_CPP_NAMESPACE;
 
 // ---------------------------------------------------------------------------
 //  This is a simple class that lets us do easy (though not terribly efficient)
@@ -103,7 +99,7 @@
 #define UniForm(str) StrX(str).unicodeForm()
 #define LocForm(str) StrX(str).localForm()
 
-inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump)
+inline std::ostream& operator<<(std::ostream& target, const StrX& toDump)
 {
     target << toDump.localForm();
     return target;
diff --git a/tests/src/XSerializerTest/XSerializerHandlers.cpp b/tests/src/XSerializerTest/XSerializerHandlers.cpp
index a36e1ef..0df237b 100644
--- a/tests/src/XSerializerTest/XSerializerHandlers.cpp
+++ b/tests/src/XSerializerTest/XSerializerHandlers.cpp
@@ -84,27 +84,27 @@
 void XSerializerHandlers::error(const SAXParseException& e)
 {
     fSawErrors = true;
-    XERCES_STD_QUALIFIER cerr << "\nError at file " << StrX(e.getSystemId())
+    std::cerr << "\nError at file " << StrX(e.getSystemId())
 		 << ", line " << e.getLineNumber()
 		 << ", char " << e.getColumnNumber()
-         << "\n  Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+         << "\n  Message: " << StrX(e.getMessage()) << std::endl;
 }
 
 void XSerializerHandlers::fatalError(const SAXParseException& e)
 {
     fSawErrors = true;
-    XERCES_STD_QUALIFIER cerr << "\nFatal Error at file " << StrX(e.getSystemId())
+    std::cerr << "\nFatal Error at file " << StrX(e.getSystemId())
 		 << ", line " << e.getLineNumber()
 		 << ", char " << e.getColumnNumber()
-         << "\n  Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+         << "\n  Message: " << StrX(e.getMessage()) << std::endl;
 }
 
 void XSerializerHandlers::warning(const SAXParseException& e)
 {
-    XERCES_STD_QUALIFIER cerr << "\nWarning at file " << StrX(e.getSystemId())
+    std::cerr << "\nWarning at file " << StrX(e.getSystemId())
 		 << ", line " << e.getLineNumber()
 		 << ", char " << e.getColumnNumber()
-         << "\n  Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+         << "\n  Message: " << StrX(e.getMessage()) << std::endl;
 }
 
 void XSerializerHandlers::resetErrors()
diff --git a/tests/src/XSerializerTest/XSerializerHandlers.hpp b/tests/src/XSerializerTest/XSerializerHandlers.hpp
index d495319..209f6a0 100644
--- a/tests/src/XSerializerTest/XSerializerHandlers.hpp
+++ b/tests/src/XSerializerTest/XSerializerHandlers.hpp
@@ -28,7 +28,7 @@
 #include <xercesc/sax2/Attributes.hpp>
 #include <xercesc/sax2/DefaultHandler.hpp>
 
-XERCES_CPP_NAMESPACE_USE
+using namespace XERCES_CPP_NAMESPACE;
 
 class XSerializerHandlers : public DefaultHandler
 {
diff --git a/tests/src/XSerializerTest/XSerializerTest.cpp b/tests/src/XSerializerTest/XSerializerTest.cpp
index 0219550..3cb4281 100644
--- a/tests/src/XSerializerTest/XSerializerTest.cpp
+++ b/tests/src/XSerializerTest/XSerializerTest.cpp
@@ -32,11 +32,7 @@
 
 #include "XSerializerTest.hpp"
 
-#if defined(XERCES_NEW_IOSTREAMS)
 #include <fstream>
-#else
-#include <fstream.h>
-#endif
 
 // ---------------------------------------------------------------------------
 //  command line option variables
@@ -73,7 +69,7 @@
 *
 ***/
 
-#include <stdio.h>
+#include <cstdio>
 
 static
 void parseCase(const char* const xmlFile);
@@ -99,7 +95,7 @@
 // ---------------------------------------------------------------------------
 void usage()
 {
-    XERCES_STD_QUALIFIER cout << "\nUsage:\n"
+    std::cout << "\nUsage:\n"
             "    XSerializerTest [options] <XML file | List file>\n\n"
             "This program invokes the SAX2XMLReader, and then prints the\n"
             "number of elements, attributes, spaces and characters found\n"
@@ -117,7 +113,7 @@
             "    -locale=ll_CC specify the locale, default: en_US.\n"
             "    -?          Show this help.\n\n"
             "  * = Default if not provided explicitly.\n"
-         << XERCES_STD_QUALIFIER endl;
+         << std::endl;
 }
 
 // ---------------------------------------------------------------------------
@@ -161,7 +157,7 @@
                 valScheme = SAX2XMLReader::Val_Always;
             else
             {
-                XERCES_STD_QUALIFIER cerr << "Unknown -v= value: " << parm << XERCES_STD_QUALIFIER endl;
+                std::cerr << "Unknown -v= value: " << parm << std::endl;
                 return 2;
             }
         }
@@ -205,8 +201,8 @@
         }
         else
         {
-            XERCES_STD_QUALIFIER cerr << "Unknown option '" << argV[argInd]
-                << "', ignoring it\n" << XERCES_STD_QUALIFIER endl;
+            std::cerr << "Unknown option '" << argV[argInd]
+                << "', ignoring it\n" << std::endl;
         }
     }
 
@@ -241,19 +237,19 @@
 
     catch (const XMLException& toCatch)
     {
-        XERCES_STD_QUALIFIER cerr << "Error during initialization! Message:\n"
-            << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl;
+        std::cerr << "Error during initialization! Message:\n"
+            << StrX(toCatch.getMessage()) << std::endl;
         return 1;
     }
 
-    XERCES_STD_QUALIFIER ifstream fin;
+    std::ifstream fin;
 
     // the input is a list file
     if (doList)
         fin.open(argV[argInd]);
 
     if (fin.fail()) {
-        XERCES_STD_QUALIFIER cerr <<"Cannot open the list file: " << argV[argInd] << XERCES_STD_QUALIFIER endl;
+        std::cerr <<"Cannot open the list file: " << argV[argInd] << std::endl;
         return 2;
     }
 
@@ -270,7 +266,7 @@
                     continue;
                 else {
                     xmlFile = fURI;
-                    XERCES_STD_QUALIFIER cerr << "==Parsing== " << xmlFile << XERCES_STD_QUALIFIER endl;
+                    std::cerr << "==Parsing== " << xmlFile << std::endl;
                 }
             }
             else
@@ -363,8 +359,8 @@
     catch (const XSerializationException& e)
     {
         //do emit error here so that we know serialization failure
-        XERCES_STD_QUALIFIER cerr << "An error occurred during serialization\n   Message: "
-            << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+        std::cerr << "An error occurred during serialization\n   Message: "
+            << StrX(e.getMessage()) << std::endl;
 
         retVal = false;
     }
@@ -372,7 +368,7 @@
     catch (...)
     {
         //do emit error here so that we know serialization failure
-        XERCES_STD_QUALIFIER cerr << "An error occurred during serialization\n" << XERCES_STD_QUALIFIER endl;
+        std::cerr << "An error occurred during serialization\n" << std::endl;
 
         retVal = false;
     }
@@ -402,8 +398,8 @@
 
     catch(const XSerializationException& e)
     {
-        XERCES_STD_QUALIFIER cerr << "An error occurred during de-serialization\n   Message: "
-            << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+        std::cerr << "An error occurred during de-serialization\n   Message: "
+            << StrX(e.getMessage()) << std::endl;
 
         errorSeen = true;
     }
@@ -411,7 +407,7 @@
     catch (...)
     {
         //do emit error here so that we know serialization failure
-        XERCES_STD_QUALIFIER cerr << "An error occurred during de-serialization\n" << XERCES_STD_QUALIFIER endl;
+        std::cerr << "An error occurred during de-serialization\n" << std::endl;
 
         errorSeen = true;
     }
@@ -493,25 +489,25 @@
     }
     catch (const XMLException& e)
     {
-        XERCES_STD_QUALIFIER cerr << "\nError during parsing: '" << xmlFile << "'\n"
+        std::cerr << "\nError during parsing: '" << xmlFile << "'\n"
             << "Exception message is:  \n"
-            << StrX(e.getMessage()) << "\n" << XERCES_STD_QUALIFIER endl;
+            << StrX(e.getMessage()) << "\n" << std::endl;
         errorOccurred = true;
     }
     catch (...)
     {
-        XERCES_STD_QUALIFIER cerr << "\nUnexpected exception during parsing: '" << xmlFile << "'\n";
+        std::cerr << "\nUnexpected exception during parsing: '" << xmlFile << "'\n";
         errorOccurred = true;
     }
 
     // Print out the stats that we collected and time taken
     if (!handler->getSawErrors())
     {
-        XERCES_STD_QUALIFIER cout << xmlFile << ": " << duration << " ms ("
+        std::cout << xmlFile << ": " << duration << " ms ("
             << handler->getElementCount() << " elems, "
             << handler->getAttrCount() << " attrs, "
             << handler->getSpaceCount() << " spaces, "
-            << handler->getCharacterCount() << " chars)" << XERCES_STD_QUALIFIER endl;
+            << handler->getCharacterCount() << " chars)" << std::endl;
     }
     else
         errorOccurred = true;
diff --git a/tests/src/XSerializerTest/XSerializerTest.hpp b/tests/src/XSerializerTest/XSerializerTest.hpp
index db33938..b31c4d7 100644
--- a/tests/src/XSerializerTest/XSerializerTest.hpp
+++ b/tests/src/XSerializerTest/XSerializerTest.hpp
@@ -26,13 +26,9 @@
 //  Includes for all the program files to see
 // ---------------------------------------------------------------------------
 #include <xercesc/util/PlatformUtils.hpp>
-#include <stdlib.h>
-#include <string.h>
-#if defined(XERCES_NEW_IOSTREAMS)
+#include <cstdlib>
+#include <cstring>
 #include <iostream>
-#else
-#include <iostream.h>
-#endif
 #include "XSerializerHandlers.hpp"
 #include <xercesc/sax2/SAX2XMLReader.hpp>
 #include <xercesc/sax2/XMLReaderFactory.hpp>
@@ -77,7 +73,7 @@
     char*   fLocalForm;
 };
 
-inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump)
+inline std::ostream& operator<<(std::ostream& target, const StrX& toDump)
 {
     target << toDump.localForm();
     return target;
diff --git a/tools/IANACharset/IANACharset.cpp b/tools/IANACharset/IANACharset.cpp
index ddbccf3..a8896ec 100644
--- a/tools/IANACharset/IANACharset.cpp
+++ b/tools/IANACharset/IANACharset.cpp
@@ -37,7 +37,7 @@
 // ---------------------------------------------------------------------------
 //  Includes
 // ---------------------------------------------------------------------------
-#include <stdio.h>
+#include <cstdio>
 
 #include <xercesc/util/PlatformUtils.hpp>
 #include <xercesc/sax/SAXParseException.hpp>
@@ -171,7 +171,7 @@
           L"#if !defined(IANAENCODINGS_HPP)\n"
           L"#define IANAENCODINGS_HPP\n\n"
           L"#include <xercesc/util/XercesDefs.hpp>\n\n"
-          L"XERCES_CPP_NAMESPACE_BEGIN\n\n"
+          L"namespace XERCES_CPP_NAMESPACE {\n\n"
     );
 
     //
@@ -217,7 +217,7 @@
     fwprintf
     (
         gOutFile
-        , L"XERCES_CPP_NAMESPACE_END\n\n"
+        , L"}\n\n"
           L"#endif\n\n"
     );
 
diff --git a/tools/IANACharset/IANACharset_ErrHandler.hpp b/tools/IANACharset/IANACharset_ErrHandler.hpp
index 828007b..a2db152 100644
--- a/tools/IANACharset/IANACharset_ErrHandler.hpp
+++ b/tools/IANACharset/IANACharset_ErrHandler.hpp
@@ -22,7 +22,7 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/sax/ErrorHandler.hpp>
 
-XERCES_CPP_NAMESPACE_USE
+using namespace XERCES_CPP_NAMESPACE;
 
 class IANACharsetErrHandler : public ErrorHandler
 {
diff --git a/tools/ICUData/ICUData.cpp b/tools/ICUData/ICUData.cpp
index 19e08a4..bd3b9b4 100644
--- a/tools/ICUData/ICUData.cpp
+++ b/tools/ICUData/ICUData.cpp
@@ -38,10 +38,10 @@
 //  Includes
 // ---------------------------------------------------------------------------
 #include    <ctype.h>
-#include    <stdio.h>
-#include    <stdlib.h>
+#include    <cstdio>
+#include    <cstdlib>
 #include    <iostream.h>
-#include    <string.h>
+#include    <cstring>
 
 
 // ---------------------------------------------------------------------------
diff --git a/tools/NLS/Xlat/Xlat.cpp b/tools/NLS/Xlat/Xlat.cpp
index fc562db..3ef3057 100644
--- a/tools/NLS/Xlat/Xlat.cpp
+++ b/tools/NLS/Xlat/Xlat.cpp
@@ -623,7 +623,7 @@
                 //  Write out the namespace declaration
                 fwprintf(outHeader, L"#include <xercesc/util/XercesDefs.hpp>\n");
                 fwprintf(outHeader, L"#include <xercesc/dom/DOMError.hpp>\n\n");
-                fwprintf(outHeader, L"XERCES_CPP_NAMESPACE_BEGIN\n\n");
+                fwprintf(outHeader, L"namespace XERCES_CPP_NAMESPACE {\n\n");
 
                 //  Now the message codes
                 fwprintf(outHeader, L"class %s\n{\npublic :\n    enum Codes\n    {\n", xmlStrToPrintable(errNameSpace) );
@@ -835,7 +835,7 @@
 
                 // And close out the class declaration, the namespace declaration and the header file
                 fwprintf(outHeader, L"};\n\n");
-                fwprintf(outHeader, L"XERCES_CPP_NAMESPACE_END\n\n");
+                fwprintf(outHeader, L"}\n\n");
                 fwprintf(outHeader, L"#endif\n\n");
                 fclose(outHeader);
                 XMLString::release(&headerName);
diff --git a/tools/NLS/Xlat/Xlat.hpp b/tools/NLS/Xlat/Xlat.hpp
index 3f6ae73..5981d7a 100644
--- a/tools/NLS/Xlat/Xlat.hpp
+++ b/tools/NLS/Xlat/Xlat.hpp
@@ -35,9 +35,9 @@
 // ---------------------------------------------------------------------------
 //  Includes
 // ---------------------------------------------------------------------------
-#include <stdio.h>
+#include <cstdio>
 #include <wchar.h>
-#include <stdlib.h>
+#include <cstdlib>
 
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/util/PlatformUtils.hpp>
@@ -53,7 +53,7 @@
 #include "Xlat_MsgCatalog.hpp"
 #include "Xlat_ICUResourceBundle.hpp"
 
-XERCES_CPP_NAMESPACE_USE
+using namespace XERCES_CPP_NAMESPACE;
 
 
 // ---------------------------------------------------------------------------
diff --git a/tools/NLS/Xlat/Xlat_CppSrc.cpp b/tools/NLS/Xlat/Xlat_CppSrc.cpp
index 515c11f..2133a1e 100644
--- a/tools/NLS/Xlat/Xlat_CppSrc.cpp
+++ b/tools/NLS/Xlat/Xlat_CppSrc.cpp
@@ -70,7 +70,7 @@
     fwprintf
     (
         fOutFl,
-          L"XERCES_CPP_NAMESPACE_END\n\n"
+          L"}\n\n"
     );
     // Close the output file
     fclose(fOutFl);
@@ -224,6 +224,6 @@
           L"//  so do not edit this file directly!!\n"
           L"// ----------------------------------------------------------------\n\n"
           L"#include <xercesc/util/XercesDefs.hpp>\n\n"
-          L"XERCES_CPP_NAMESPACE_BEGIN\n\n"
+          L"namespace XERCES_CPP_NAMESPACE {\n\n"
     );
 }
diff --git a/tools/NLS/Xlat/Xlat_ErrHandler.hpp b/tools/NLS/Xlat/Xlat_ErrHandler.hpp
index 6b0444e..ba459b1 100644
--- a/tools/NLS/Xlat/Xlat_ErrHandler.hpp
+++ b/tools/NLS/Xlat/Xlat_ErrHandler.hpp
@@ -22,7 +22,7 @@
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/sax/ErrorHandler.hpp>
 
-XERCES_CPP_NAMESPACE_USE
+using namespace XERCES_CPP_NAMESPACE;
 
 class XlatErrHandler : public ErrorHandler
 {
diff --git a/tools/NLS/Xlat/Xlat_MsgCatalog.cpp b/tools/NLS/Xlat/Xlat_MsgCatalog.cpp
index 57598c4..43318a1 100644
--- a/tools/NLS/Xlat/Xlat_MsgCatalog.cpp
+++ b/tools/NLS/Xlat/Xlat_MsgCatalog.cpp
@@ -76,7 +76,7 @@
     fwprintf
     (
         fOutHpp
-        , L"\nXERCES_CPP_NAMESPACE_END\n\n"
+        , L"\n}\n\n"
     );
 
     // Close the output files
@@ -193,7 +193,7 @@
           L"//  so do not edit this file directly!!\n"
           L"// ----------------------------------------------------------------\n\n"
           L"#include <xercesc/util/XercesDefs.hpp>\n\n"
-          L"XERCES_CPP_NAMESPACE_BEGIN\n\n"
+          L"namespace XERCES_CPP_NAMESPACE {\n\n"
     );
 
     // Reset the sequence id
