[mapguide-commits] r8803 - in sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src: . samples samples/data samples/src samples/src/CreateDOMDocument samples/src/DOMCount samples/src/DOMPrint samples/src/EnumVal samples/src/MemParse samples/src/PParse samples/src/PSVIWriter samples/src/Redirect samples/src/SAX2Count samples/src/SAX2Print samples/src/SAXCount samples/src/SAXPrint samples/src/SCMPrint samples/src/SEnumVal samples/src/StdInParse samples/src/XInclude

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Thu Oct 29 08:19:16 PDT 2015


Author: jng
Date: 2015-10-29 08:19:16 -0700 (Thu, 29 Oct 2015)
New Revision: 8803

Added:
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/Makefile.am
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/Makefile.in
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/data/
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/data/long.xml
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/data/personal-schema.xml
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/data/personal.dtd
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/data/personal.xml
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/data/personal.xsd
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/data/redirect.dtd
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/CreateDOMDocument/
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/CreateDOMDocument/CreateDOMDocument.cpp
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/DOMCount/
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/DOMCount/DOMCount.cpp
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/DOMCount/DOMCount.hpp
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/DOMPrint/
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/DOMPrint/DOMPrint.cpp
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/DOMPrint/DOMPrintErrorHandler.cpp
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/DOMPrint/DOMPrintErrorHandler.hpp
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/DOMPrint/DOMPrintFilter.cpp
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/DOMPrint/DOMPrintFilter.hpp
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/DOMPrint/DOMTreeErrorReporter.cpp
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/DOMPrint/DOMTreeErrorReporter.hpp
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/EnumVal/
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/EnumVal/EnumVal.cpp
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/MemParse/
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/MemParse/MemParse.cpp
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/MemParse/MemParse.hpp
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/MemParse/MemParseHandlers.cpp
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/MemParse/MemParseHandlers.hpp
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/PParse/
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/PParse/PParse.cpp
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/PParse/PParse.hpp
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/PParse/PParseHandlers.cpp
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/PParse/PParseHandlers.hpp
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/PSVIWriter/
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/PSVIWriter/PSVIWriter.cpp
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/PSVIWriter/PSVIWriter.hpp
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/PSVIWriter/PSVIWriterHandlers.cpp
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/PSVIWriter/PSVIWriterHandlers.hpp
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/Redirect/
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/Redirect/Redirect.cpp
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/Redirect/Redirect.hpp
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/Redirect/RedirectHandlers.cpp
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/Redirect/RedirectHandlers.hpp
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAX2Count/
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAX2Count/SAX2Count.cpp
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAX2Count/SAX2Count.hpp
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAX2Count/SAX2CountHandlers.cpp
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAX2Count/SAX2CountHandlers.hpp
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAX2Print/
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAX2Print/SAX2FilterHandlers.cpp
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAX2Print/SAX2FilterHandlers.hpp
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAX2Print/SAX2Print.cpp
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAX2Print/SAX2Print.hpp
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAX2Print/SAX2PrintHandlers.cpp
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAX2Print/SAX2PrintHandlers.hpp
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAXCount/
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAXCount/SAXCount.cpp
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAXCount/SAXCount.hpp
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAXCount/SAXCountHandlers.cpp
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAXCount/SAXCountHandlers.hpp
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAXPrint/
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAXPrint/SAXPrint.cpp
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAXPrint/SAXPrint.hpp
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAXPrint/SAXPrintHandlers.cpp
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAXPrint/SAXPrintHandlers.hpp
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SCMPrint/
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SCMPrint/SCMPrint.cpp
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SEnumVal/
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SEnumVal/SEnumVal.cpp
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/StdInParse/
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/StdInParse/StdInParse.cpp
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/StdInParse/StdInParse.hpp
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/StdInParse/StdInParseHandlers.cpp
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/StdInParse/StdInParseHandlers.hpp
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/XInclude/
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/XInclude/XInclude.cpp
   sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/XInclude/XInclude.hpp
Log:
Restore the xerces samples dir. The xerces build process insists on building samples.

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/Makefile.am
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/Makefile.am	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/Makefile.am	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,166 @@
+#
+# 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.
+#
+
+#
+# $Id: Makefile.am 883272 2009-11-23 08:17:49Z borisk $
+#
+
+bin_PROGRAMS =                      ${sampleprogs}
+
+LDADD =                             ${top_builddir}/src/libxerces-c.la
+# the  -I${top_builddir}/src is needed to pick the xercesc/util/Xerces_autoconf_config.hpp 
+# header file when doing out-of-tree builds
+AM_CPPFLAGS =                       -I${top_builddir}/src -I${top_srcdir}/src
+
+EXTRA_DIST =                        data/personal.dtd \
+                                    data/personal.xml \
+                                    data/personal.xsd \
+                                    data/personal-schema.xml \
+                                    data/redirect.dtd
+
+sampleprogs =
+
+sampleprogs +=                      CreateDOMDocument
+CreateDOMDocument_SOURCES =	        src/CreateDOMDocument/CreateDOMDocument.cpp
+
+sampleprogs +=                      DOMCount
+DOMCount_SOURCES =                  src/DOMCount/DOMCount.cpp \
+                                    src/DOMCount/DOMCount.hpp
+
+sampleprogs +=                      DOMPrint
+DOMPrint_SOURCES =                  src/DOMPrint/DOMPrint.cpp \
+                                    src/DOMPrint/DOMPrintErrorHandler.cpp \
+                                    src/DOMPrint/DOMPrintErrorHandler.hpp \
+                                    src/DOMPrint/DOMPrintFilter.cpp \
+                                    src/DOMPrint/DOMPrintFilter.hpp \
+                                    src/DOMPrint/DOMTreeErrorReporter.cpp \
+                                    src/DOMPrint/DOMTreeErrorReporter.hpp
+
+sampleprogs +=                      EnumVal
+EnumVal_SOURCES =                   src/EnumVal/EnumVal.cpp
+
+sampleprogs +=                      MemParse
+MemParse_SOURCES =                  src/MemParse/MemParse.cpp \
+                                    src/MemParse/MemParse.hpp \
+                                    src/MemParse/MemParseHandlers.cpp \
+                                    src/MemParse/MemParseHandlers.hpp
+
+sampleprogs +=                      PParse
+PParse_SOURCES =                    src/PParse/PParse.cpp \
+                                    src/PParse/PParse.hpp \
+                                    src/PParse/PParseHandlers.cpp \
+                                    src/PParse/PParseHandlers.hpp
+
+sampleprogs +=                      PSVIWriter
+PSVIWriter_SOURCES =                src/PSVIWriter/PSVIWriter.cpp \
+                                    src/PSVIWriter/PSVIWriter.hpp \
+                                    src/PSVIWriter/PSVIWriterHandlers.cpp \
+                                    src/PSVIWriter/PSVIWriterHandlers.hpp
+
+sampleprogs +=                      Redirect
+Redirect_SOURCES =                  src/Redirect/Redirect.cpp \
+                                    src/Redirect/Redirect.hpp \
+                                    src/Redirect/RedirectHandlers.cpp \
+                                    src/Redirect/RedirectHandlers.hpp
+
+sampleprogs +=                      SAX2Count
+SAX2Count_SOURCES =                 src/SAX2Count/SAX2Count.cpp \
+                                    src/SAX2Count/SAX2Count.hpp \
+                                    src/SAX2Count/SAX2CountHandlers.cpp \
+                                    src/SAX2Count/SAX2CountHandlers.hpp
+
+sampleprogs +=                      SAX2Print
+SAX2Print_SOURCES =                 src/SAX2Print/SAX2FilterHandlers.cpp \
+                                    src/SAX2Print/SAX2FilterHandlers.hpp \
+                                    src/SAX2Print/SAX2Print.cpp \
+                                    src/SAX2Print/SAX2Print.hpp \
+                                    src/SAX2Print/SAX2PrintHandlers.cpp \
+                                    src/SAX2Print/SAX2PrintHandlers.hpp
+
+sampleprogs +=                      SAXCount
+SAXCount_SOURCES =                  src/SAXCount/SAXCount.cpp \
+                                    src/SAXCount/SAXCount.hpp \
+                                    src/SAXCount/SAXCountHandlers.cpp \
+                                    src/SAXCount/SAXCountHandlers.hpp
+
+sampleprogs +=                      SAXPrint
+SAXPrint_SOURCES =                  src/SAXPrint/SAXPrint.cpp \
+                                    src/SAXPrint/SAXPrint.hpp \
+                                    src/SAXPrint/SAXPrintHandlers.cpp \
+                                    src/SAXPrint/SAXPrintHandlers.hpp
+
+sampleprogs +=                      SCMPrint
+SCMPrint_SOURCES =                  src/SCMPrint/SCMPrint.cpp
+
+sampleprogs +=                      SEnumVal
+SEnumVal_SOURCES =                  src/SEnumVal/SEnumVal.cpp
+
+sampleprogs +=                      StdInParse
+StdInParse_SOURCES =                src/StdInParse/StdInParse.cpp \
+                                    src/StdInParse/StdInParse.hpp \
+                                    src/StdInParse/StdInParseHandlers.cpp \
+                                    src/StdInParse/StdInParseHandlers.hpp
+
+sampleprogs +=                      XInclude
+XInclude_SOURCES =                  src/XInclude/XInclude.cpp \
+                                    src/XInclude/XInclude.hpp
+
+#
+# Override generated rules to provide prettier make rules
+#
+# Warning: If Automake changes sufficiently, these rules may need to
+#          be regenerated from the (new) default output of Automake
+#
+if XERCES_PRETTY_MAKE
+.cpp.o:
+ at am__fastdepCXX_TRUE@	@depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`; \
+ at am__fastdepCXX_TRUE@	if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$$depbase.Tpo" -c -o $@ $<; \
+ at am__fastdepCXX_TRUE@	then $(am__mv) "$$depbase.Tpo" "$$depbase.Po"; else rm -f "$$depbase.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	@source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+ at am__fastdepCXX_TRUE@	@depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`; \
+ at am__fastdepCXX_TRUE@	if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$$depbase.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+ at am__fastdepCXX_TRUE@	then $(am__mv) "$$depbase.Tpo" "$$depbase.Po"; else rm -f "$$depbase.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	@source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cpp.lo:
+ at am__fastdepCXX_TRUE@	@depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`; \
+ at am__fastdepCXX_TRUE@	if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$$depbase.Tpo" -c -o $@ $<; \
+ at am__fastdepCXX_TRUE@	then $(am__mv) "$$depbase.Tpo" "$$depbase.Plo"; else rm -f "$$depbase.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	@source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(LTCXXCOMPILE) -c -o $@ $<
+
+PRETTY_MAKE=${top_srcdir}/config/pretty-make
+PRETTY_COMPILE=${PRETTY_MAKE} Compiling
+endif
+
+CXXCOMPILE = ${PRETTY_COMPILE} \
+	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = ${PRETTY_COMPILE}  \
+	$(LIBTOOL) --quiet --tag=CXX --mode=compile \
+	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+
+
+

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/Makefile.in
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/Makefile.in	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/Makefile.in	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,1084 @@
+# Makefile.in generated by automake 1.11 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+#
+# 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.
+#
+
+#
+# $Id: Makefile.am 883272 2009-11-23 08:17:49Z borisk $
+#
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+bin_PROGRAMS = $(am__EXEEXT_1)
+subdir = samples
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/acx_pthread.m4 \
+	$(top_srcdir)/m4/cxx_have_bool.m4 \
+	$(top_srcdir)/m4/cxx_have_lstring.m4 \
+	$(top_srcdir)/m4/cxx_have_namespaces.m4 \
+	$(top_srcdir)/m4/cxx_have_std_libs.m4 \
+	$(top_srcdir)/m4/cxx_have_std_namespace.m4 \
+	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
+	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+	$(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/xerces_curl_prefix.m4 \
+	$(top_srcdir)/m4/xerces_filemgr_selection.m4 \
+	$(top_srcdir)/m4/xerces_icu_prefix.m4 \
+	$(top_srcdir)/m4/xerces_int_types.m4 \
+	$(top_srcdir)/m4/xerces_link_darwin_framework.m4 \
+	$(top_srcdir)/m4/xerces_msgloader_selection.m4 \
+	$(top_srcdir)/m4/xerces_mutexmgr_selection.m4 \
+	$(top_srcdir)/m4/xerces_netaccessor_selection.m4 \
+	$(top_srcdir)/m4/xerces_no_threads.m4 \
+	$(top_srcdir)/m4/xerces_path_delimiters.m4 \
+	$(top_srcdir)/m4/xerces_pretty_make.m4 \
+	$(top_srcdir)/m4/xerces_transcoder_selection.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h \
+	$(top_builddir)/src/xercesc/util/Xerces_autoconf_config.hpp
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__EXEEXT_1 = CreateDOMDocument$(EXEEXT) DOMCount$(EXEEXT) \
+	DOMPrint$(EXEEXT) EnumVal$(EXEEXT) MemParse$(EXEEXT) \
+	PParse$(EXEEXT) PSVIWriter$(EXEEXT) Redirect$(EXEEXT) \
+	SAX2Count$(EXEEXT) SAX2Print$(EXEEXT) SAXCount$(EXEEXT) \
+	SAXPrint$(EXEEXT) SCMPrint$(EXEEXT) SEnumVal$(EXEEXT) \
+	StdInParse$(EXEEXT) XInclude$(EXEEXT)
+am__installdirs = "$(DESTDIR)$(bindir)"
+PROGRAMS = $(bin_PROGRAMS)
+am__dirstamp = $(am__leading_dot)dirstamp
+am_CreateDOMDocument_OBJECTS =  \
+	src/CreateDOMDocument/CreateDOMDocument.$(OBJEXT)
+CreateDOMDocument_OBJECTS = $(am_CreateDOMDocument_OBJECTS)
+CreateDOMDocument_LDADD = $(LDADD)
+CreateDOMDocument_DEPENDENCIES = ${top_builddir}/src/libxerces-c.la
+am_DOMCount_OBJECTS = src/DOMCount/DOMCount.$(OBJEXT)
+DOMCount_OBJECTS = $(am_DOMCount_OBJECTS)
+DOMCount_LDADD = $(LDADD)
+DOMCount_DEPENDENCIES = ${top_builddir}/src/libxerces-c.la
+am_DOMPrint_OBJECTS = src/DOMPrint/DOMPrint.$(OBJEXT) \
+	src/DOMPrint/DOMPrintErrorHandler.$(OBJEXT) \
+	src/DOMPrint/DOMPrintFilter.$(OBJEXT) \
+	src/DOMPrint/DOMTreeErrorReporter.$(OBJEXT)
+DOMPrint_OBJECTS = $(am_DOMPrint_OBJECTS)
+DOMPrint_LDADD = $(LDADD)
+DOMPrint_DEPENDENCIES = ${top_builddir}/src/libxerces-c.la
+am_EnumVal_OBJECTS = src/EnumVal/EnumVal.$(OBJEXT)
+EnumVal_OBJECTS = $(am_EnumVal_OBJECTS)
+EnumVal_LDADD = $(LDADD)
+EnumVal_DEPENDENCIES = ${top_builddir}/src/libxerces-c.la
+am_MemParse_OBJECTS = src/MemParse/MemParse.$(OBJEXT) \
+	src/MemParse/MemParseHandlers.$(OBJEXT)
+MemParse_OBJECTS = $(am_MemParse_OBJECTS)
+MemParse_LDADD = $(LDADD)
+MemParse_DEPENDENCIES = ${top_builddir}/src/libxerces-c.la
+am_PParse_OBJECTS = src/PParse/PParse.$(OBJEXT) \
+	src/PParse/PParseHandlers.$(OBJEXT)
+PParse_OBJECTS = $(am_PParse_OBJECTS)
+PParse_LDADD = $(LDADD)
+PParse_DEPENDENCIES = ${top_builddir}/src/libxerces-c.la
+am_PSVIWriter_OBJECTS = src/PSVIWriter/PSVIWriter.$(OBJEXT) \
+	src/PSVIWriter/PSVIWriterHandlers.$(OBJEXT)
+PSVIWriter_OBJECTS = $(am_PSVIWriter_OBJECTS)
+PSVIWriter_LDADD = $(LDADD)
+PSVIWriter_DEPENDENCIES = ${top_builddir}/src/libxerces-c.la
+am_Redirect_OBJECTS = src/Redirect/Redirect.$(OBJEXT) \
+	src/Redirect/RedirectHandlers.$(OBJEXT)
+Redirect_OBJECTS = $(am_Redirect_OBJECTS)
+Redirect_LDADD = $(LDADD)
+Redirect_DEPENDENCIES = ${top_builddir}/src/libxerces-c.la
+am_SAX2Count_OBJECTS = src/SAX2Count/SAX2Count.$(OBJEXT) \
+	src/SAX2Count/SAX2CountHandlers.$(OBJEXT)
+SAX2Count_OBJECTS = $(am_SAX2Count_OBJECTS)
+SAX2Count_LDADD = $(LDADD)
+SAX2Count_DEPENDENCIES = ${top_builddir}/src/libxerces-c.la
+am_SAX2Print_OBJECTS = src/SAX2Print/SAX2FilterHandlers.$(OBJEXT) \
+	src/SAX2Print/SAX2Print.$(OBJEXT) \
+	src/SAX2Print/SAX2PrintHandlers.$(OBJEXT)
+SAX2Print_OBJECTS = $(am_SAX2Print_OBJECTS)
+SAX2Print_LDADD = $(LDADD)
+SAX2Print_DEPENDENCIES = ${top_builddir}/src/libxerces-c.la
+am_SAXCount_OBJECTS = src/SAXCount/SAXCount.$(OBJEXT) \
+	src/SAXCount/SAXCountHandlers.$(OBJEXT)
+SAXCount_OBJECTS = $(am_SAXCount_OBJECTS)
+SAXCount_LDADD = $(LDADD)
+SAXCount_DEPENDENCIES = ${top_builddir}/src/libxerces-c.la
+am_SAXPrint_OBJECTS = src/SAXPrint/SAXPrint.$(OBJEXT) \
+	src/SAXPrint/SAXPrintHandlers.$(OBJEXT)
+SAXPrint_OBJECTS = $(am_SAXPrint_OBJECTS)
+SAXPrint_LDADD = $(LDADD)
+SAXPrint_DEPENDENCIES = ${top_builddir}/src/libxerces-c.la
+am_SCMPrint_OBJECTS = src/SCMPrint/SCMPrint.$(OBJEXT)
+SCMPrint_OBJECTS = $(am_SCMPrint_OBJECTS)
+SCMPrint_LDADD = $(LDADD)
+SCMPrint_DEPENDENCIES = ${top_builddir}/src/libxerces-c.la
+am_SEnumVal_OBJECTS = src/SEnumVal/SEnumVal.$(OBJEXT)
+SEnumVal_OBJECTS = $(am_SEnumVal_OBJECTS)
+SEnumVal_LDADD = $(LDADD)
+SEnumVal_DEPENDENCIES = ${top_builddir}/src/libxerces-c.la
+am_StdInParse_OBJECTS = src/StdInParse/StdInParse.$(OBJEXT) \
+	src/StdInParse/StdInParseHandlers.$(OBJEXT)
+StdInParse_OBJECTS = $(am_StdInParse_OBJECTS)
+StdInParse_LDADD = $(LDADD)
+StdInParse_DEPENDENCIES = ${top_builddir}/src/libxerces-c.la
+am_XInclude_OBJECTS = src/XInclude/XInclude.$(OBJEXT)
+XInclude_OBJECTS = $(am_XInclude_OBJECTS)
+XInclude_LDADD = $(LDADD)
+XInclude_DEPENDENCIES = ${top_builddir}/src/libxerces-c.la
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir) -I$(top_builddir)/src/xercesc/util
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+	--mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
+	$(LDFLAGS) -o $@
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+	$(LDFLAGS) -o $@
+SOURCES = $(CreateDOMDocument_SOURCES) $(DOMCount_SOURCES) \
+	$(DOMPrint_SOURCES) $(EnumVal_SOURCES) $(MemParse_SOURCES) \
+	$(PParse_SOURCES) $(PSVIWriter_SOURCES) $(Redirect_SOURCES) \
+	$(SAX2Count_SOURCES) $(SAX2Print_SOURCES) $(SAXCount_SOURCES) \
+	$(SAXPrint_SOURCES) $(SCMPrint_SOURCES) $(SEnumVal_SOURCES) \
+	$(StdInParse_SOURCES) $(XInclude_SOURCES)
+DIST_SOURCES = $(CreateDOMDocument_SOURCES) $(DOMCount_SOURCES) \
+	$(DOMPrint_SOURCES) $(EnumVal_SOURCES) $(MemParse_SOURCES) \
+	$(PParse_SOURCES) $(PSVIWriter_SOURCES) $(Redirect_SOURCES) \
+	$(SAX2Count_SOURCES) $(SAX2Print_SOURCES) $(SAXCount_SOURCES) \
+	$(SAXPrint_SOURCES) $(SCMPrint_SOURCES) $(SEnumVal_SOURCES) \
+	$(StdInParse_SOURCES) $(XInclude_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BUILD_SHARED = @BUILD_SHARED@
+BUILD_STATIC = @BUILD_STATIC@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CURL_FLAGS = @CURL_FLAGS@
+CURL_LIBS = @CURL_LIBS@
+CURL_PRESENT = @CURL_PRESENT@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+ICU_BIN = @ICU_BIN@
+ICU_FLAGS = @ICU_FLAGS@
+ICU_LIBS = @ICU_LIBS@
+ICU_PRESENT = @ICU_PRESENT@
+ICU_SBIN = @ICU_SBIN@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SHREXT = @SHREXT@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+acx_pthread_config = @acx_pthread_config@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+curl_config = @curl_config@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+icu_config = @icu_config@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+pkgconfigdir = @pkgconfigdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+LDADD = ${top_builddir}/src/libxerces-c.la
+# the  -I${top_builddir}/src is needed to pick the xercesc/util/Xerces_autoconf_config.hpp 
+# header file when doing out-of-tree builds
+AM_CPPFLAGS = -I${top_builddir}/src -I${top_srcdir}/src
+EXTRA_DIST = data/personal.dtd \
+                                    data/personal.xml \
+                                    data/personal.xsd \
+                                    data/personal-schema.xml \
+                                    data/redirect.dtd
+
+sampleprogs = CreateDOMDocument DOMCount DOMPrint EnumVal MemParse \
+	PParse PSVIWriter Redirect SAX2Count SAX2Print SAXCount \
+	SAXPrint SCMPrint SEnumVal StdInParse XInclude
+CreateDOMDocument_SOURCES = src/CreateDOMDocument/CreateDOMDocument.cpp
+DOMCount_SOURCES = src/DOMCount/DOMCount.cpp \
+                                    src/DOMCount/DOMCount.hpp
+
+DOMPrint_SOURCES = src/DOMPrint/DOMPrint.cpp \
+                                    src/DOMPrint/DOMPrintErrorHandler.cpp \
+                                    src/DOMPrint/DOMPrintErrorHandler.hpp \
+                                    src/DOMPrint/DOMPrintFilter.cpp \
+                                    src/DOMPrint/DOMPrintFilter.hpp \
+                                    src/DOMPrint/DOMTreeErrorReporter.cpp \
+                                    src/DOMPrint/DOMTreeErrorReporter.hpp
+
+EnumVal_SOURCES = src/EnumVal/EnumVal.cpp
+MemParse_SOURCES = src/MemParse/MemParse.cpp \
+                                    src/MemParse/MemParse.hpp \
+                                    src/MemParse/MemParseHandlers.cpp \
+                                    src/MemParse/MemParseHandlers.hpp
+
+PParse_SOURCES = src/PParse/PParse.cpp \
+                                    src/PParse/PParse.hpp \
+                                    src/PParse/PParseHandlers.cpp \
+                                    src/PParse/PParseHandlers.hpp
+
+PSVIWriter_SOURCES = src/PSVIWriter/PSVIWriter.cpp \
+                                    src/PSVIWriter/PSVIWriter.hpp \
+                                    src/PSVIWriter/PSVIWriterHandlers.cpp \
+                                    src/PSVIWriter/PSVIWriterHandlers.hpp
+
+Redirect_SOURCES = src/Redirect/Redirect.cpp \
+                                    src/Redirect/Redirect.hpp \
+                                    src/Redirect/RedirectHandlers.cpp \
+                                    src/Redirect/RedirectHandlers.hpp
+
+SAX2Count_SOURCES = src/SAX2Count/SAX2Count.cpp \
+                                    src/SAX2Count/SAX2Count.hpp \
+                                    src/SAX2Count/SAX2CountHandlers.cpp \
+                                    src/SAX2Count/SAX2CountHandlers.hpp
+
+SAX2Print_SOURCES = src/SAX2Print/SAX2FilterHandlers.cpp \
+                                    src/SAX2Print/SAX2FilterHandlers.hpp \
+                                    src/SAX2Print/SAX2Print.cpp \
+                                    src/SAX2Print/SAX2Print.hpp \
+                                    src/SAX2Print/SAX2PrintHandlers.cpp \
+                                    src/SAX2Print/SAX2PrintHandlers.hpp
+
+SAXCount_SOURCES = src/SAXCount/SAXCount.cpp \
+                                    src/SAXCount/SAXCount.hpp \
+                                    src/SAXCount/SAXCountHandlers.cpp \
+                                    src/SAXCount/SAXCountHandlers.hpp
+
+SAXPrint_SOURCES = src/SAXPrint/SAXPrint.cpp \
+                                    src/SAXPrint/SAXPrint.hpp \
+                                    src/SAXPrint/SAXPrintHandlers.cpp \
+                                    src/SAXPrint/SAXPrintHandlers.hpp
+
+SCMPrint_SOURCES = src/SCMPrint/SCMPrint.cpp
+SEnumVal_SOURCES = src/SEnumVal/SEnumVal.cpp
+StdInParse_SOURCES = src/StdInParse/StdInParse.cpp \
+                                    src/StdInParse/StdInParse.hpp \
+                                    src/StdInParse/StdInParseHandlers.cpp \
+                                    src/StdInParse/StdInParseHandlers.hpp
+
+XInclude_SOURCES = src/XInclude/XInclude.cpp \
+                                    src/XInclude/XInclude.hpp
+
+ at XERCES_PRETTY_MAKE_TRUE@PRETTY_MAKE = ${top_srcdir}/config/pretty-make
+ at XERCES_PRETTY_MAKE_TRUE@PRETTY_COMPILE = ${PRETTY_MAKE} Compiling
+CXXCOMPILE = ${PRETTY_COMPILE} \
+	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+
+LTCXXCOMPILE = ${PRETTY_COMPILE}  \
+	$(LIBTOOL) --quiet --tag=CXX --mode=compile \
+	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .cpp .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign samples/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --foreign samples/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-binPROGRAMS: $(bin_PROGRAMS)
+	@$(NORMAL_INSTALL)
+	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
+	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	for p in $$list; do echo "$$p $$p"; done | \
+	sed 's/$(EXEEXT)$$//' | \
+	while read p p1; do if test -f $$p || test -f $$p1; \
+	  then echo "$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+	sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) files[d] = files[d] " " $$1; \
+	    else { print "f", $$3 "/" $$4, $$1; } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	    if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	    test -z "$$files" || { \
+	    echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+	    $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+	    } \
+	; done
+
+uninstall-binPROGRAMS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+	      -e 's/$$/$(EXEEXT)/' `; \
+	test -n "$$list" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(bindir)" && rm -f $$files
+
+clean-binPROGRAMS:
+	@list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \
+	echo " rm -f" $$list; \
+	rm -f $$list || exit $$?; \
+	test -n "$(EXEEXT)" || exit 0; \
+	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+	echo " rm -f" $$list; \
+	rm -f $$list
+src/CreateDOMDocument/$(am__dirstamp):
+	@$(MKDIR_P) src/CreateDOMDocument
+	@: > src/CreateDOMDocument/$(am__dirstamp)
+src/CreateDOMDocument/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) src/CreateDOMDocument/$(DEPDIR)
+	@: > src/CreateDOMDocument/$(DEPDIR)/$(am__dirstamp)
+src/CreateDOMDocument/CreateDOMDocument.$(OBJEXT):  \
+	src/CreateDOMDocument/$(am__dirstamp) \
+	src/CreateDOMDocument/$(DEPDIR)/$(am__dirstamp)
+CreateDOMDocument$(EXEEXT): $(CreateDOMDocument_OBJECTS) $(CreateDOMDocument_DEPENDENCIES) 
+	@rm -f CreateDOMDocument$(EXEEXT)
+	$(CXXLINK) $(CreateDOMDocument_OBJECTS) $(CreateDOMDocument_LDADD) $(LIBS)
+src/DOMCount/$(am__dirstamp):
+	@$(MKDIR_P) src/DOMCount
+	@: > src/DOMCount/$(am__dirstamp)
+src/DOMCount/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) src/DOMCount/$(DEPDIR)
+	@: > src/DOMCount/$(DEPDIR)/$(am__dirstamp)
+src/DOMCount/DOMCount.$(OBJEXT): src/DOMCount/$(am__dirstamp) \
+	src/DOMCount/$(DEPDIR)/$(am__dirstamp)
+DOMCount$(EXEEXT): $(DOMCount_OBJECTS) $(DOMCount_DEPENDENCIES) 
+	@rm -f DOMCount$(EXEEXT)
+	$(CXXLINK) $(DOMCount_OBJECTS) $(DOMCount_LDADD) $(LIBS)
+src/DOMPrint/$(am__dirstamp):
+	@$(MKDIR_P) src/DOMPrint
+	@: > src/DOMPrint/$(am__dirstamp)
+src/DOMPrint/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) src/DOMPrint/$(DEPDIR)
+	@: > src/DOMPrint/$(DEPDIR)/$(am__dirstamp)
+src/DOMPrint/DOMPrint.$(OBJEXT): src/DOMPrint/$(am__dirstamp) \
+	src/DOMPrint/$(DEPDIR)/$(am__dirstamp)
+src/DOMPrint/DOMPrintErrorHandler.$(OBJEXT):  \
+	src/DOMPrint/$(am__dirstamp) \
+	src/DOMPrint/$(DEPDIR)/$(am__dirstamp)
+src/DOMPrint/DOMPrintFilter.$(OBJEXT): src/DOMPrint/$(am__dirstamp) \
+	src/DOMPrint/$(DEPDIR)/$(am__dirstamp)
+src/DOMPrint/DOMTreeErrorReporter.$(OBJEXT):  \
+	src/DOMPrint/$(am__dirstamp) \
+	src/DOMPrint/$(DEPDIR)/$(am__dirstamp)
+DOMPrint$(EXEEXT): $(DOMPrint_OBJECTS) $(DOMPrint_DEPENDENCIES) 
+	@rm -f DOMPrint$(EXEEXT)
+	$(CXXLINK) $(DOMPrint_OBJECTS) $(DOMPrint_LDADD) $(LIBS)
+src/EnumVal/$(am__dirstamp):
+	@$(MKDIR_P) src/EnumVal
+	@: > src/EnumVal/$(am__dirstamp)
+src/EnumVal/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) src/EnumVal/$(DEPDIR)
+	@: > src/EnumVal/$(DEPDIR)/$(am__dirstamp)
+src/EnumVal/EnumVal.$(OBJEXT): src/EnumVal/$(am__dirstamp) \
+	src/EnumVal/$(DEPDIR)/$(am__dirstamp)
+EnumVal$(EXEEXT): $(EnumVal_OBJECTS) $(EnumVal_DEPENDENCIES) 
+	@rm -f EnumVal$(EXEEXT)
+	$(CXXLINK) $(EnumVal_OBJECTS) $(EnumVal_LDADD) $(LIBS)
+src/MemParse/$(am__dirstamp):
+	@$(MKDIR_P) src/MemParse
+	@: > src/MemParse/$(am__dirstamp)
+src/MemParse/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) src/MemParse/$(DEPDIR)
+	@: > src/MemParse/$(DEPDIR)/$(am__dirstamp)
+src/MemParse/MemParse.$(OBJEXT): src/MemParse/$(am__dirstamp) \
+	src/MemParse/$(DEPDIR)/$(am__dirstamp)
+src/MemParse/MemParseHandlers.$(OBJEXT): src/MemParse/$(am__dirstamp) \
+	src/MemParse/$(DEPDIR)/$(am__dirstamp)
+MemParse$(EXEEXT): $(MemParse_OBJECTS) $(MemParse_DEPENDENCIES) 
+	@rm -f MemParse$(EXEEXT)
+	$(CXXLINK) $(MemParse_OBJECTS) $(MemParse_LDADD) $(LIBS)
+src/PParse/$(am__dirstamp):
+	@$(MKDIR_P) src/PParse
+	@: > src/PParse/$(am__dirstamp)
+src/PParse/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) src/PParse/$(DEPDIR)
+	@: > src/PParse/$(DEPDIR)/$(am__dirstamp)
+src/PParse/PParse.$(OBJEXT): src/PParse/$(am__dirstamp) \
+	src/PParse/$(DEPDIR)/$(am__dirstamp)
+src/PParse/PParseHandlers.$(OBJEXT): src/PParse/$(am__dirstamp) \
+	src/PParse/$(DEPDIR)/$(am__dirstamp)
+PParse$(EXEEXT): $(PParse_OBJECTS) $(PParse_DEPENDENCIES) 
+	@rm -f PParse$(EXEEXT)
+	$(CXXLINK) $(PParse_OBJECTS) $(PParse_LDADD) $(LIBS)
+src/PSVIWriter/$(am__dirstamp):
+	@$(MKDIR_P) src/PSVIWriter
+	@: > src/PSVIWriter/$(am__dirstamp)
+src/PSVIWriter/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) src/PSVIWriter/$(DEPDIR)
+	@: > src/PSVIWriter/$(DEPDIR)/$(am__dirstamp)
+src/PSVIWriter/PSVIWriter.$(OBJEXT): src/PSVIWriter/$(am__dirstamp) \
+	src/PSVIWriter/$(DEPDIR)/$(am__dirstamp)
+src/PSVIWriter/PSVIWriterHandlers.$(OBJEXT):  \
+	src/PSVIWriter/$(am__dirstamp) \
+	src/PSVIWriter/$(DEPDIR)/$(am__dirstamp)
+PSVIWriter$(EXEEXT): $(PSVIWriter_OBJECTS) $(PSVIWriter_DEPENDENCIES) 
+	@rm -f PSVIWriter$(EXEEXT)
+	$(CXXLINK) $(PSVIWriter_OBJECTS) $(PSVIWriter_LDADD) $(LIBS)
+src/Redirect/$(am__dirstamp):
+	@$(MKDIR_P) src/Redirect
+	@: > src/Redirect/$(am__dirstamp)
+src/Redirect/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) src/Redirect/$(DEPDIR)
+	@: > src/Redirect/$(DEPDIR)/$(am__dirstamp)
+src/Redirect/Redirect.$(OBJEXT): src/Redirect/$(am__dirstamp) \
+	src/Redirect/$(DEPDIR)/$(am__dirstamp)
+src/Redirect/RedirectHandlers.$(OBJEXT): src/Redirect/$(am__dirstamp) \
+	src/Redirect/$(DEPDIR)/$(am__dirstamp)
+Redirect$(EXEEXT): $(Redirect_OBJECTS) $(Redirect_DEPENDENCIES) 
+	@rm -f Redirect$(EXEEXT)
+	$(CXXLINK) $(Redirect_OBJECTS) $(Redirect_LDADD) $(LIBS)
+src/SAX2Count/$(am__dirstamp):
+	@$(MKDIR_P) src/SAX2Count
+	@: > src/SAX2Count/$(am__dirstamp)
+src/SAX2Count/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) src/SAX2Count/$(DEPDIR)
+	@: > src/SAX2Count/$(DEPDIR)/$(am__dirstamp)
+src/SAX2Count/SAX2Count.$(OBJEXT): src/SAX2Count/$(am__dirstamp) \
+	src/SAX2Count/$(DEPDIR)/$(am__dirstamp)
+src/SAX2Count/SAX2CountHandlers.$(OBJEXT):  \
+	src/SAX2Count/$(am__dirstamp) \
+	src/SAX2Count/$(DEPDIR)/$(am__dirstamp)
+SAX2Count$(EXEEXT): $(SAX2Count_OBJECTS) $(SAX2Count_DEPENDENCIES) 
+	@rm -f SAX2Count$(EXEEXT)
+	$(CXXLINK) $(SAX2Count_OBJECTS) $(SAX2Count_LDADD) $(LIBS)
+src/SAX2Print/$(am__dirstamp):
+	@$(MKDIR_P) src/SAX2Print
+	@: > src/SAX2Print/$(am__dirstamp)
+src/SAX2Print/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) src/SAX2Print/$(DEPDIR)
+	@: > src/SAX2Print/$(DEPDIR)/$(am__dirstamp)
+src/SAX2Print/SAX2FilterHandlers.$(OBJEXT):  \
+	src/SAX2Print/$(am__dirstamp) \
+	src/SAX2Print/$(DEPDIR)/$(am__dirstamp)
+src/SAX2Print/SAX2Print.$(OBJEXT): src/SAX2Print/$(am__dirstamp) \
+	src/SAX2Print/$(DEPDIR)/$(am__dirstamp)
+src/SAX2Print/SAX2PrintHandlers.$(OBJEXT):  \
+	src/SAX2Print/$(am__dirstamp) \
+	src/SAX2Print/$(DEPDIR)/$(am__dirstamp)
+SAX2Print$(EXEEXT): $(SAX2Print_OBJECTS) $(SAX2Print_DEPENDENCIES) 
+	@rm -f SAX2Print$(EXEEXT)
+	$(CXXLINK) $(SAX2Print_OBJECTS) $(SAX2Print_LDADD) $(LIBS)
+src/SAXCount/$(am__dirstamp):
+	@$(MKDIR_P) src/SAXCount
+	@: > src/SAXCount/$(am__dirstamp)
+src/SAXCount/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) src/SAXCount/$(DEPDIR)
+	@: > src/SAXCount/$(DEPDIR)/$(am__dirstamp)
+src/SAXCount/SAXCount.$(OBJEXT): src/SAXCount/$(am__dirstamp) \
+	src/SAXCount/$(DEPDIR)/$(am__dirstamp)
+src/SAXCount/SAXCountHandlers.$(OBJEXT): src/SAXCount/$(am__dirstamp) \
+	src/SAXCount/$(DEPDIR)/$(am__dirstamp)
+SAXCount$(EXEEXT): $(SAXCount_OBJECTS) $(SAXCount_DEPENDENCIES) 
+	@rm -f SAXCount$(EXEEXT)
+	$(CXXLINK) $(SAXCount_OBJECTS) $(SAXCount_LDADD) $(LIBS)
+src/SAXPrint/$(am__dirstamp):
+	@$(MKDIR_P) src/SAXPrint
+	@: > src/SAXPrint/$(am__dirstamp)
+src/SAXPrint/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) src/SAXPrint/$(DEPDIR)
+	@: > src/SAXPrint/$(DEPDIR)/$(am__dirstamp)
+src/SAXPrint/SAXPrint.$(OBJEXT): src/SAXPrint/$(am__dirstamp) \
+	src/SAXPrint/$(DEPDIR)/$(am__dirstamp)
+src/SAXPrint/SAXPrintHandlers.$(OBJEXT): src/SAXPrint/$(am__dirstamp) \
+	src/SAXPrint/$(DEPDIR)/$(am__dirstamp)
+SAXPrint$(EXEEXT): $(SAXPrint_OBJECTS) $(SAXPrint_DEPENDENCIES) 
+	@rm -f SAXPrint$(EXEEXT)
+	$(CXXLINK) $(SAXPrint_OBJECTS) $(SAXPrint_LDADD) $(LIBS)
+src/SCMPrint/$(am__dirstamp):
+	@$(MKDIR_P) src/SCMPrint
+	@: > src/SCMPrint/$(am__dirstamp)
+src/SCMPrint/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) src/SCMPrint/$(DEPDIR)
+	@: > src/SCMPrint/$(DEPDIR)/$(am__dirstamp)
+src/SCMPrint/SCMPrint.$(OBJEXT): src/SCMPrint/$(am__dirstamp) \
+	src/SCMPrint/$(DEPDIR)/$(am__dirstamp)
+SCMPrint$(EXEEXT): $(SCMPrint_OBJECTS) $(SCMPrint_DEPENDENCIES) 
+	@rm -f SCMPrint$(EXEEXT)
+	$(CXXLINK) $(SCMPrint_OBJECTS) $(SCMPrint_LDADD) $(LIBS)
+src/SEnumVal/$(am__dirstamp):
+	@$(MKDIR_P) src/SEnumVal
+	@: > src/SEnumVal/$(am__dirstamp)
+src/SEnumVal/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) src/SEnumVal/$(DEPDIR)
+	@: > src/SEnumVal/$(DEPDIR)/$(am__dirstamp)
+src/SEnumVal/SEnumVal.$(OBJEXT): src/SEnumVal/$(am__dirstamp) \
+	src/SEnumVal/$(DEPDIR)/$(am__dirstamp)
+SEnumVal$(EXEEXT): $(SEnumVal_OBJECTS) $(SEnumVal_DEPENDENCIES) 
+	@rm -f SEnumVal$(EXEEXT)
+	$(CXXLINK) $(SEnumVal_OBJECTS) $(SEnumVal_LDADD) $(LIBS)
+src/StdInParse/$(am__dirstamp):
+	@$(MKDIR_P) src/StdInParse
+	@: > src/StdInParse/$(am__dirstamp)
+src/StdInParse/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) src/StdInParse/$(DEPDIR)
+	@: > src/StdInParse/$(DEPDIR)/$(am__dirstamp)
+src/StdInParse/StdInParse.$(OBJEXT): src/StdInParse/$(am__dirstamp) \
+	src/StdInParse/$(DEPDIR)/$(am__dirstamp)
+src/StdInParse/StdInParseHandlers.$(OBJEXT):  \
+	src/StdInParse/$(am__dirstamp) \
+	src/StdInParse/$(DEPDIR)/$(am__dirstamp)
+StdInParse$(EXEEXT): $(StdInParse_OBJECTS) $(StdInParse_DEPENDENCIES) 
+	@rm -f StdInParse$(EXEEXT)
+	$(CXXLINK) $(StdInParse_OBJECTS) $(StdInParse_LDADD) $(LIBS)
+src/XInclude/$(am__dirstamp):
+	@$(MKDIR_P) src/XInclude
+	@: > src/XInclude/$(am__dirstamp)
+src/XInclude/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) src/XInclude/$(DEPDIR)
+	@: > src/XInclude/$(DEPDIR)/$(am__dirstamp)
+src/XInclude/XInclude.$(OBJEXT): src/XInclude/$(am__dirstamp) \
+	src/XInclude/$(DEPDIR)/$(am__dirstamp)
+XInclude$(EXEEXT): $(XInclude_OBJECTS) $(XInclude_DEPENDENCIES) 
+	@rm -f XInclude$(EXEEXT)
+	$(CXXLINK) $(XInclude_OBJECTS) $(XInclude_LDADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+	-rm -f src/CreateDOMDocument/CreateDOMDocument.$(OBJEXT)
+	-rm -f src/DOMCount/DOMCount.$(OBJEXT)
+	-rm -f src/DOMPrint/DOMPrint.$(OBJEXT)
+	-rm -f src/DOMPrint/DOMPrintErrorHandler.$(OBJEXT)
+	-rm -f src/DOMPrint/DOMPrintFilter.$(OBJEXT)
+	-rm -f src/DOMPrint/DOMTreeErrorReporter.$(OBJEXT)
+	-rm -f src/EnumVal/EnumVal.$(OBJEXT)
+	-rm -f src/MemParse/MemParse.$(OBJEXT)
+	-rm -f src/MemParse/MemParseHandlers.$(OBJEXT)
+	-rm -f src/PParse/PParse.$(OBJEXT)
+	-rm -f src/PParse/PParseHandlers.$(OBJEXT)
+	-rm -f src/PSVIWriter/PSVIWriter.$(OBJEXT)
+	-rm -f src/PSVIWriter/PSVIWriterHandlers.$(OBJEXT)
+	-rm -f src/Redirect/Redirect.$(OBJEXT)
+	-rm -f src/Redirect/RedirectHandlers.$(OBJEXT)
+	-rm -f src/SAX2Count/SAX2Count.$(OBJEXT)
+	-rm -f src/SAX2Count/SAX2CountHandlers.$(OBJEXT)
+	-rm -f src/SAX2Print/SAX2FilterHandlers.$(OBJEXT)
+	-rm -f src/SAX2Print/SAX2Print.$(OBJEXT)
+	-rm -f src/SAX2Print/SAX2PrintHandlers.$(OBJEXT)
+	-rm -f src/SAXCount/SAXCount.$(OBJEXT)
+	-rm -f src/SAXCount/SAXCountHandlers.$(OBJEXT)
+	-rm -f src/SAXPrint/SAXPrint.$(OBJEXT)
+	-rm -f src/SAXPrint/SAXPrintHandlers.$(OBJEXT)
+	-rm -f src/SCMPrint/SCMPrint.$(OBJEXT)
+	-rm -f src/SEnumVal/SEnumVal.$(OBJEXT)
+	-rm -f src/StdInParse/StdInParse.$(OBJEXT)
+	-rm -f src/StdInParse/StdInParseHandlers.$(OBJEXT)
+	-rm -f src/XInclude/XInclude.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at src/CreateDOMDocument/$(DEPDIR)/CreateDOMDocument.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at src/DOMCount/$(DEPDIR)/DOMCount.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at src/DOMPrint/$(DEPDIR)/DOMPrint.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at src/DOMPrint/$(DEPDIR)/DOMPrintErrorHandler.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at src/DOMPrint/$(DEPDIR)/DOMPrintFilter.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at src/DOMPrint/$(DEPDIR)/DOMTreeErrorReporter.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at src/EnumVal/$(DEPDIR)/EnumVal.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at src/MemParse/$(DEPDIR)/MemParse.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at src/MemParse/$(DEPDIR)/MemParseHandlers.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at src/PParse/$(DEPDIR)/PParse.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at src/PParse/$(DEPDIR)/PParseHandlers.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at src/PSVIWriter/$(DEPDIR)/PSVIWriter.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at src/PSVIWriter/$(DEPDIR)/PSVIWriterHandlers.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at src/Redirect/$(DEPDIR)/Redirect.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at src/Redirect/$(DEPDIR)/RedirectHandlers.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at src/SAX2Count/$(DEPDIR)/SAX2Count.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at src/SAX2Count/$(DEPDIR)/SAX2CountHandlers.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at src/SAX2Print/$(DEPDIR)/SAX2FilterHandlers.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at src/SAX2Print/$(DEPDIR)/SAX2Print.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at src/SAX2Print/$(DEPDIR)/SAX2PrintHandlers.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at src/SAXCount/$(DEPDIR)/SAXCount.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at src/SAXCount/$(DEPDIR)/SAXCountHandlers.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at src/SAXPrint/$(DEPDIR)/SAXPrint.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at src/SAXPrint/$(DEPDIR)/SAXPrintHandlers.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at src/SCMPrint/$(DEPDIR)/SCMPrint.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at src/SEnumVal/$(DEPDIR)/SEnumVal.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at src/StdInParse/$(DEPDIR)/StdInParse.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at src/StdInParse/$(DEPDIR)/StdInParseHandlers.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at src/XInclude/$(DEPDIR)/XInclude.Po at am__quote@
+
+ at XERCES_PRETTY_MAKE_FALSE@.cpp.o:
+ at am__fastdepCXX_TRUE@	depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ $<
+
+ at XERCES_PRETTY_MAKE_FALSE@.cpp.obj:
+ at am__fastdepCXX_TRUE@	depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+ at XERCES_PRETTY_MAKE_FALSE@.cpp.lo:
+ at am__fastdepCXX_TRUE@	depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ at am__fastdepCXX_TRUE@	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ at am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(LTCXXCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	set x; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(PROGRAMS)
+installdirs:
+	for dir in "$(DESTDIR)$(bindir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+	-rm -f src/CreateDOMDocument/$(DEPDIR)/$(am__dirstamp)
+	-rm -f src/CreateDOMDocument/$(am__dirstamp)
+	-rm -f src/DOMCount/$(DEPDIR)/$(am__dirstamp)
+	-rm -f src/DOMCount/$(am__dirstamp)
+	-rm -f src/DOMPrint/$(DEPDIR)/$(am__dirstamp)
+	-rm -f src/DOMPrint/$(am__dirstamp)
+	-rm -f src/EnumVal/$(DEPDIR)/$(am__dirstamp)
+	-rm -f src/EnumVal/$(am__dirstamp)
+	-rm -f src/MemParse/$(DEPDIR)/$(am__dirstamp)
+	-rm -f src/MemParse/$(am__dirstamp)
+	-rm -f src/PParse/$(DEPDIR)/$(am__dirstamp)
+	-rm -f src/PParse/$(am__dirstamp)
+	-rm -f src/PSVIWriter/$(DEPDIR)/$(am__dirstamp)
+	-rm -f src/PSVIWriter/$(am__dirstamp)
+	-rm -f src/Redirect/$(DEPDIR)/$(am__dirstamp)
+	-rm -f src/Redirect/$(am__dirstamp)
+	-rm -f src/SAX2Count/$(DEPDIR)/$(am__dirstamp)
+	-rm -f src/SAX2Count/$(am__dirstamp)
+	-rm -f src/SAX2Print/$(DEPDIR)/$(am__dirstamp)
+	-rm -f src/SAX2Print/$(am__dirstamp)
+	-rm -f src/SAXCount/$(DEPDIR)/$(am__dirstamp)
+	-rm -f src/SAXCount/$(am__dirstamp)
+	-rm -f src/SAXPrint/$(DEPDIR)/$(am__dirstamp)
+	-rm -f src/SAXPrint/$(am__dirstamp)
+	-rm -f src/SCMPrint/$(DEPDIR)/$(am__dirstamp)
+	-rm -f src/SCMPrint/$(am__dirstamp)
+	-rm -f src/SEnumVal/$(DEPDIR)/$(am__dirstamp)
+	-rm -f src/SEnumVal/$(am__dirstamp)
+	-rm -f src/StdInParse/$(DEPDIR)/$(am__dirstamp)
+	-rm -f src/StdInParse/$(am__dirstamp)
+	-rm -f src/XInclude/$(DEPDIR)/$(am__dirstamp)
+	-rm -f src/XInclude/$(am__dirstamp)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf src/CreateDOMDocument/$(DEPDIR) src/DOMCount/$(DEPDIR) src/DOMPrint/$(DEPDIR) src/EnumVal/$(DEPDIR) src/MemParse/$(DEPDIR) src/PParse/$(DEPDIR) src/PSVIWriter/$(DEPDIR) src/Redirect/$(DEPDIR) src/SAX2Count/$(DEPDIR) src/SAX2Print/$(DEPDIR) src/SAXCount/$(DEPDIR) src/SAXPrint/$(DEPDIR) src/SCMPrint/$(DEPDIR) src/SEnumVal/$(DEPDIR) src/StdInParse/$(DEPDIR) src/XInclude/$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-binPROGRAMS
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf src/CreateDOMDocument/$(DEPDIR) src/DOMCount/$(DEPDIR) src/DOMPrint/$(DEPDIR) src/EnumVal/$(DEPDIR) src/MemParse/$(DEPDIR) src/PParse/$(DEPDIR) src/PSVIWriter/$(DEPDIR) src/Redirect/$(DEPDIR) src/SAX2Count/$(DEPDIR) src/SAX2Print/$(DEPDIR) src/SAXCount/$(DEPDIR) src/SAXPrint/$(DEPDIR) src/SCMPrint/$(DEPDIR) src/SEnumVal/$(DEPDIR) src/StdInParse/$(DEPDIR) src/XInclude/$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
+	clean-generic clean-libtool ctags distclean distclean-compile \
+	distclean-generic distclean-libtool distclean-tags distdir dvi \
+	dvi-am html html-am info info-am install install-am \
+	install-binPROGRAMS install-data install-data-am install-dvi \
+	install-dvi-am install-exec install-exec-am install-html \
+	install-html-am install-info install-info-am install-man \
+	install-pdf install-pdf-am install-ps install-ps-am \
+	install-strip installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+	pdf pdf-am ps ps-am tags uninstall uninstall-am \
+	uninstall-binPROGRAMS
+
+
+#
+# Override generated rules to provide prettier make rules
+#
+# Warning: If Automake changes sufficiently, these rules may need to
+#          be regenerated from the (new) default output of Automake
+#
+ at XERCES_PRETTY_MAKE_TRUE@.cpp.o:
+ at XERCES_PRETTY_MAKE_TRUE@@am__fastdepCXX_TRUE@	@depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`; \
+ at XERCES_PRETTY_MAKE_TRUE@@am__fastdepCXX_TRUE@	if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$$depbase.Tpo" -c -o $@ $<; \
+ at XERCES_PRETTY_MAKE_TRUE@@am__fastdepCXX_TRUE@	then $(am__mv) "$$depbase.Tpo" "$$depbase.Po"; else rm -f "$$depbase.Tpo"; exit 1; fi
+ at XERCES_PRETTY_MAKE_TRUE@@AMDEP_TRUE@@am__fastdepCXX_FALSE@	@source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at XERCES_PRETTY_MAKE_TRUE@@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at XERCES_PRETTY_MAKE_TRUE@@am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ $<
+
+ at XERCES_PRETTY_MAKE_TRUE@.cpp.obj:
+ at XERCES_PRETTY_MAKE_TRUE@@am__fastdepCXX_TRUE@	@depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`; \
+ at XERCES_PRETTY_MAKE_TRUE@@am__fastdepCXX_TRUE@	if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$$depbase.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+ at XERCES_PRETTY_MAKE_TRUE@@am__fastdepCXX_TRUE@	then $(am__mv) "$$depbase.Tpo" "$$depbase.Po"; else rm -f "$$depbase.Tpo"; exit 1; fi
+ at XERCES_PRETTY_MAKE_TRUE@@AMDEP_TRUE@@am__fastdepCXX_FALSE@	@source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at XERCES_PRETTY_MAKE_TRUE@@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at XERCES_PRETTY_MAKE_TRUE@@am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+ at XERCES_PRETTY_MAKE_TRUE@.cpp.lo:
+ at XERCES_PRETTY_MAKE_TRUE@@am__fastdepCXX_TRUE@	@depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`; \
+ at XERCES_PRETTY_MAKE_TRUE@@am__fastdepCXX_TRUE@	if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$$depbase.Tpo" -c -o $@ $<; \
+ at XERCES_PRETTY_MAKE_TRUE@@am__fastdepCXX_TRUE@	then $(am__mv) "$$depbase.Tpo" "$$depbase.Plo"; else rm -f "$$depbase.Tpo"; exit 1; fi
+ at XERCES_PRETTY_MAKE_TRUE@@AMDEP_TRUE@@am__fastdepCXX_FALSE@	@source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at XERCES_PRETTY_MAKE_TRUE@@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at XERCES_PRETTY_MAKE_TRUE@@am__fastdepCXX_FALSE@	$(LTCXXCOMPILE) -c -o $@ $<
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/data/long.xml
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/data/long.xml	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/data/long.xml	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1 @@
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><soap:Body><n:getQuoteResponse xmlns:n="urn:xmethods-delayed-quotes"><uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuubbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
 bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
 ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
 pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
 vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
 vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
 vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
 vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
 vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
 vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
 vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
 vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
 vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
 vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
 ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
 ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
 ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
 ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
 ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
 ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
 ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
 ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
 ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
 dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffflllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
 lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
 lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
 lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
 ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
 ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
 ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccoiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
 iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii xsi:type="xsd:float">89.63</uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuubbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
 ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
 ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
 vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
 vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
 vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
 vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
 vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
 vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
 vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
 vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
 vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
 vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
 ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
 ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
 ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
 ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
 ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
 ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
 ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
 ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
 ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
 ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfffffffffffffffffffffffffffffffffffffff
 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
 fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllll
 lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
 lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
 llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllccccccccccccccccccccc
 ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
 ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
 ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
 ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccoiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii></n:getQuoteResponse></soap:Body></soap:Envelope>
\ No newline at end of file

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/data/personal-schema.xml
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/data/personal-schema.xml	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/data/personal-schema.xml	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?proc-inst-1 'foo' ?>
+<personnel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	   xsi:noNamespaceSchemaLocation='personal.xsd'>
+
+  <person id="Big.Boss">
+    <name xml:base="foo/bar"><family  xml:base="bar/bar">Boss</family> <given xml:base="car/bar">Big</given><?proc-inst-2 'foobar' ?></name>
+    <email>chief at foo.com</email>
+    <link subordinates="one.worker two.worker three.worker four.worker five.worker"/>
+  </person>
+
+  <person id="one.worker" xml:base="/auto/bar">
+    <name xml:base="/car/foo/"><family xml:base="bar/bar">Worker</family> <given>One</given></name>
+    <email>one at foo.com</email>
+    <link manager="Big.Boss"/>
+  </person>
+
+  <person id="two.worker" xml:base="http://www.example.com/car/car">
+    <name xml:base="/bar/foo/"><family xml:base="foo/bar">Worker</family> <given>Two</given></name>
+    <email>two at foo.com</email>
+    <link manager="Big.Boss"/>
+  </person>
+
+  <person id="three.worker">
+    <name><family>Worker</family> <given>Three</given></name>
+    <email>three at foo.com</email>
+    <link manager="Big.Boss"/>
+  </person>
+
+  <person id="four.worker">
+    <name><family>Worker</family> <given>Four</given></name>
+    <email>four at foo.com</email>
+    <link manager="Big.Boss"/>
+  </person>
+
+  <person id="five.worker">
+    <name><family>Worker</family> <given>Five</given></name>
+    <email>five at foo.com</email>
+    <link manager="Big.Boss"/>
+  </person>
+
+</personnel>

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/data/personal.dtd
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/data/personal.dtd	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/data/personal.dtd	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,17 @@
+<?xml encoding="ISO-8859-1"?>
+
+<!-- @version:  -->
+
+<!ELEMENT personnel (person)+>
+<!ELEMENT person (name,email*,url*,link?)>
+<!ATTLIST person id ID #REQUIRED>
+<!ELEMENT family (#PCDATA)>
+<!ELEMENT given (#PCDATA)>
+<!ELEMENT name (#PCDATA|family|given)*>
+<!ELEMENT email (#PCDATA)>
+<!ELEMENT url EMPTY>
+<!ATTLIST url href CDATA #REQUIRED>
+<!ELEMENT link EMPTY>
+<!ATTLIST link
+  manager IDREF #IMPLIED
+  subordinates IDREFS #IMPLIED>

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/data/personal.xml
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/data/personal.xml	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/data/personal.xml	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE personnel SYSTEM "personal.dtd">
+
+<!-- @version: -->
+
+<personnel>
+
+  <person id="Big.Boss" >
+    <name><family>Boss</family> <given>Big</given></name>
+    <email>chief at foo.com</email>
+    <link subordinates="one.worker two.worker three.worker four.worker five.worker"/>
+  </person>
+
+  <person id="one.worker">
+    <name><family>Worker</family> <given>One</given></name>
+    <email>one at foo.com</email>
+    <link manager="Big.Boss"/>
+  </person>
+
+  <person id="two.worker">
+    <name><family>Worker</family> <given>Two</given></name>
+    <email>two at foo.com</email>
+    <link manager="Big.Boss"/>
+  </person>
+
+  <person id="three.worker">
+    <name><family>Worker</family> <given>Three</given></name>
+    <email>three at foo.com</email>
+    <link manager="Big.Boss"/>
+  </person>
+
+  <person id="four.worker">
+    <name><family>Worker</family> <given>Four</given></name>
+    <email>four at foo.com</email>
+    <link manager="Big.Boss"/>
+  </person>
+
+  <person id="five.worker">
+    <name><family>Worker</family> <given>Five</given></name>
+    <email>five at foo.com</email>
+    <link manager="Big.Boss"/>
+  </person>
+
+</personnel>

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/data/personal.xsd
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/data/personal.xsd	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/data/personal.xsd	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
+
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace">
+   <xs:annotation>
+     <xs:documentation>
+        The schemaLocation of the relevant file is
+        "http://www.w3.org/2001/xml.xsd"; however,
+        we don't want to assume people are always
+        connected to the 'net when playing with this file.
+     </xs:documentation>
+   </xs:annotation>
+ </xs:import>
+
+ <xs:element name="personnel">
+  <xs:complexType>
+   <xs:sequence>
+     <xs:element ref="person" minOccurs='1' maxOccurs='unbounded'/>
+   </xs:sequence>
+  </xs:complexType>
+
+  <xs:unique name="unique1">
+   <xs:selector xpath="person"/>
+   <xs:field xpath="name/given"/>
+   <xs:field xpath="name/family"/>
+  </xs:unique>
+  <xs:key name='empid'>
+   <xs:selector xpath="person"/>
+   <xs:field xpath="@id"/>
+  </xs:key>
+  <xs:keyref name="keyref1" refer='empid'>
+   <xs:selector xpath="person"/> 
+   <xs:field xpath="link/@manager"/>  
+  </xs:keyref>
+
+ </xs:element>
+
+ <xs:element name="person">
+  <xs:complexType>
+   <xs:sequence>
+     <xs:element ref="name"/>
+     <xs:element ref="email" minOccurs='0' maxOccurs='unbounded'/>
+     <xs:element ref="url"   minOccurs='0' maxOccurs='unbounded'/>
+     <xs:element ref="link"  minOccurs='0' maxOccurs='1'/>
+   </xs:sequence>
+   <xs:attribute name="id"  type="xs:ID" use='required'/>
+   <xs:attribute name="note" type="xs:string"/>
+   <xs:attribute name="contr" default="false">
+    <xs:simpleType>
+     <xs:restriction base = "xs:string">
+       <xs:enumeration value="true"/>
+       <xs:enumeration value="false"/>
+     </xs:restriction>
+    </xs:simpleType>
+   </xs:attribute>
+   <xs:attribute name="salary" type="xs:integer"/>
+   <xs:anyAttribute namespace="http://www.w3.org/XML/1998/namespace" processContents="skip"/>
+  </xs:complexType>
+ </xs:element>
+
+ <xs:element name="name">
+  <xs:complexType>
+   <xs:all>
+    <xs:element ref="family"/>
+    <xs:element ref="given"/>
+   </xs:all>
+   <xs:anyAttribute namespace="http://www.w3.org/XML/1998/namespace" processContents="skip"/>
+  </xs:complexType>
+ </xs:element>
+
+ <xs:element name="family">
+   <xs:complexType>
+     <xs:simpleContent>
+       <xs:extension base='xs:string'>
+          <xs:anyAttribute namespace="http://www.w3.org/XML/1998/namespace" processContents="skip"/>
+        </xs:extension>
+     </xs:simpleContent>
+   </xs:complexType>
+ </xs:element>
+
+ <xs:element name="given" >
+   <xs:complexType>
+     <xs:simpleContent>
+       <xs:extension base='xs:string'>
+          <xs:anyAttribute namespace="http://www.w3.org/XML/1998/namespace" processContents="skip"/>
+        </xs:extension>
+     </xs:simpleContent>
+   </xs:complexType>
+ </xs:element>
+
+ <xs:element name="email" type='xs:string'/>
+
+ <xs:element name="url">
+  <xs:complexType>
+   <xs:attribute name="href" type="xs:string" default="http://"/>
+  </xs:complexType>
+ </xs:element>
+
+ <xs:element name="link">
+  <xs:complexType>
+   <xs:attribute name="manager" type="xs:IDREF"/>
+   <xs:attribute name="subordinates" type="xs:IDREFS"/>
+  </xs:complexType>
+ </xs:element>
+
+ <xs:notation name='gif' public='-//APP/Photoshop/4.0' system='photoshop.exe'/>
+
+</xs:schema>

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/data/redirect.dtd
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/data/redirect.dtd	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/data/redirect.dtd	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,17 @@
+<?xml encoding="ISO-8859-1"?>
+
+<!-- @version: -->
+
+<!ELEMENT personnel (person)+>
+<!ELEMENT person (name,email*,url*,link?)>
+<!ATTLIST person id ID #REQUIRED>
+<!ELEMENT family (#PCDATA)>
+<!ELEMENT given (#PCDATA)>
+<!ELEMENT name (#PCDATA|family|given)*>
+<!ELEMENT email (#PCDATA)>
+<!ELEMENT url EMPTY>
+<!ATTLIST url href CDATA #REQUIRED>
+<!ELEMENT link EMPTY>
+<!ATTLIST link
+  manager IDREF #IMPLIED
+  subordinates IDREFS #IMPLIED>

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/CreateDOMDocument/CreateDOMDocument.cpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/CreateDOMDocument/CreateDOMDocument.cpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/CreateDOMDocument/CreateDOMDocument.cpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,205 @@
+/*
+ * 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.
+ */
+
+/*
+ * $Id: CreateDOMDocument.cpp 5336 2010-10-26 22:52:27Z brucedechant $
+ */
+
+/*
+ * This sample illustrates how you can create a DOM tree in memory.
+ * It then prints the count of elements in the tree.
+ */
+
+
+// ---------------------------------------------------------------------------
+//  Includes
+// ---------------------------------------------------------------------------
+#include <xercesc/util/PlatformUtils.hpp>
+#include <xercesc/util/XMLString.hpp>
+#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
+
+// ---------------------------------------------------------------------------
+//  This is a simple class that lets us do easy (though not terribly efficient)
+//  trancoding of char* data to XMLCh data.
+// ---------------------------------------------------------------------------
+class XStr
+{
+public :
+    // -----------------------------------------------------------------------
+    //  Constructors and Destructor
+    // -----------------------------------------------------------------------
+    XStr(const char* const toTranscode)
+    {
+        // Call the private transcoding method
+        fUnicodeForm = XMLString::transcode(toTranscode);
+    }
+
+    ~XStr()
+    {
+        XMLString::release(&fUnicodeForm);
+    }
+
+
+    // -----------------------------------------------------------------------
+    //  Getter methods
+    // -----------------------------------------------------------------------
+    const XMLCh* unicodeForm() const
+    {
+        return fUnicodeForm;
+    }
+
+private :
+    // -----------------------------------------------------------------------
+    //  Private data members
+    //
+    //  fUnicodeForm
+    //      This is the Unicode XMLCh format of the string.
+    // -----------------------------------------------------------------------
+    XMLCh*   fUnicodeForm;
+};
+
+#define X(str) XStr(str).unicodeForm()
+
+
+// ---------------------------------------------------------------------------
+//  main
+// ---------------------------------------------------------------------------
+
+int main(int argC, char*[])
+{
+    // Initialize the XML4C2 system.
+    try
+    {
+        XMLPlatformUtils::Initialize();
+    }
+
+    catch(const XMLException& toCatch)
+    {
+        char *pMsg = XMLString::transcode(toCatch.getMessage());
+        XERCES_STD_QUALIFIER cerr << "Error during Xerces-c Initialization.\n"
+             << "  Exception message:"
+             << pMsg;
+        XMLString::release(&pMsg);
+        return 1;
+    }
+
+    // Watch for special case help request
+    int errorCode = 0;
+    if (argC > 1)
+    {
+        XERCES_STD_QUALIFIER 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;
+        errorCode = 1;
+    }
+    if(errorCode) {
+        XMLPlatformUtils::Terminate();
+        return errorCode;
+    }
+
+   {
+       //  Nest entire test in an inner block.
+       //  The tree we create below is the same that the XercesDOMParser would
+       //  have created, except that no whitespace text nodes would be created.
+
+       // <company>
+       //     <product>Xerces-C</product>
+       //     <category idea='great'>XML Parsing Tools</category>
+       //     <developedBy>Apache Software Foundation</developedBy>
+       // </company>
+
+       DOMImplementation* impl =  DOMImplementationRegistry::getDOMImplementation(X("Core"));
+
+       if (impl != NULL)
+       {
+           try
+           {
+               DOMDocument* doc = impl->createDocument(
+                           0,                    // root element namespace URI.
+                           X("company"),         // root element name
+                           0);                   // document type object (DTD).
+
+               DOMElement* rootElem = doc->getDocumentElement();
+
+               DOMElement*  prodElem = doc->createElement(X("product"));
+               rootElem->appendChild(prodElem);
+
+               DOMText*    prodDataVal = doc->createTextNode(X("Xerces-C"));
+               prodElem->appendChild(prodDataVal);
+
+               DOMElement*  catElem = doc->createElement(X("category"));
+               rootElem->appendChild(catElem);
+
+               catElem->setAttribute(X("idea"), X("great"));
+
+               DOMText*    catDataVal = doc->createTextNode(X("XML Parsing Tools"));
+               catElem->appendChild(catDataVal);
+
+               DOMElement*  devByElem = doc->createElement(X("developedBy"));
+               rootElem->appendChild(devByElem);
+
+               DOMText*    devByDataVal = doc->createTextNode(X("Apache Software Foundation"));
+               devByElem->appendChild(devByDataVal);
+
+               //
+               // Now count the number of elements in the above DOM tree.
+               //
+
+               const XMLSize_t elementCount = doc->getElementsByTagName(X("*"))->getLength();
+               XERCES_STD_QUALIFIER cout << "The tree just created contains: " << elementCount
+                    << " elements." << XERCES_STD_QUALIFIER endl;
+
+               doc->release();
+           }
+           catch (const OutOfMemoryException&)
+           {
+               XERCES_STD_QUALIFIER cerr << "OutOfMemoryException" << XERCES_STD_QUALIFIER endl;
+               errorCode = 5;
+           }
+           catch (const DOMException& e)
+           {
+               XERCES_STD_QUALIFIER cerr << "DOMException code is:  " << e.code << XERCES_STD_QUALIFIER endl;
+               errorCode = 2;
+           }
+           catch (...)
+           {
+               XERCES_STD_QUALIFIER cerr << "An error occurred creating the document" << XERCES_STD_QUALIFIER endl;
+               errorCode = 3;
+           }
+       }  // (inpl != NULL)
+       else
+       {
+           XERCES_STD_QUALIFIER cerr << "Requested implementation is not supported" << XERCES_STD_QUALIFIER endl;
+           errorCode = 4;
+       }
+   }
+
+   XMLPlatformUtils::Terminate();
+   return errorCode;
+}

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/DOMCount/DOMCount.cpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/DOMCount/DOMCount.cpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/DOMCount/DOMCount.cpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,465 @@
+/*
+ * 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.
+ */
+
+/*
+ * $Id: DOMCount.cpp 5336 2010-10-26 22:52:27Z brucedechant $
+ */
+
+// ---------------------------------------------------------------------------
+//  Includes
+// ---------------------------------------------------------------------------
+#include <xercesc/util/PlatformUtils.hpp>
+#include <xercesc/parsers/AbstractDOMParser.hpp>
+#include <xercesc/dom/DOMImplementation.hpp>
+#include <xercesc/dom/DOMImplementationLS.hpp>
+#include <xercesc/dom/DOMImplementationRegistry.hpp>
+#include <xercesc/dom/DOMLSParser.hpp>
+#include <xercesc/dom/DOMException.hpp>
+#include <xercesc/dom/DOMDocument.hpp>
+#include <xercesc/dom/DOMNodeList.hpp>
+#include <xercesc/dom/DOMError.hpp>
+#include <xercesc/dom/DOMLocator.hpp>
+#include <xercesc/dom/DOMNamedNodeMap.hpp>
+#include <xercesc/dom/DOMAttr.hpp>
+#include "DOMCount.hpp"
+#include <string.h>
+#include <stdlib.h>
+
+#if defined(XERCES_NEW_IOSTREAMS)
+#include <fstream>
+#else
+#include <fstream.h>
+#endif
+
+
+// ---------------------------------------------------------------------------
+//  This is a simple program which invokes the DOMParser to build a DOM
+//  tree for the specified input file. It then walks the tree and counts
+//  the number of elements. The element count is then printed.
+// ---------------------------------------------------------------------------
+static void usage()
+{
+    XERCES_STD_QUALIFIER 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"
+            "Options:\n"
+            "    -l          Indicate the input file is a List File that has a list of xml files.\n"
+            "                Default to off (Input file is an XML file).\n"
+            "    -v=xxx      Validation scheme [always | never | auto*].\n"
+            "    -n          Enable namespace processing. Defaults to off.\n"
+            "    -s          Enable schema processing. Defaults to off.\n"
+            "    -f          Enable full schema constraint checking. Defaults to off.\n"
+            "    -locale=ll_CC specify the locale, default: en_US.\n"
+            "    -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;
+}
+
+
+
+// ---------------------------------------------------------------------------
+//
+//  Recursively Count up the total number of child Elements under the specified Node.
+//  Process attributes of the node, if any.
+//
+// ---------------------------------------------------------------------------
+static int countChildElements(DOMNode *n, bool printOutEncounteredEles)
+{
+    DOMNode *child;
+    int count = 0;
+    if (n) {
+        if (n->getNodeType() == DOMNode::ELEMENT_NODE)
+		{
+            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;
+
+                XMLString::release(&name);
+
+                if(n->hasAttributes()) {
+                    // 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;
+                    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 << "=";
+                        XMLString::release(&name);
+
+                        // get attribute type
+                        name = XMLString::transcode(pAttributeNode->getValue());
+                        XERCES_STD_QUALIFIER cout << name << XERCES_STD_QUALIFIER endl;
+                        XMLString::release(&name);
+                    }
+                }
+            }
+			++count;
+		}
+        for (child = n->getFirstChild(); child != 0; child=child->getNextSibling())
+            count += countChildElements(child, printOutEncounteredEles);
+    }
+    return count;
+}
+
+// ---------------------------------------------------------------------------
+//
+//   main
+//
+// ---------------------------------------------------------------------------
+int main(int argC, char* argV[])
+{
+
+    // Check command line and extract arguments.
+    if (argC < 2)
+    {
+        usage();
+        return 1;
+    }
+
+    const char*                xmlFile = 0;
+    AbstractDOMParser::ValSchemes valScheme = AbstractDOMParser::Val_Auto;
+    bool                       doNamespaces       = false;
+    bool                       doSchema           = false;
+    bool                       schemaFullChecking = false;
+    bool                       doList = false;
+    bool                       errorOccurred = false;
+    bool                       recognizeNEL = false;
+    bool                       printOutEncounteredEles = false;
+    char                       localeStr[64];
+    memset(localeStr, 0, sizeof localeStr);
+
+    int argInd;
+    for (argInd = 1; argInd < argC; argInd++)
+    {
+        // Break out on first parm not starting with a dash
+        if (argV[argInd][0] != '-')
+            break;
+
+        // Watch for special case help request
+        if (!strcmp(argV[argInd], "-?"))
+        {
+            usage();
+            return 2;
+        }
+         else if (!strncmp(argV[argInd], "-v=", 3)
+              ||  !strncmp(argV[argInd], "-V=", 3))
+        {
+            const char* const parm = &argV[argInd][3];
+
+            if (!strcmp(parm, "never"))
+                valScheme = AbstractDOMParser::Val_Never;
+            else if (!strcmp(parm, "auto"))
+                valScheme = AbstractDOMParser::Val_Auto;
+            else if (!strcmp(parm, "always"))
+                valScheme = AbstractDOMParser::Val_Always;
+            else
+            {
+                XERCES_STD_QUALIFIER cerr << "Unknown -v= value: " << parm << XERCES_STD_QUALIFIER endl;
+                return 2;
+            }
+        }
+         else if (!strcmp(argV[argInd], "-n")
+              ||  !strcmp(argV[argInd], "-N"))
+        {
+            doNamespaces = true;
+        }
+         else if (!strcmp(argV[argInd], "-s")
+              ||  !strcmp(argV[argInd], "-S"))
+        {
+            doSchema = true;
+        }
+         else if (!strcmp(argV[argInd], "-f")
+              ||  !strcmp(argV[argInd], "-F"))
+        {
+            schemaFullChecking = true;
+        }
+         else if (!strcmp(argV[argInd], "-l")
+              ||  !strcmp(argV[argInd], "-L"))
+        {
+            doList = true;
+        }
+         else if (!strcmp(argV[argInd], "-special:nel"))
+        {
+            // turning this on will lead to non-standard compliance behaviour
+            // it will recognize the unicode character 0x85 as new line character
+            // instead of regular character as specified in XML 1.0
+            // do not turn this on unless really necessary
+
+             recognizeNEL = true;
+        }
+         else if (!strcmp(argV[argInd], "-p")
+              ||  !strcmp(argV[argInd], "-P"))
+        {
+            printOutEncounteredEles = true;
+        }
+         else if (!strncmp(argV[argInd], "-locale=", 8))
+        {
+             // Get out the end of line
+             strcpy(localeStr, &(argV[argInd][8]));
+        }
+         else
+        {
+            XERCES_STD_QUALIFIER cerr << "Unknown option '" << argV[argInd]
+                 << "', ignoring it\n" << XERCES_STD_QUALIFIER endl;
+        }
+    }
+
+    //
+    //  There should be only one and only one parameter left, and that
+    //  should be the file name.
+    //
+    if (argInd != argC - 1)
+    {
+        usage();
+        return 1;
+    }
+
+    // Initialize the XML4C system
+    try
+    {
+        if (strlen(localeStr))
+        {
+            XMLPlatformUtils::Initialize(localeStr);
+        }
+        else
+        {
+            XMLPlatformUtils::Initialize();
+        }
+
+        if (recognizeNEL)
+        {
+            XMLPlatformUtils::recognizeNEL(recognizeNEL);
+        }
+    }
+
+    catch (const XMLException& toCatch)
+    {
+         XERCES_STD_QUALIFIER cerr << "Error during initialization! :\n"
+              << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl;
+         return 1;
+    }
+
+    // Instantiate the DOM parser.
+    static const XMLCh gLS[] = { chLatin_L, chLatin_S, chNull };
+    DOMImplementation *impl = DOMImplementationRegistry::getDOMImplementation(gLS);
+    DOMLSParser       *parser = ((DOMImplementationLS*)impl)->createLSParser(DOMImplementationLS::MODE_SYNCHRONOUS, 0);
+    DOMConfiguration  *config = parser->getDomConfig();
+
+    config->setParameter(XMLUni::fgDOMNamespaces, doNamespaces);
+    config->setParameter(XMLUni::fgXercesSchema, doSchema);
+    config->setParameter(XMLUni::fgXercesHandleMultipleImports, true);
+    config->setParameter(XMLUni::fgXercesSchemaFullChecking, schemaFullChecking);
+
+    if (valScheme == AbstractDOMParser::Val_Auto)
+    {
+        config->setParameter(XMLUni::fgDOMValidateIfSchema, true);
+    }
+    else if (valScheme == AbstractDOMParser::Val_Never)
+    {
+        config->setParameter(XMLUni::fgDOMValidate, false);
+    }
+    else if (valScheme == AbstractDOMParser::Val_Always)
+    {
+        config->setParameter(XMLUni::fgDOMValidate, true);
+    }
+
+    // enable datatype normalization - default is off
+    config->setParameter(XMLUni::fgDOMDatatypeNormalization, true);
+
+    // And create our error handler and install it
+    DOMCountErrorHandler errorHandler;
+    config->setParameter(XMLUni::fgDOMErrorHandler, &errorHandler);
+
+    //
+    //  Get the starting time and kick off the parse of the indicated
+    //  file. Catch any exceptions that might propogate out of it.
+    //
+    unsigned long duration;
+
+    bool more = true;
+    XERCES_STD_QUALIFIER 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;
+        return 2;
+    }
+
+    while (more)
+    {
+        char fURI[1000];
+        //initialize the array to zeros
+        memset(fURI,0,sizeof(fURI));
+
+        if (doList) {
+            if (! fin.eof() ) {
+                fin.getline (fURI, sizeof(fURI));
+                if (!*fURI)
+                    continue;
+                else {
+                    xmlFile = fURI;
+                    XERCES_STD_QUALIFIER cerr << "==Parsing== " << xmlFile << XERCES_STD_QUALIFIER endl;
+                }
+            }
+            else
+                break;
+        }
+        else {
+            xmlFile = argV[argInd];
+            more = false;
+        }
+
+        //reset error count first
+        errorHandler.resetErrors();
+
+        XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *doc = 0;
+
+        try
+        {
+            // reset document pool
+            parser->resetDocumentPool();
+
+            const unsigned long startMillis = XMLPlatformUtils::getCurrentMillis();
+            doc = parser->parseURI(xmlFile);
+            const unsigned long endMillis = XMLPlatformUtils::getCurrentMillis();
+            duration = endMillis - startMillis;
+        }
+
+        catch (const XMLException& toCatch)
+        {
+            XERCES_STD_QUALIFIER cerr << "\nError during parsing: '" << xmlFile << "'\n"
+                 << "Exception message is:  \n"
+                 << StrX(toCatch.getMessage()) << "\n" << XERCES_STD_QUALIFIER endl;
+            errorOccurred = true;
+            continue;
+        }
+        catch (const DOMException& toCatch)
+        {
+            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;
+
+            if (DOMImplementation::loadDOMExceptionMsg(toCatch.code, errText, maxChars))
+                 XERCES_STD_QUALIFIER cerr << "Message is: " << StrX(errText) << XERCES_STD_QUALIFIER endl;
+
+            errorOccurred = true;
+            continue;
+        }
+        catch (...)
+        {
+            XERCES_STD_QUALIFIER cerr << "\nUnexpected exception during parsing: '" << xmlFile << "'\n";
+            errorOccurred = true;
+            continue;
+        }
+
+        //
+        //  Extract the DOM tree, get the list of all the elements and report the
+        //  length as the count of elements.
+        //
+        if (errorHandler.getSawErrors())
+        {
+            XERCES_STD_QUALIFIER cout << "\nErrors occurred, no output available\n" << XERCES_STD_QUALIFIER endl;
+            errorOccurred = true;
+        }
+         else
+        {
+            unsigned int elementCount = 0;
+            if (doc) {
+                elementCount = countChildElements((DOMNode*)doc->getDocumentElement(), printOutEncounteredEles);
+                // 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;
+                    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;
+        }
+    }
+
+    //
+    //  Delete the parser itself.  Must be done prior to calling Terminate, below.
+    //
+    parser->release();
+
+    // And call the termination method
+    XMLPlatformUtils::Terminate();
+
+    if (doList)
+        fin.close();
+
+    if (errorOccurred)
+        return 4;
+    else
+        return 0;
+}
+
+
+
+
+
+DOMCountErrorHandler::DOMCountErrorHandler() :
+
+    fSawErrors(false)
+{
+}
+
+DOMCountErrorHandler::~DOMCountErrorHandler()
+{
+}
+
+
+// ---------------------------------------------------------------------------
+//  DOMCountHandlers: Overrides of the DOM ErrorHandler interface
+// ---------------------------------------------------------------------------
+bool DOMCountErrorHandler::handleError(const DOMError& domError)
+{
+    fSawErrors = true;
+    if (domError.getSeverity() == DOMError::DOM_SEVERITY_WARNING)
+        XERCES_STD_QUALIFIER cerr << "\nWarning at file ";
+    else if (domError.getSeverity() == DOMError::DOM_SEVERITY_ERROR)
+        XERCES_STD_QUALIFIER cerr << "\nError at file ";
+    else
+        XERCES_STD_QUALIFIER cerr << "\nFatal Error at file ";
+
+    XERCES_STD_QUALIFIER cerr << StrX(domError.getLocation()->getURI())
+         << ", line " << domError.getLocation()->getLineNumber()
+         << ", char " << domError.getLocation()->getColumnNumber()
+         << "\n  Message: " << StrX(domError.getMessage()) << XERCES_STD_QUALIFIER endl;
+
+    return true;
+}
+
+void DOMCountErrorHandler::resetErrors()
+{
+    fSawErrors = false;
+}

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/DOMCount/DOMCount.hpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/DOMCount/DOMCount.hpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/DOMCount/DOMCount.hpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,130 @@
+/*
+ * 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.
+ */
+
+/*
+ * $Id: DOMCount.hpp 5336 2010-10-26 22:52:27Z brucedechant $
+ */
+
+// ---------------------------------------------------------------------------
+//  Includes
+// ---------------------------------------------------------------------------
+#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
+
+// ---------------------------------------------------------------------------
+//  Simple error handler deriviative to install on parser
+// ---------------------------------------------------------------------------
+class DOMCountErrorHandler : public DOMErrorHandler
+{
+public:
+    // -----------------------------------------------------------------------
+    //  Constructors and Destructor
+    // -----------------------------------------------------------------------
+    DOMCountErrorHandler();
+    ~DOMCountErrorHandler();
+
+
+    // -----------------------------------------------------------------------
+    //  Getter methods
+    // -----------------------------------------------------------------------
+    bool getSawErrors() const;
+
+
+    // -----------------------------------------------------------------------
+    //  Implementation of the DOM ErrorHandler interface
+    // -----------------------------------------------------------------------
+    bool handleError(const DOMError& domError);
+    void resetErrors();
+
+
+private :
+    // -----------------------------------------------------------------------
+    //  Unimplemented constructors and operators
+    // -----------------------------------------------------------------------
+    DOMCountErrorHandler(const DOMCountErrorHandler&);
+    void operator=(const DOMCountErrorHandler&);
+
+
+    // -----------------------------------------------------------------------
+    //  Private data members
+    //
+    //  fSawErrors
+    //      This is set if we get any errors, and is queryable via a getter
+    //      method. Its used by the main code to suppress output if there are
+    //      errors.
+    // -----------------------------------------------------------------------
+    bool    fSawErrors;
+};
+
+
+// ---------------------------------------------------------------------------
+//  This is a simple class that lets us do easy (though not terribly efficient)
+//  trancoding of XMLCh data to local code page for display.
+// ---------------------------------------------------------------------------
+class StrX
+{
+public :
+    // -----------------------------------------------------------------------
+    //  Constructors and Destructor
+    // -----------------------------------------------------------------------
+    StrX(const XMLCh* const toTranscode)
+    {
+        // Call the private transcoding method
+        fLocalForm = XMLString::transcode(toTranscode);
+    }
+
+    ~StrX()
+    {
+        XMLString::release(&fLocalForm);
+    }
+
+
+    // -----------------------------------------------------------------------
+    //  Getter methods
+    // -----------------------------------------------------------------------
+    const char* localForm() const
+    {
+        return fLocalForm;
+    }
+
+private :
+    // -----------------------------------------------------------------------
+    //  Private data members
+    //
+    //  fLocalForm
+    //      This is the local code page form of the string.
+    // -----------------------------------------------------------------------
+    char*   fLocalForm;
+};
+
+inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump)
+{
+    target << toDump.localForm();
+    return target;
+}
+
+inline bool DOMCountErrorHandler::getSawErrors() const
+{
+    return fSawErrors;
+}

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/DOMPrint/DOMPrint.cpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/DOMPrint/DOMPrint.cpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/DOMPrint/DOMPrint.cpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,595 @@
+/*
+ * 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.
+ */
+
+/*
+ * $Id: DOMPrint.cpp 5336 2010-10-26 22:52:27Z brucedechant $
+ */
+
+// ---------------------------------------------------------------------------
+//  This sample program invokes the XercesDOMParser to build a DOM tree for
+//  the specified input file. It then invokes DOMLSSerializer::write() to
+//  serialize the resultant DOM tree back to XML stream.
+//
+//  Note:
+//  Application needs to provide its own implementation of
+//		   DOMErrorHandler (in this sample, the DOMPrintErrorHandler),
+//		   if it would like to receive notification from the serializer
+//		   in the case any error occurs during the serialization.
+//
+//  Application needs to provide its own implementation of
+//		   DOMLSSerializerFilter (in this sample, the DOMPrintFilter),
+//		   if it would like to filter out certain part of the DOM
+//		   representation, but must be aware that thus may render the
+//		   resultant XML stream invalid.
+//
+//  Application may choose any combination of characters as the
+//		   end of line sequence to be used in the resultant XML stream,
+//		   but must be aware that thus may render the resultant XML
+//		   stream ill formed.
+//
+//  Application may choose a particular encoding name in which
+//		   the output XML stream would be, but must be aware that if
+//		   characters, unrepresentable in the encoding specified, appearing
+//		   in markups, may force the serializer to terminate serialization
+//		   prematurely, and thus no complete serialization would be done.
+//
+//  Application shall query the serializer first, before set any
+//           feature/mode(true, false), or be ready to catch exception if this
+//           feature/mode is not supported by the serializer.
+//
+//  Application needs to clean up the filter, error handler and
+//		   format target objects created for the serialization.
+//
+//   Limitations:
+//      1.  The encoding="xxx" clause in the XML header should reflect
+//          the system local code page, but does not.
+//      2.  Cases where the XML data contains characters that can not
+//          be represented in the system local code page are not handled.
+//
+// ---------------------------------------------------------------------------
+
+
+// ---------------------------------------------------------------------------
+//  Includes
+// ---------------------------------------------------------------------------
+#include <xercesc/util/PlatformUtils.hpp>
+
+#include <xercesc/dom/DOM.hpp>
+
+#include <xercesc/framework/StdOutFormatTarget.hpp>
+#include <xercesc/framework/LocalFileFormatTarget.hpp>
+#include <xercesc/parsers/XercesDOMParser.hpp>
+#include <xercesc/util/XMLUni.hpp>
+
+#include "DOMTreeErrorReporter.hpp"
+#include "DOMPrintFilter.hpp"
+#include "DOMPrintErrorHandler.hpp"
+#include <xercesc/util/OutOfMemoryException.hpp>
+
+#include <string.h>
+#include <stdlib.h>
+
+// ---------------------------------------------------------------------------
+//  Local data
+//
+//  gXmlFile
+//      The path to the file to parser. Set via command line.
+//
+//  gDoNamespaces
+//      Indicates whether namespace processing should be done.
+//
+//  gDoSchema
+//      Indicates whether schema processing should be done.
+//
+//  gSchemaFullChecking
+//      Indicates whether full schema constraint checking should be done.
+//
+//  gDoCreate
+//      Indicates whether entity reference nodes needs to be created or not
+//      Defaults to false
+//
+//  gOutputEncoding
+//      The encoding we are to output in. If not set on the command line,
+//      then it is defaults to the encoding of the input XML file.
+//
+//  gSplitCdataSections
+//      Indicates whether split-cdata-sections is to be enabled or not.
+//
+//  gDiscardDefaultContent
+//      Indicates whether default content is discarded or not.
+//
+//  gUseFilter
+//      Indicates if user wants to plug in the DOMPrintFilter.
+//
+//  gValScheme
+//      Indicates what validation scheme to use. It defaults to 'auto', but
+//      can be set via the -v= command.
+//
+// ---------------------------------------------------------------------------
+static char*                    gXmlFile               = 0;
+static bool                     gDoNamespaces          = false;
+static bool                     gDoSchema              = false;
+static bool                     gSchemaFullChecking    = false;
+static bool                     gDoCreate              = false;
+
+static char*                    goutputfile            = 0;
+static char*                    gXPathExpression       = 0;
+
+// options for DOMLSSerializer's features
+static XMLCh*                   gOutputEncoding        = 0;
+
+static bool                     gSplitCdataSections    = true;
+static bool                     gDiscardDefaultContent = true;
+static bool                     gUseFilter             = false;
+static bool                     gFormatPrettyPrint     = false;
+static bool                     gWriteBOM              = false;
+
+static XercesDOMParser::ValSchemes    gValScheme       = XercesDOMParser::Val_Auto;
+
+
+//	Prototypes for internally used functions
+void usage();
+
+
+// ---------------------------------------------------------------------------
+//
+//  Usage()
+//
+// ---------------------------------------------------------------------------
+void usage()
+{
+    XERCES_STD_QUALIFIER 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"
+            "Options:\n"
+            "    -e          create entity reference nodes. Default is no expansion.\n"
+            "    -v=xxx      Validation scheme [always | never | auto*].\n"
+            "    -n          Enable namespace processing. Default is off.\n"
+            "    -s          Enable schema processing. Default is off.\n"
+            "    -f          Enable full schema constraint checking. Defaults is off.\n"
+            "    -wenc=XXX   Use a particular encoding for output. Default is\n"
+            "                the same encoding as the input XML file. UTF-8 if\n"
+            "                input XML file has not XML declaration.\n"
+            "    -wfile=xxx  Write to a file instead of stdout.\n"
+            "    -wscs=xxx   Enable/Disable split-cdata-sections.      Default on\n"
+            "    -wddc=xxx   Enable/Disable discard-default-content.   Default on\n"
+            "    -wflt=xxx   Enable/Disable filtering.                 Default off\n"
+            "    -wfpp=xxx   Enable/Disable format-pretty-print.       Default off\n"
+            "    -wbom=xxx   Enable/Disable write Byte-Order-Mark      Default off\n"
+            "    -xpath=xxx  Prints only the nodes matching the given XPath.\n"
+            "    -?          Show this help.\n\n"
+            "  * = Default if not provided explicitly.\n\n"
+            "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;
+}
+
+// ---------------------------------------------------------------------------
+//
+//  main
+//
+// ---------------------------------------------------------------------------
+int main(int argC, char* argV[])
+{
+    int retval = 0;
+
+    // Initialize the XML4C2 system
+    try
+    {
+        XMLPlatformUtils::Initialize();
+    }
+
+    catch(const XMLException &toCatch)
+    {
+        XERCES_STD_QUALIFIER cerr << "Error during Xerces-c Initialization.\n"
+             << "  Exception message:"
+             << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl;
+        return 1;
+    }
+
+    // Check command line and extract arguments.
+    if (argC < 2)
+    {
+        usage();
+        XMLPlatformUtils::Terminate();
+        return 1;
+    }
+
+    // See if non validating dom parser configuration is requested.
+    int parmInd;
+    for (parmInd = 1; parmInd < argC; parmInd++)
+    {
+        // Break out on first parm not starting with a dash
+        if (argV[parmInd][0] != '-')
+            break;
+
+        // Watch for special case help request
+        if (!strcmp(argV[parmInd], "-?"))
+        {
+            usage();
+            XMLPlatformUtils::Terminate();
+            return 2;
+        }
+         else if (!strncmp(argV[parmInd], "-v=", 3)
+              ||  !strncmp(argV[parmInd], "-V=", 3))
+        {
+            const char* const parm = &argV[parmInd][3];
+
+            if (!strcmp(parm, "never"))
+                gValScheme = XercesDOMParser::Val_Never;
+            else if (!strcmp(parm, "auto"))
+                gValScheme = XercesDOMParser::Val_Auto;
+            else if (!strcmp(parm, "always"))
+                gValScheme = XercesDOMParser::Val_Always;
+            else
+            {
+                XERCES_STD_QUALIFIER cerr << "Unknown -v= value: " << parm << XERCES_STD_QUALIFIER endl;
+                XMLPlatformUtils::Terminate();
+                return 2;
+            }
+        }
+         else if (!strcmp(argV[parmInd], "-n")
+              ||  !strcmp(argV[parmInd], "-N"))
+        {
+            gDoNamespaces = true;
+        }
+         else if (!strcmp(argV[parmInd], "-s")
+              ||  !strcmp(argV[parmInd], "-S"))
+        {
+            gDoSchema = true;
+        }
+         else if (!strcmp(argV[parmInd], "-f")
+              ||  !strcmp(argV[parmInd], "-F"))
+        {
+            gSchemaFullChecking = true;
+        }
+         else if (!strcmp(argV[parmInd], "-e")
+              ||  !strcmp(argV[parmInd], "-E"))
+        {
+            gDoCreate = true;
+        }
+         else if (!strncmp(argV[parmInd], "-wenc=", 6))
+        {
+             // Get out the encoding name
+             gOutputEncoding = XMLString::transcode( &(argV[parmInd][6]) );
+        }
+         else if (!strncmp(argV[parmInd], "-wfile=", 7))
+        {
+             goutputfile =  &(argV[parmInd][7]);
+        }
+         else if (!strncmp(argV[parmInd], "-wddc=", 6))
+        {
+            const char* const parm = &argV[parmInd][6];
+
+            if (!strcmp(parm, "on"))
+				gDiscardDefaultContent = true;
+            else if (!strcmp(parm, "off"))
+				gDiscardDefaultContent = false;
+            else
+            {
+                XERCES_STD_QUALIFIER cerr << "Unknown -wddc= value: " << parm << XERCES_STD_QUALIFIER endl;
+                XMLPlatformUtils::Terminate();
+                return 2;
+            }
+
+        }
+         else if (!strncmp(argV[parmInd], "-wscs=", 6))
+        {
+            const char* const parm = &argV[parmInd][6];
+
+            if (!strcmp(parm, "on"))
+				gSplitCdataSections = true;
+			else if (!strcmp(parm, "off"))
+				gSplitCdataSections = false;
+            else
+            {
+                XERCES_STD_QUALIFIER cerr << "Unknown -wscs= value: " << parm << XERCES_STD_QUALIFIER endl;
+                XMLPlatformUtils::Terminate();
+                return 2;
+            }
+        }
+         else if (!strncmp(argV[parmInd], "-wflt=", 6))
+        {
+            const char* const parm = &argV[parmInd][6];
+
+            if (!strcmp(parm, "on"))
+				gUseFilter = true;
+			else if (!strcmp(parm, "off"))
+				gUseFilter = false;
+            else
+            {
+                XERCES_STD_QUALIFIER cerr << "Unknown -wflt= value: " << parm << XERCES_STD_QUALIFIER endl;
+                XMLPlatformUtils::Terminate();
+                return 2;
+            }
+        }
+         else if (!strncmp(argV[parmInd], "-wfpp=", 6))
+        {
+            const char* const parm = &argV[parmInd][6];
+
+            if (!strcmp(parm, "on"))
+				gFormatPrettyPrint = true;
+			else if (!strcmp(parm, "off"))
+				gFormatPrettyPrint = false;
+            else
+            {
+                XERCES_STD_QUALIFIER cerr << "Unknown -wfpp= value: " << parm << XERCES_STD_QUALIFIER endl;
+                XMLPlatformUtils::Terminate();
+                return 2;
+            }
+        }
+         else if (!strncmp(argV[parmInd], "-wbom=", 6))
+        {
+            const char* const parm = &argV[parmInd][6];
+
+            if (!strcmp(parm, "on"))
+                gWriteBOM = true;
+            else if (!strcmp(parm, "off"))
+                gWriteBOM = false;
+            else
+            {
+                XERCES_STD_QUALIFIER cerr << "Unknown -wbom= value: " << parm << XERCES_STD_QUALIFIER endl;
+                XMLPlatformUtils::Terminate();
+                return 2;
+            }
+        }
+         else if (!strncmp(argV[parmInd], "-xpath=", 7))
+        {
+             gXPathExpression = &(argV[parmInd][7]);
+        }
+         else
+        {
+            XERCES_STD_QUALIFIER cerr << "Unknown option '" << argV[parmInd]
+                 << "', ignoring it.\n" << XERCES_STD_QUALIFIER endl;
+        }
+    }
+
+    //
+    //  And now we have to have only one parameter left and it must be
+    //  the file name.
+    //
+    if (parmInd + 1 != argC)
+    {
+        usage();
+        XMLPlatformUtils::Terminate();
+        return 1;
+    }
+    gXmlFile = argV[parmInd];
+
+    //
+    //  Create our parser, then attach an error handler to the parser.
+    //  The parser will call back to methods of the ErrorHandler if it
+    //  discovers errors during the course of parsing the XML document.
+    //
+    XercesDOMParser *parser = new XercesDOMParser;
+    parser->setValidationScheme(gValScheme);
+    parser->setDoNamespaces(gDoNamespaces);
+    parser->setDoSchema(gDoSchema);
+    parser->setHandleMultipleImports (true);
+    parser->setValidationSchemaFullChecking(gSchemaFullChecking);
+    parser->setCreateEntityReferenceNodes(gDoCreate);
+
+    DOMTreeErrorReporter *errReporter = new DOMTreeErrorReporter();
+    parser->setErrorHandler(errReporter);
+
+    //
+    //  Parse the XML file, catching any XML exceptions that might propogate
+    //  out of it.
+    //
+    bool errorsOccured = false;
+    try
+    {
+        parser->parse(gXmlFile);
+    }
+    catch (const OutOfMemoryException&)
+    {
+        XERCES_STD_QUALIFIER cerr << "OutOfMemoryException" << XERCES_STD_QUALIFIER 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;
+        errorsOccured = true;
+    }
+
+    catch (const DOMException& e)
+    {
+        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;
+
+        if (DOMImplementation::loadDOMExceptionMsg(e.code, errText, maxChars))
+             XERCES_STD_QUALIFIER cerr << "Message is: " << StrX(errText) << XERCES_STD_QUALIFIER endl;
+
+        errorsOccured = true;
+    }
+
+    catch (...)
+    {
+        XERCES_STD_QUALIFIER cerr << "An error occurred during parsing\n " << XERCES_STD_QUALIFIER endl;
+        errorsOccured = true;
+    }
+
+    // If the parse was successful, output the document data from the DOM tree
+    if (!errorsOccured && !errReporter->getSawErrors())
+    {
+        DOMPrintFilter   *myFilter = 0;
+
+        try
+        {
+            // get a serializer, an instance of DOMLSSerializer
+            XMLCh tempStr[3] = {chLatin_L, chLatin_S, chNull};
+            DOMImplementation *impl          = DOMImplementationRegistry::getDOMImplementation(tempStr);
+            DOMLSSerializer   *theSerializer = ((DOMImplementationLS*)impl)->createLSSerializer();
+            DOMLSOutput       *theOutputDesc = ((DOMImplementationLS*)impl)->createLSOutput();
+
+            // set user specified output encoding
+            theOutputDesc->setEncoding(gOutputEncoding);
+
+            // plug in user's own filter
+            if (gUseFilter)
+            {
+                // even we say to show attribute, but the DOMLSSerializer
+                // will not show attribute nodes to the filter as
+                // the specs explicitly says that DOMLSSerializer shall
+                // NOT show attributes to DOMLSSerializerFilter.
+                //
+                // so DOMNodeFilter::SHOW_ATTRIBUTE has no effect.
+                // same DOMNodeFilter::SHOW_DOCUMENT_TYPE, no effect.
+                //
+                myFilter = new DOMPrintFilter(DOMNodeFilter::SHOW_ELEMENT   |
+                                              DOMNodeFilter::SHOW_ATTRIBUTE |
+                                              DOMNodeFilter::SHOW_DOCUMENT_TYPE);
+                theSerializer->setFilter(myFilter);
+            }
+
+            // plug in user's own error handler
+            DOMErrorHandler *myErrorHandler = new DOMPrintErrorHandler();
+            DOMConfiguration* serializerConfig=theSerializer->getDomConfig();
+            serializerConfig->setParameter(XMLUni::fgDOMErrorHandler, myErrorHandler);
+
+            // set feature if the serializer supports the feature/mode
+            if (serializerConfig->canSetParameter(XMLUni::fgDOMWRTSplitCdataSections, gSplitCdataSections))
+                serializerConfig->setParameter(XMLUni::fgDOMWRTSplitCdataSections, gSplitCdataSections);
+
+            if (serializerConfig->canSetParameter(XMLUni::fgDOMWRTDiscardDefaultContent, gDiscardDefaultContent))
+                serializerConfig->setParameter(XMLUni::fgDOMWRTDiscardDefaultContent, gDiscardDefaultContent);
+
+            if (serializerConfig->canSetParameter(XMLUni::fgDOMWRTFormatPrettyPrint, gFormatPrettyPrint))
+                serializerConfig->setParameter(XMLUni::fgDOMWRTFormatPrettyPrint, gFormatPrettyPrint);
+
+            if (serializerConfig->canSetParameter(XMLUni::fgDOMWRTBOM, gWriteBOM))
+                serializerConfig->setParameter(XMLUni::fgDOMWRTBOM, gWriteBOM);
+
+            //
+            // Plug in a format target to receive the resultant
+            // XML stream from the serializer.
+            //
+            // StdOutFormatTarget prints the resultant XML stream
+            // to stdout once it receives any thing from the serializer.
+            //
+            XMLFormatTarget *myFormTarget;
+            if (goutputfile)
+                myFormTarget=new LocalFileFormatTarget(goutputfile);
+            else
+                myFormTarget=new StdOutFormatTarget();
+            theOutputDesc->setByteStream(myFormTarget);
+
+            // get the DOM representation
+            DOMDocument *doc = parser->getDocument();
+
+            //
+            // do the serialization through DOMLSSerializer::write();
+            //
+            if(gXPathExpression!=NULL)
+            {
+                XMLCh* xpathStr=XMLString::transcode(gXPathExpression);
+                DOMElement* root = doc->getDocumentElement();
+                try
+                {
+                    DOMXPathNSResolver* resolver=doc->createNSResolver(root);
+                    DOMXPathResult* result=doc->evaluate(
+                      xpathStr,
+                      root,
+                      resolver,
+                      DOMXPathResult::ORDERED_NODE_SNAPSHOT_TYPE,
+                      NULL);
+
+                    XMLSize_t nLength = result->getSnapshotLength();
+                    for(XMLSize_t i = 0; i < nLength; i++)
+                    {
+                      result->snapshotItem(i);
+                      theSerializer->write(result->getNodeValue(), theOutputDesc);
+                    }
+
+                    result->release();
+                    resolver->release ();
+                }
+                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;
+                    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;
+                    retval = 4;
+                }
+                XMLString::release(&xpathStr);
+            }
+            else
+                theSerializer->write(doc, theOutputDesc);
+
+            theOutputDesc->release();
+            theSerializer->release();
+
+            //
+            // Filter, formatTarget and error handler
+            // are NOT owned by the serializer.
+            //
+            delete myFormTarget;
+            delete myErrorHandler;
+
+            if (gUseFilter)
+                delete myFilter;
+
+        }
+        catch (const OutOfMemoryException&)
+        {
+            XERCES_STD_QUALIFIER cerr << "OutOfMemoryException" << XERCES_STD_QUALIFIER endl;
+            retval = 5;
+        }
+        catch (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;
+            retval = 4;
+        }
+
+    }
+    else
+        retval = 4;
+
+    //
+    //  Clean up the error handler. The parser does not adopt handlers
+    //  since they could be many objects or one object installed for multiple
+    //  handlers.
+    //
+    delete errReporter;
+
+    //
+    //  Delete the parser itself.  Must be done prior to calling Terminate, below.
+    //
+    delete parser;
+
+    XMLString::release(&gOutputEncoding);
+
+    // And call the termination method
+    XMLPlatformUtils::Terminate();
+
+    return retval;
+}

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/DOMPrint/DOMPrintErrorHandler.cpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/DOMPrint/DOMPrintErrorHandler.cpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/DOMPrint/DOMPrintErrorHandler.cpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,49 @@
+/*
+ * 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.
+ */
+
+/*
+ * $Id: DOMPrintErrorHandler.cpp 5336 2010-10-26 22:52:27Z brucedechant $
+ */
+
+#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"
+
+bool DOMPrintErrorHandler::handleError(const DOMError &domError)
+{
+    // Display whatever error message passed from the serializer
+    if (domError.getSeverity() == DOMError::DOM_SEVERITY_WARNING)
+        XERCES_STD_QUALIFIER cerr << "\nWarning Message: ";
+    else if (domError.getSeverity() == DOMError::DOM_SEVERITY_ERROR)
+        XERCES_STD_QUALIFIER cerr << "\nError Message: ";
+    else
+        XERCES_STD_QUALIFIER cerr << "\nFatal Message: ";
+
+    char *msg = XMLString::transcode(domError.getMessage());
+    XERCES_STD_QUALIFIER cerr<< msg <<XERCES_STD_QUALIFIER endl;
+    XMLString::release(&msg);
+
+    // Instructs the serializer to continue serialization if possible.
+    return true;
+}
+

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/DOMPrint/DOMPrintErrorHandler.hpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/DOMPrint/DOMPrintErrorHandler.hpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/DOMPrint/DOMPrintErrorHandler.hpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,48 @@
+/*
+ * 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.
+ */
+
+/*
+ * $Id: DOMPrintErrorHandler.hpp 5336 2010-10-26 22:52:27Z brucedechant $
+ */
+
+
+#ifndef DOM_PRINT_ERROR_HANDLER_HPP
+#define DOM_PRINT_ERROR_HANDLER_HPP
+
+#include <xercesc/dom/DOMErrorHandler.hpp>
+
+XERCES_CPP_NAMESPACE_USE
+
+class DOMPrintErrorHandler : public DOMErrorHandler
+{
+public:
+
+    DOMPrintErrorHandler(){};
+    ~DOMPrintErrorHandler(){};
+
+    /** @name The error handler interface */
+    bool handleError(const DOMError& domError);
+    void resetErrors(){};
+
+private :
+    /* Unimplemented constructors and operators */
+    DOMPrintErrorHandler(const DOMErrorHandler&);
+    void operator=(const DOMErrorHandler&);
+
+};
+
+#endif

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/DOMPrint/DOMPrintFilter.cpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/DOMPrint/DOMPrintFilter.cpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/DOMPrint/DOMPrintFilter.cpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,111 @@
+/*
+ * 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.
+ */
+
+/*
+ * $Id: DOMPrintFilter.cpp 5336 2010-10-26 22:52:27Z brucedechant $
+ */
+
+#include "DOMPrintFilter.hpp"
+#include <xercesc/util/XMLUniDefs.hpp>
+#include <xercesc/util/XMLString.hpp>
+
+static const XMLCh  element_person[]=
+{
+	chLatin_p, chLatin_e, chLatin_r, chLatin_s, chLatin_o, chLatin_n, chNull
+};
+
+static const XMLCh  element_link[]=
+{
+	chLatin_l, chLatin_i, chLatin_n, chLatin_k, chNull
+};
+
+DOMPrintFilter::DOMPrintFilter(ShowType whatToShow)
+:fWhatToShow(whatToShow)
+{}
+
+DOMNodeFilter::FilterAction DOMPrintFilter::
+acceptNode(const DOMNode* node) const
+{
+	//
+	// The DOMLSSerializer shall call getWhatToShow() before calling
+	// acceptNode(), to show nodes which are supposed to be
+	// shown to this filter.
+	//
+	// REVISIT: In case the DOMLSSerializer does not follow the protocol,
+	//          Shall the filter honour, or NOT, what it claims
+	//          it is interested in ?
+	//
+	// The DOMLS specs does not specify that acceptNode() shall do
+	// this way, or not, so it is up the implementation,
+	// to skip the code below for the sake of performance ...
+	//
+	if ((getWhatToShow() & (1 << (node->getNodeType() - 1))) == 0)
+		return DOMNodeFilter::FILTER_ACCEPT;
+
+	switch (node->getNodeType())
+	{
+	case DOMNode::ELEMENT_NODE:
+		{
+			// for element whose name is "person", skip it
+			if (XMLString::compareString(node->getNodeName(), element_person)==0)
+				return DOMNodeFilter::FILTER_SKIP;
+			// for element whose name is "line", reject it
+			if (XMLString::compareString(node->getNodeName(), element_link)==0)
+				return DOMNodeFilter::FILTER_REJECT;
+			// for rest, accept it
+			return DOMNodeFilter::FILTER_ACCEPT;
+
+			break;
+		}
+	case DOMNode::COMMENT_NODE:
+		{
+			// the WhatToShow will make this no effect
+			return DOMNodeFilter::FILTER_REJECT;
+			break;
+		}
+	case DOMNode::TEXT_NODE:
+		{
+			// the WhatToShow will make this no effect
+			return DOMNodeFilter::FILTER_REJECT;
+			break;
+		}
+	case DOMNode::DOCUMENT_TYPE_NODE:
+		{
+			// even we say we are going to process document type,
+			// we are not able be to see this node since
+			// DOMLSSerializerImpl (a XercesC's default implementation
+			// of DOMLSSerializer) will not pass DocumentType node to
+			// this filter.
+			//
+			return DOMNodeFilter::FILTER_REJECT;  // no effect
+			break;
+		}
+	case DOMNode::DOCUMENT_NODE:
+		{
+			// same as DOCUMENT_NODE
+			return DOMNodeFilter::FILTER_REJECT;  // no effect
+			break;
+		}
+	default :
+		{
+			return DOMNodeFilter::FILTER_ACCEPT;
+			break;
+		}
+	}
+
+	return DOMNodeFilter::FILTER_ACCEPT;
+}

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/DOMPrint/DOMPrintFilter.hpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/DOMPrint/DOMPrintFilter.hpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/DOMPrint/DOMPrintFilter.hpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,51 @@
+/*
+ * 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.
+ */
+
+/*
+ * $Id: DOMPrintFilter.hpp 5336 2010-10-26 22:52:27Z brucedechant $
+ */
+
+//////////////////////////////////////////////////////////////////////
+// DOMPrintFilter.hpp: a sample implementation of DOMWriterFilter.
+//
+//////////////////////////////////////////////////////////////////////
+
+#ifndef DOMPrintFilter_HEADER_GUARD_
+#define DOMPrintFilter_HEADER_GUARD_
+
+#include <xercesc/dom/DOMLSSerializerFilter.hpp>
+
+XERCES_CPP_NAMESPACE_USE
+
+class DOMPrintFilter : public DOMLSSerializerFilter {
+public:
+
+    DOMPrintFilter(ShowType whatToShow = DOMNodeFilter::SHOW_ALL);
+    ~DOMPrintFilter(){};
+
+    virtual FilterAction acceptNode(const DOMNode*) const;
+    virtual ShowType getWhatToShow() const {return fWhatToShow;};
+
+private:
+    // unimplemented copy ctor and assignement operator
+    DOMPrintFilter(const DOMPrintFilter&);
+    DOMPrintFilter & operator = (const DOMPrintFilter&);
+
+    ShowType fWhatToShow;
+};
+
+#endif

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/DOMPrint/DOMTreeErrorReporter.cpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/DOMPrint/DOMTreeErrorReporter.cpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/DOMPrint/DOMTreeErrorReporter.cpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,66 @@
+/*
+ * 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.
+ */
+
+/*
+ * $Id: DOMTreeErrorReporter.cpp 5336 2010-10-26 22:52:27Z brucedechant $
+ */
+
+// ---------------------------------------------------------------------------
+//  Includes
+// ---------------------------------------------------------------------------
+#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>
+
+
+void DOMTreeErrorReporter::warning(const SAXParseException&)
+{
+    //
+    // Ignore all warnings.
+    //
+}
+
+void DOMTreeErrorReporter::error(const SAXParseException& toCatch)
+{
+    fSawErrors = true;
+    XERCES_STD_QUALIFIER cerr << "Error at file \"" << StrX(toCatch.getSystemId())
+		 << "\", line " << toCatch.getLineNumber()
+		 << ", column " << toCatch.getColumnNumber()
+         << "\n   Message: " << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl;
+}
+
+void DOMTreeErrorReporter::fatalError(const SAXParseException& toCatch)
+{
+    fSawErrors = true;
+    XERCES_STD_QUALIFIER cerr << "Fatal Error at file \"" << StrX(toCatch.getSystemId())
+		 << "\", line " << toCatch.getLineNumber()
+		 << ", column " << toCatch.getColumnNumber()
+         << "\n   Message: " << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl;
+}
+
+void DOMTreeErrorReporter::resetErrors()
+{
+    fSawErrors = false;
+}
+
+

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/DOMPrint/DOMTreeErrorReporter.hpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/DOMPrint/DOMTreeErrorReporter.hpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/DOMPrint/DOMTreeErrorReporter.hpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,124 @@
+/*
+ * 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.
+ */
+
+/*
+ * $Id: DOMTreeErrorReporter.hpp 5336 2010-10-26 22:52:27Z brucedechant $
+ */
+
+#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
+
+
+class DOMTreeErrorReporter : public ErrorHandler
+{
+public:
+    // -----------------------------------------------------------------------
+    //  Constructors and Destructor
+    // -----------------------------------------------------------------------
+    DOMTreeErrorReporter() :
+       fSawErrors(false)
+    {
+    }
+
+    ~DOMTreeErrorReporter()
+    {
+    }
+
+
+    // -----------------------------------------------------------------------
+    //  Implementation of the error handler interface
+    // -----------------------------------------------------------------------
+    void warning(const SAXParseException& toCatch);
+    void error(const SAXParseException& toCatch);
+    void fatalError(const SAXParseException& toCatch);
+    void resetErrors();
+
+    // -----------------------------------------------------------------------
+    //  Getter methods
+    // -----------------------------------------------------------------------
+    bool getSawErrors() const;
+
+    // -----------------------------------------------------------------------
+    //  Private data members
+    //
+    //  fSawErrors
+    //      This is set if we get any errors, and is queryable via a getter
+    //      method. Its used by the main code to suppress output if there are
+    //      errors.
+    // -----------------------------------------------------------------------
+    bool    fSawErrors;
+};
+
+inline bool DOMTreeErrorReporter::getSawErrors() const
+{
+    return fSawErrors;
+}
+
+// ---------------------------------------------------------------------------
+//  This is a simple class that lets us do easy (though not terribly efficient)
+//  trancoding of XMLCh data to local code page for display.
+// ---------------------------------------------------------------------------
+class StrX
+{
+public :
+    // -----------------------------------------------------------------------
+    //  Constructors and Destructor
+    // -----------------------------------------------------------------------
+    StrX(const XMLCh* const toTranscode)
+    {
+        // Call the private transcoding method
+        fLocalForm = XMLString::transcode(toTranscode);
+    }
+
+    ~StrX()
+    {
+        XMLString::release(&fLocalForm);
+    }
+
+
+    // -----------------------------------------------------------------------
+    //  Getter methods
+    // -----------------------------------------------------------------------
+    const char* localForm() const
+    {
+        return fLocalForm;
+    }
+
+private :
+    // -----------------------------------------------------------------------
+    //  Private data members
+    //
+    //  fLocalForm
+    //      This is the local code page form of the string.
+    // -----------------------------------------------------------------------
+    char*   fLocalForm;
+};
+
+inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump)
+{
+    target << toDump.localForm();
+    return target;
+}
+

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/EnumVal/EnumVal.cpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/EnumVal/EnumVal.cpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/EnumVal/EnumVal.cpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,284 @@
+/*
+ * 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.
+ */
+
+/*
+ * $Id: EnumVal.cpp 5336 2010-10-26 22:52:27Z brucedechant $
+ */
+
+// ---------------------------------------------------------------------------
+//  Includes
+// ---------------------------------------------------------------------------
+#include <xercesc/util/NameIdPool.hpp>
+#include <xercesc/util/PlatformUtils.hpp>
+#include <xercesc/framework/XMLValidator.hpp>
+#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>
+
+
+XERCES_CPP_NAMESPACE_USE
+
+// ---------------------------------------------------------------------------
+//  Forward references
+// ---------------------------------------------------------------------------
+static void usage();
+
+
+
+// ---------------------------------------------------------------------------
+//  This is a simple class that lets us do easy (though not terribly efficient)
+//  trancoding of XMLCh data to local code page for display.
+// ---------------------------------------------------------------------------
+class StrX
+{
+public :
+    // -----------------------------------------------------------------------
+    //  Constructors and Destructor
+    // -----------------------------------------------------------------------
+    StrX(const XMLCh* const toTranscode)
+    {
+        // Call the private transcoding method
+        fLocalForm = XMLString::transcode(toTranscode);
+    }
+
+    ~StrX()
+    {
+        XMLString::release(&fLocalForm);
+    }
+
+
+    // -----------------------------------------------------------------------
+    //  Getter methods
+    // -----------------------------------------------------------------------
+    const char* localForm() const
+    {
+        return fLocalForm;
+    }
+
+
+private :
+    // -----------------------------------------------------------------------
+    //  Private data members
+    //
+    //  fLocalForm
+    //      This is the local code page form of the string.
+    // -----------------------------------------------------------------------
+    char*   fLocalForm;
+};
+
+inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump)
+{
+    target << toDump.localForm();
+    return target;
+}
+
+
+// ---------------------------------------------------------------------------
+//  Local helper methods
+// ---------------------------------------------------------------------------
+static void usage()
+{
+    XERCES_STD_QUALIFIER 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;
+}
+
+
+// ---------------------------------------------------------------------------
+//  Program entry point
+// ---------------------------------------------------------------------------
+int main(int argC, char* argV[])
+{
+    // Initialize the XML4C system
+    try
+    {
+         XMLPlatformUtils::Initialize();
+    }
+
+    catch (const XMLException& toCatch)
+    {
+         XERCES_STD_QUALIFIER cerr   << "Error during initialization! Message:\n"
+                << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl;
+         return 1;
+    }
+
+    // Check command line and extract arguments.
+    if (argC < 2)
+    {
+        usage();
+        XMLPlatformUtils::Terminate();
+        return 1;
+    }
+
+    // We only have one required parameter, which is the file to process
+    if ((argC != 2) || (*(argV[1]) == '-'))
+    {
+        usage();
+        XMLPlatformUtils::Terminate();
+        return 1;
+    }
+
+    const char*              xmlFile   = argV[1];
+    SAXParser::ValSchemes    valScheme = SAXParser::Val_Auto;
+
+    //
+    //  Create a DTD validator to be used for our validation work. Then create
+    //  a SAX parser object and pass it our validator. Then, according to what
+    //  we were told on the command line, set it to validate or not. He owns
+    //  the validator, so we have to allocate it.
+    //
+    int errorCount = 0;
+    DTDValidator* valToUse = new DTDValidator;
+    SAXParser* parser = new SAXParser(valToUse);
+    parser->setValidationScheme(valScheme);
+
+    //
+    //  Get the starting time and kick off the parse of the indicated
+    //  file. Catch any exceptions that might propogate out of it.
+    //
+    int errorCode = 0;
+    try
+    {
+        parser->parse(xmlFile);
+        errorCount = parser->getErrorCount();
+    }
+    catch (const OutOfMemoryException&)
+    {
+        XERCES_STD_QUALIFIER cerr << "OutOfMemoryException" << XERCES_STD_QUALIFIER endl;
+        errorCode = 5;
+    }
+    catch (const XMLException& e)
+    {
+        XERCES_STD_QUALIFIER cerr << "\nError during parsing: '" << xmlFile << "'\n"
+             << "Exception message is:  \n"
+             << StrX(e.getMessage()) << "\n" << XERCES_STD_QUALIFIER endl;
+        errorCode = 4;
+    }
+    if(errorCode) {
+        XMLPlatformUtils::Terminate();
+        return errorCode;
+    }
+
+    if (!errorCount) {
+        //
+        //  Now we will get an enumerator for the element pool from the validator
+        //  and enumerate the elements, printing them as we go. For each element
+        //  we get an enumerator for its attributes and print them also.
+        //
+        DTDGrammar* grammar = (DTDGrammar*) valToUse->getGrammar();
+        NameIdPoolEnumerator<DTDElementDecl> elemEnum = grammar->getElemEnumerator();
+        if (elemEnum.hasMoreElements())
+        {
+            XERCES_STD_QUALIFIER cout << "\nELEMENTS:\n----------------------------\n";
+            while(elemEnum.hasMoreElements())
+            {
+                const DTDElementDecl& curElem = elemEnum.nextElement();
+                XERCES_STD_QUALIFIER cout << "  Name: " << StrX(curElem.getFullName()) << "\n";
+
+                XERCES_STD_QUALIFIER 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";
+                    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())
+                             << ", Type: ";
+
+                        // Get the type and display it
+                        const XMLAttDef::AttTypes type = curAttDef.getType();
+                        switch(type)
+                        {
+                            case XMLAttDef::CData :
+                                XERCES_STD_QUALIFIER cout << "CDATA";
+                                break;
+
+                            case XMLAttDef::ID :
+                                XERCES_STD_QUALIFIER cout << "ID";
+                                break;
+
+                            case XMLAttDef::IDRef :
+                            case XMLAttDef::IDRefs :
+                                XERCES_STD_QUALIFIER cout << "IDREF(S)";
+                                break;
+
+                            case XMLAttDef::Entity :
+                            case XMLAttDef::Entities :
+                                XERCES_STD_QUALIFIER cout << "ENTITY(IES)";
+                                break;
+
+                            case XMLAttDef::NmToken :
+                            case XMLAttDef::NmTokens :
+                                XERCES_STD_QUALIFIER cout << "NMTOKEN(S)";
+                                break;
+
+                            case XMLAttDef::Notation :
+                                XERCES_STD_QUALIFIER cout << "NOTATION";
+                                break;
+
+                            case XMLAttDef::Enumeration :
+                                XERCES_STD_QUALIFIER cout << "ENUMERATION";
+                                break;
+                            default:
+                                break;
+                        }
+
+                        XERCES_STD_QUALIFIER cout << "\n";
+                    }
+                }
+                XERCES_STD_QUALIFIER cout << XERCES_STD_QUALIFIER endl;
+            }
+        }
+         else
+        {
+            XERCES_STD_QUALIFIER cout << "The validator has no elements to display\n" << XERCES_STD_QUALIFIER endl;
+        }
+    }
+    else
+        XERCES_STD_QUALIFIER cout << "\nErrors occurred, no output available\n" << XERCES_STD_QUALIFIER endl;
+
+    //
+    //  Delete the parser itself.  Must be done prior to calling Terminate, below.
+    //
+    delete parser;
+
+    // And call the termination method
+    XMLPlatformUtils::Terminate();
+
+    if (errorCount > 0)
+        return 4;
+    else
+        return 0;
+}
+
+

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/MemParse/MemParse.cpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/MemParse/MemParse.cpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/MemParse/MemParse.cpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,288 @@
+/*
+ * 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.
+ */
+
+
+/*
+ * $Id: MemParse.cpp 5336 2010-10-26 22:52:27Z brucedechant $
+ */
+
+
+/**
+ * This sample program illustrates how one can use a memory buffer as the
+ * input to parser. The memory buffer contains raw bytes representing XML
+ * statements.
+ *
+ * Look at the API documentation for 'MemBufInputSource' for more information
+ * on parameters to the constructor.
+ *
+ */
+
+
+// ---------------------------------------------------------------------------
+//  Includes
+// ---------------------------------------------------------------------------
+#include <xercesc/parsers/SAXParser.hpp>
+#include <xercesc/framework/MemBufInputSource.hpp>
+#include "MemParse.hpp"
+#include <xercesc/util/OutOfMemoryException.hpp>
+
+// ---------------------------------------------------------------------------
+//  Local const data
+//
+//  gXMLInMemBuf
+//      Defines the memory buffer contents here which parsed by the XML
+//      parser. This is the cheap way to do it, instead of reading it from
+//      somewhere. For this demo, its fine.
+//
+//      NOTE: If your encoding is not ascii you will need to change
+//            the MEMPARSE_ENCODING #define
+//
+//  gMemBufId
+//      A simple name to give as the system id for the memory buffer. This
+//      just for indentification purposes in case of errors. Its not a real
+//      system id (and the parser knows that.)
+// ---------------------------------------------------------------------------
+
+#ifndef MEMPARSE_ENCODING
+   #if defined(OS390)
+      #define MEMPARSE_ENCODING "ibm-1047-s390"
+   #elif defined(OS400)
+      #define MEMPARSE_ENCODING "ibm037"
+   #else
+      #define MEMPARSE_ENCODING "ascii"
+   #endif
+#endif /* ifndef MEMPARSE_ENCODING */
+
+static const char*  gXMLInMemBuf =
+"\
+<?xml version='1.0' encoding='" MEMPARSE_ENCODING "'?>\n\
+<!DOCTYPE company [\n\
+<!ELEMENT company     (product,category,developedAt)>\n\
+<!ELEMENT product     (#PCDATA)>\n\
+<!ELEMENT category    (#PCDATA)>\n\
+<!ATTLIST category idea CDATA #IMPLIED>\n\
+<!ELEMENT developedAt (#PCDATA)>\n\
+]>\n\n\
+<company>\n\
+    <product>XML4C</product>\n\
+    <category idea='great'>XML Parsing Tools</category>\n\
+    <developedAt>\n\
+      IBM Center for Java Technology, Silicon Valley, Cupertino, CA\n\
+    </developedAt>\n\
+</company>\
+";
+
+static const char*  gMemBufId = "prodInfo";
+
+
+
+// ---------------------------------------------------------------------------
+//  Local helper methods
+// ---------------------------------------------------------------------------
+void usage()
+{
+    XERCES_STD_QUALIFIER 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"
+            "elements and attributes found.\n\n"
+            "Options:\n"
+            "    -v=xxx      Validation scheme [always | never | auto*].\n"
+            "    -n          Enable namespace processing. Defaults to off.\n"
+            "    -s          Enable schema processing. Defaults to off.\n"
+            "    -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;
+}
+
+
+// ---------------------------------------------------------------------------
+//  Program entry point
+// ---------------------------------------------------------------------------
+int main(int argC, char* argV[])
+{
+    // Initialize the XML4C2 system
+    try
+    {
+         XMLPlatformUtils::Initialize();
+    }
+    catch (const XMLException& toCatch)
+    {
+         XERCES_STD_QUALIFIER cerr << "Error during initialization! Message:\n"
+              << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl;
+         return 1;
+    }
+
+    SAXParser::ValSchemes    valScheme = SAXParser::Val_Auto;
+    bool doNamespaces       = false;
+    bool doSchema           = false;
+    bool schemaFullChecking = false;
+
+    int argInd;
+    for (argInd = 1; argInd < argC; argInd++)
+    {
+        // Break out on first parm not starting with a dash
+        if (argV[argInd][0] != '-')
+        {
+            usage();
+            XMLPlatformUtils::Terminate();
+            return 1;
+        }
+
+        // Watch for special case help request
+        if (!strcmp(argV[argInd], "-?"))
+        {
+            usage();
+            XMLPlatformUtils::Terminate();
+            return 1;
+        }
+         else if (!strncmp(argV[argInd], "-v=", 3)
+              ||  !strncmp(argV[argInd], "-V=", 3))
+        {
+            const char* const parm = &argV[argInd][3];
+
+            if (!strcmp(parm, "never"))
+                valScheme = SAXParser::Val_Never;
+            else if (!strcmp(parm, "auto"))
+                valScheme = SAXParser::Val_Auto;
+            else if (!strcmp(parm, "always"))
+                valScheme = SAXParser::Val_Always;
+            else
+            {
+                XERCES_STD_QUALIFIER cerr << "Unknown -v= value: " << parm << XERCES_STD_QUALIFIER endl;
+                return 2;
+            }
+        }
+         else if (!strcmp(argV[argInd], "-n")
+              ||  !strcmp(argV[argInd], "-N"))
+        {
+            doNamespaces = true;
+        }
+         else if (!strcmp(argV[argInd], "-s")
+              ||  !strcmp(argV[argInd], "-S"))
+        {
+            doSchema = true;
+        }
+         else if (!strcmp(argV[argInd], "-f")
+              ||  !strcmp(argV[argInd], "-F"))
+        {
+            schemaFullChecking = true;
+        }
+         else
+        {
+            XERCES_STD_QUALIFIER cerr << "Unknown option '" << argV[argInd]
+                 << "', ignoring it\n" << XERCES_STD_QUALIFIER endl;
+        }
+    }
+
+    //
+    //  Create a SAX parser object. Then, according to what we were told on
+    //  the command line, set it to validate or not.
+    //
+    SAXParser* parser = new SAXParser;
+    parser->setValidationScheme(valScheme);
+    parser->setDoNamespaces(doNamespaces);
+    parser->setDoSchema(doSchema);
+    parser->setHandleMultipleImports (true);
+    parser->setValidationSchemaFullChecking(schemaFullChecking);
+
+    //
+    //  Create our SAX handler object and install it on the parser, as the
+    //  document and error handlers.
+    //
+    MemParseHandlers handler;
+    parser->setDocumentHandler(&handler);
+    parser->setErrorHandler(&handler);
+
+    //
+    //  Create MemBufferInputSource from the buffer containing the XML
+    //  statements.
+    //
+    //  NOTE: We are using strlen() here, since we know that the chars in
+    //  our hard coded buffer are single byte chars!!! The parameter wants
+    //  the number of BYTES, not chars, so when you create a memory buffer
+    //  give it the byte size (which just happens to be the same here.)
+    //
+    MemBufInputSource* memBufIS = new MemBufInputSource
+    (
+        (const XMLByte*)gXMLInMemBuf
+        , strlen(gXMLInMemBuf)
+        , gMemBufId
+        , false
+    );
+
+    //
+    //  Get the starting time and kick off the parse of the indicated
+    //  file. Catch any exceptions that might propogate out of it.
+    //
+    unsigned long duration;
+    int errorCount = 0;
+    int errorCode = 0;
+    try
+    {
+        const unsigned long startMillis = XMLPlatformUtils::getCurrentMillis();
+        parser->parse(*memBufIS);
+        const unsigned long endMillis = XMLPlatformUtils::getCurrentMillis();
+        duration = endMillis - startMillis;
+        errorCount = parser->getErrorCount();
+    }
+    catch (const OutOfMemoryException&)
+    {
+        XERCES_STD_QUALIFIER cerr << "OutOfMemoryException" << XERCES_STD_QUALIFIER endl;
+        errorCode = 5;
+    }
+    catch (const XMLException& e)
+    {
+        XERCES_STD_QUALIFIER cerr << "\nError during parsing memory stream:\n"
+             << "Exception message is:  \n"
+             << StrX(e.getMessage()) << "\n" << XERCES_STD_QUALIFIER endl;
+        errorCode = 4;
+    }
+    if(errorCode) {
+        XMLPlatformUtils::Terminate();
+        return errorCode;
+    }
+
+    // Print out the stats that we collected and time taken.
+    if (!errorCount) {
+        XERCES_STD_QUALIFIER cout << "\nFinished parsing the memory buffer containing the following "
+             << "XML statements:\n\n"
+             << gXMLInMemBuf
+             << "\n\n\n"
+             << "Parsing took " << duration << " ms ("
+             << handler.getElementCount() << " elements, "
+             << handler.getAttrCount() << " attributes, "
+             << handler.getSpaceCount() << " spaces, "
+             << handler.getCharacterCount() << " characters).\n" << XERCES_STD_QUALIFIER endl;
+    }
+
+    //
+    //  Delete the parser itself.  Must be done prior to calling Terminate, below.
+    //
+    delete parser;
+
+    delete memBufIS;
+
+    // And call the termination method
+    XMLPlatformUtils::Terminate();
+
+    if (errorCount > 0)
+        return 4;
+    else
+        return 0;
+}

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/MemParse/MemParse.hpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/MemParse/MemParse.hpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/MemParse/MemParse.hpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,85 @@
+/*
+ * 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.
+ */
+
+/*
+ * $Id: MemParse.hpp 5336 2010-10-26 22:52:27Z brucedechant $
+ */
+
+
+// ---------------------------------------------------------------------------
+//  Includes for all the program files to see
+// ---------------------------------------------------------------------------
+#include <string.h>
+#include <stdlib.h>
+#include <xercesc/util/PlatformUtils.hpp>
+#include "MemParseHandlers.hpp"
+
+#if defined(XERCES_NEW_IOSTREAMS)
+#include <iostream>
+#else
+#include <iostream.h>
+#endif
+
+
+
+
+// ---------------------------------------------------------------------------
+//  This is a simple class that lets us do easy (though not terribly efficient)
+//  trancoding of XMLCh data to local code page for display.
+// ---------------------------------------------------------------------------
+class StrX
+{
+public :
+    // -----------------------------------------------------------------------
+    //  Constructors and Destructor
+    // -----------------------------------------------------------------------
+    StrX(const XMLCh* const toTranscode)
+    {
+        // Call the private transcoding method
+        fLocalForm = XMLString::transcode(toTranscode);
+    }
+
+    ~StrX()
+    {
+        XMLString::release(&fLocalForm);
+    }
+
+
+    // -----------------------------------------------------------------------
+    //  Getter methods
+    // -----------------------------------------------------------------------
+    const char* localForm() const
+    {
+        return fLocalForm;
+    }
+
+
+private :
+    // -----------------------------------------------------------------------
+    //  Private data members
+    //
+    //  fLocalForm
+    //      This is the local code page form of the string.
+    // -----------------------------------------------------------------------
+    char*   fLocalForm;
+};
+
+inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump)
+{
+    target << toDump.localForm();
+    return target;
+}

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/MemParse/MemParseHandlers.cpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/MemParse/MemParseHandlers.cpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/MemParse/MemParseHandlers.cpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,110 @@
+/*
+ * 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.
+ */
+
+/*
+ * $Id: MemParseHandlers.cpp 5336 2010-10-26 22:52:27Z brucedechant $
+ */
+
+
+
+// ---------------------------------------------------------------------------
+//  Includes
+// ---------------------------------------------------------------------------
+#include "MemParse.hpp"
+#include <string.h>
+#include <xercesc/sax/AttributeList.hpp>
+#include <xercesc/sax/SAXParseException.hpp>
+#include <xercesc/sax/SAXException.hpp>
+
+
+
+// ---------------------------------------------------------------------------
+//  MemParseHandlers: Constructors and Destructor
+// ---------------------------------------------------------------------------
+MemParseHandlers::MemParseHandlers() :
+    fAttrCount(0)
+    , fCharacterCount(0)
+    , fElementCount(0)
+    , fSpaceCount(0)
+{
+}
+
+MemParseHandlers::~MemParseHandlers()
+{
+}
+
+
+// ---------------------------------------------------------------------------
+//  MemParseHandlers: Implementation of the SAX DocumentHandler interface
+// ---------------------------------------------------------------------------
+void MemParseHandlers::startElement(const   XMLCh* const    /* name */
+                                    ,       AttributeList&  attributes)
+{
+    fElementCount++;
+    fAttrCount += attributes.getLength();
+}
+
+void MemParseHandlers::characters(  const   XMLCh* const    /* chars */
+                                    , const XMLSize_t    length)
+{
+    fCharacterCount += length;
+}
+
+void MemParseHandlers::ignorableWhitespace( const   XMLCh* const /* chars */
+                                            , const XMLSize_t length)
+{
+    fSpaceCount += length;
+}
+
+void MemParseHandlers::resetDocument()
+{
+    fAttrCount = 0;
+    fCharacterCount = 0;
+    fElementCount = 0;
+    fSpaceCount = 0;
+}
+
+
+
+// ---------------------------------------------------------------------------
+//  MemParseHandlers: Overrides of the SAX ErrorHandler interface
+// ---------------------------------------------------------------------------
+void MemParseHandlers::error(const SAXParseException& e)
+{
+    XERCES_STD_QUALIFIER cerr << "\nError at (file " << StrX(e.getSystemId())
+		 << ", line " << e.getLineNumber()
+		 << ", char " << e.getColumnNumber()
+         << "): " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+}
+
+void MemParseHandlers::fatalError(const SAXParseException& e)
+{
+    XERCES_STD_QUALIFIER cerr << "\nFatal Error at (file " << StrX(e.getSystemId())
+		 << ", line " << e.getLineNumber()
+		 << ", char " << e.getColumnNumber()
+         << "): " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+}
+
+void MemParseHandlers::warning(const SAXParseException& e)
+{
+    XERCES_STD_QUALIFIER cerr << "\nWarning at (file " << StrX(e.getSystemId())
+		 << ", line " << e.getLineNumber()
+		 << ", char " << e.getColumnNumber()
+         << "): " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+}
+
+

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/MemParse/MemParseHandlers.hpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/MemParse/MemParseHandlers.hpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/MemParse/MemParseHandlers.hpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,102 @@
+/*
+ * 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.
+ */
+
+/*
+ * $Id: MemParseHandlers.hpp 5336 2010-10-26 22:52:27Z brucedechant $
+ */
+
+
+// ---------------------------------------------------------------------------
+//  Includes
+// ---------------------------------------------------------------------------
+#include <xercesc/sax/HandlerBase.hpp>
+
+XERCES_CPP_NAMESPACE_USE
+
+XERCES_CPP_NAMESPACE_BEGIN
+class AttributeList;
+XERCES_CPP_NAMESPACE_END
+
+
+class MemParseHandlers : public HandlerBase
+{
+public:
+    // -----------------------------------------------------------------------
+    //  Constructors and Destructor
+    // -----------------------------------------------------------------------
+    MemParseHandlers();
+    ~MemParseHandlers();
+
+
+    // -----------------------------------------------------------------------
+    //  Getter methods
+    // -----------------------------------------------------------------------
+    XMLSize_t getElementCount()
+    {
+        return fElementCount;
+    }
+
+    XMLSize_t getAttrCount()
+    {
+        return fAttrCount;
+    }
+
+    XMLSize_t getCharacterCount()
+    {
+        return fCharacterCount;
+    }
+
+    XMLSize_t getSpaceCount()
+    {
+        return fSpaceCount;
+    }
+
+
+    // -----------------------------------------------------------------------
+    //  Handlers for the SAX DocumentHandler interface
+    // -----------------------------------------------------------------------
+    void startElement(const XMLCh* const name, AttributeList& attributes);
+    void characters(const XMLCh* const chars, const XMLSize_t length);
+    void ignorableWhitespace(const XMLCh* const chars, const XMLSize_t length);
+    void resetDocument();
+
+
+    // -----------------------------------------------------------------------
+    //  Handlers for the SAX ErrorHandler interface
+    // -----------------------------------------------------------------------
+    void warning(const SAXParseException& exc);
+    void error(const SAXParseException& exc);
+    void fatalError(const SAXParseException& exc);
+
+
+
+private:
+    // -----------------------------------------------------------------------
+    //  Private data members
+    //
+    //  fAttrCount
+    //  fCharacterCount
+    //  fElementCount
+    //  fSpaceCount
+    //      These are just counters that are run upwards based on the input
+    //      from the document handlers.
+    // -----------------------------------------------------------------------
+    XMLSize_t       fAttrCount;
+    XMLSize_t       fCharacterCount;
+    XMLSize_t       fElementCount;
+    XMLSize_t       fSpaceCount;
+};

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/PParse/PParse.cpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/PParse/PParse.cpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/PParse/PParse.cpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,294 @@
+/*
+ * 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.
+ */
+
+/*
+ * $Id: PParse.cpp 5336 2010-10-26 22:52:27Z brucedechant $
+ */
+
+
+// ---------------------------------------------------------------------------
+//  This sample program demonstrates the progressive parse capabilities of
+//  the parser system. It allows you to do a scanFirst() call followed by
+//  a loop which calls scanNext(). You can drop out when you've found what
+//  ever it is you want. In our little test, our event handler looks for
+//  16 new elements then sets a flag to indicate its found what it wants.
+//  At that point, our progressive parse loop below exits.
+//
+//  The parameters are:
+//
+//      [-?]            - Show usage and exit
+//      [-v=xxx]        - Validation scheme [always | never | auto*]
+//      [-n]            - Enable namespace processing
+//      [-s]            - Enable schema processing
+//      [-f]            - Enable full schema constraint checking
+//      filename        - The path to the XML file to parse
+//
+//  * = Default if not provided explicitly
+//  These are non-case sensitive
+// ---------------------------------------------------------------------------
+
+
+// ---------------------------------------------------------------------------
+//  Includes
+// ---------------------------------------------------------------------------
+#include <xercesc/util/PlatformUtils.hpp>
+#include <xercesc/framework/XMLPScanToken.hpp>
+#include <xercesc/parsers/SAXParser.hpp>
+#include "PParse.hpp"
+#include <xercesc/util/OutOfMemoryException.hpp>
+
+// ---------------------------------------------------------------------------
+//  Local data
+//
+//  xmlFile
+//      The path to the file to parser. Set via command line.
+//
+//  doNamespaces
+//      Indicates whether namespace processing should be done.
+//
+//  doSchema
+//      Indicates whether schema processing should be done.
+//
+//  schemaFullChecking
+//      Indicates whether full schema constraint checking should be done.
+//
+//  valScheme
+//      Indicates what validation scheme to use. It defaults to 'auto', but
+//      can be set via the -v= command.
+// ---------------------------------------------------------------------------
+static char*	 xmlFile         = 0;
+static bool     doNamespaces       = false;
+static bool     doSchema           = false;
+static bool     schemaFullChecking = false;
+static SAXParser::ValSchemes    valScheme       = SAXParser::Val_Auto;
+
+
+
+// ---------------------------------------------------------------------------
+//  Local helper methods
+// ---------------------------------------------------------------------------
+static void usage()
+{
+    XERCES_STD_QUALIFIER 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"
+            "a loop which calls scanNext(). You can drop out when you've found what\n"
+            "ever it is you want. In our little test, our event handler looks for\n"
+            "16 new elements then sets a flag to indicate its found what it wants.\n"
+            "At that point, our progressive parse loop exits.\n\n"
+            "Options:\n"
+            "      -v=xxx        - Validation scheme [always | never | auto*].\n"
+            "      -n            - Enable namespace processing [default is off].\n"
+            "      -s            - Enable schema processing [default is off].\n"
+            "      -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;
+}
+
+
+
+// ---------------------------------------------------------------------------
+//  Program entry point
+// ---------------------------------------------------------------------------
+int main(int argC, char* argV[])
+{
+    // Initialize the XML4C system
+    try
+    {
+         XMLPlatformUtils::Initialize();
+    }
+
+    catch (const XMLException& toCatch)
+    {
+         XERCES_STD_QUALIFIER cerr << "Error during initialization! :\n"
+              << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl;
+         return 1;
+    }
+
+    // Check command line and extract arguments.
+    if (argC < 2)
+    {
+        usage();
+        XMLPlatformUtils::Terminate();
+        return 1;
+    }
+
+    // See if non validating dom parser configuration is requested.
+    int parmInd;
+    for (parmInd = 1; parmInd < argC; parmInd++)
+    {
+        // Break out on first parm not starting with a dash
+        if (argV[parmInd][0] != '-')
+            break;
+
+        // Watch for special case help request
+        if (!strcmp(argV[parmInd], "-?"))
+        {
+            usage();
+            XMLPlatformUtils::Terminate();
+            return 2;
+        }
+         else if (!strncmp(argV[parmInd], "-v=", 3)
+              ||  !strncmp(argV[parmInd], "-V=", 3))
+        {
+            const char* const parm = &argV[parmInd][3];
+
+            if (!strcmp(parm, "never"))
+                valScheme = SAXParser::Val_Never;
+            else if (!strcmp(parm, "auto"))
+                valScheme = SAXParser::Val_Auto;
+            else if (!strcmp(parm, "always"))
+                valScheme = SAXParser::Val_Always;
+            else
+            {
+                XERCES_STD_QUALIFIER cerr << "Unknown -v= value: " << parm << XERCES_STD_QUALIFIER endl;
+                XMLPlatformUtils::Terminate();
+                return 2;
+            }
+        }
+         else if (!strcmp(argV[parmInd], "-n")
+              ||  !strcmp(argV[parmInd], "-N"))
+        {
+            doNamespaces = true;
+        }
+         else if (!strcmp(argV[parmInd], "-s")
+              ||  !strcmp(argV[parmInd], "-S"))
+        {
+            doSchema = true;
+        }
+         else if (!strcmp(argV[parmInd], "-f")
+              ||  !strcmp(argV[parmInd], "-F"))
+        {
+            schemaFullChecking = true;
+        }
+        else
+        {
+            XERCES_STD_QUALIFIER cerr << "Unknown option '" << argV[parmInd]
+                << "', ignoring it\n" << XERCES_STD_QUALIFIER endl;
+        }
+    }
+
+    //
+    //  And now we have to have only one parameter left and it must be
+    //  the file name.
+    //
+    if (parmInd + 1 != argC)
+    {
+        usage();
+        XMLPlatformUtils::Terminate();
+        return 1;
+    }
+    xmlFile = argV[parmInd];
+    int errorCount = 0;
+
+    //
+    //  Create a SAX parser object to use and create our SAX event handlers
+    //  and plug them in.
+    //
+    SAXParser* parser = new SAXParser;
+    PParseHandlers handler;
+    parser->setDocumentHandler(&handler);
+    parser->setErrorHandler(&handler);
+    parser->setValidationScheme(valScheme);
+    parser->setDoNamespaces(doNamespaces);
+    parser->setDoSchema(doSchema);
+    parser->setHandleMultipleImports (true);
+    parser->setValidationSchemaFullChecking(schemaFullChecking);
+
+    //
+    //  Ok, lets do the progressive parse loop. On each time around the
+    //  loop, we look and see if the handler has found what its looking
+    //  for. When it does, we fall out then.
+    //
+    unsigned long duration;
+    int errorCode = 0;
+    try
+    {
+        // Create a progressive scan token
+        XMLPScanToken token;
+
+        const unsigned long startMillis = XMLPlatformUtils::getCurrentMillis();
+        if (!parser->parseFirst(xmlFile, token))
+        {
+            XERCES_STD_QUALIFIER cerr << "scanFirst() failed\n" << XERCES_STD_QUALIFIER endl;
+            XMLPlatformUtils::Terminate();
+            return 1;
+        }
+
+        //
+        //  We started ok, so lets call scanNext() until we find what we want
+        //  or hit the end.
+        //
+        bool gotMore = true;
+        while (gotMore && !parser->getErrorCount())
+            gotMore = parser->parseNext(token);
+
+        const unsigned long endMillis = XMLPlatformUtils::getCurrentMillis();
+        duration = endMillis - startMillis;
+
+        errorCount = parser->getErrorCount();
+        //
+        //  Reset the parser-> In this simple progrma, since we just exit
+        //  now, its not technically required. But, in programs which
+        //  would remain open, you should reset after a progressive parse
+        //  in case you broke out before the end of the file. This insures
+        //  that all opened files, sockets, etc... are closed.
+        //
+        parser->parseReset(token);
+    }
+    catch (const OutOfMemoryException&)
+    {
+        XERCES_STD_QUALIFIER cerr << "OutOfMemoryException" << XERCES_STD_QUALIFIER endl;
+        errorCode = 5;
+    }
+    catch (const XMLException& toCatch)
+    {
+        XERCES_STD_QUALIFIER cerr << "\nAn error occurred: '" << xmlFile << "'\n"
+             << "Exception message is: \n"
+             << StrX(toCatch.getMessage())
+             << "\n" << XERCES_STD_QUALIFIER endl;
+        errorCode = 4;
+    }
+
+    if(errorCode) {
+        XMLPlatformUtils::Terminate();
+        return errorCode;
+    }
+
+    if (!errorCount) {
+        XERCES_STD_QUALIFIER cout << xmlFile << ": " << duration << " ms ("
+            << handler.getElementCount() << " elems, "
+            << handler.getAttrCount() << " attrs, "
+            << handler.getSpaceCount() << " spaces, "
+            << handler.getCharacterCount() << " chars)" << XERCES_STD_QUALIFIER endl;
+    }
+
+    //
+    //  Delete the parser itself.  Must be done prior to calling Terminate, below.
+    //
+    delete parser;
+
+    // And call the termination method
+    XMLPlatformUtils::Terminate();
+
+    if (errorCount > 0)
+        return 4;
+    else
+        return 0;
+}

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/PParse/PParse.hpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/PParse/PParse.hpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/PParse/PParse.hpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,81 @@
+/*
+ * 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.
+ */
+
+/*
+ * $Id: PParse.hpp 5336 2010-10-26 22:52:27Z brucedechant $
+ */
+
+// ---------------------------------------------------------------------------
+//  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 "PParseHandlers.hpp"
+
+
+
+// ---------------------------------------------------------------------------
+//  This is a simple class that lets us do easy (though not terribly efficient)
+//  trancoding of XMLCh data to local code page for display.
+// ---------------------------------------------------------------------------
+class StrX
+{
+public :
+    // -----------------------------------------------------------------------
+    //  Constructors and Destructor
+    // -----------------------------------------------------------------------
+    StrX(const XMLCh* const toTranscode)
+    {
+        // Call the private transcoding method
+        fLocalForm = XMLString::transcode(toTranscode);
+    }
+
+    ~StrX()
+    {
+        XMLString::release(&fLocalForm);
+    }
+
+
+    // -----------------------------------------------------------------------
+    //  Getter methods
+    // -----------------------------------------------------------------------
+    const char* localForm() const
+    {
+        return fLocalForm;
+    }
+
+
+private :
+    // -----------------------------------------------------------------------
+    //  Private data members
+    //
+    //  fLocalForm
+    //      This is the local code page form of the string.
+    // -----------------------------------------------------------------------
+    char*   fLocalForm;
+};
+
+inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump)
+{
+    target << toDump.localForm();
+    return target;
+}

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/PParse/PParseHandlers.cpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/PParse/PParseHandlers.cpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/PParse/PParseHandlers.cpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,107 @@
+/*
+ * 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.
+ */
+
+/*
+ * $Id: PParseHandlers.cpp 5336 2010-10-26 22:52:27Z brucedechant $
+ */
+
+
+
+// ---------------------------------------------------------------------------
+//  Includes
+// ---------------------------------------------------------------------------
+#include <xercesc/util/XMLUniDefs.hpp>
+#include <xercesc/util/XMLUni.hpp>
+#include <xercesc/sax/AttributeList.hpp>
+#include "PParse.hpp"
+
+
+// ---------------------------------------------------------------------------
+//  PParseHandlers: Constructors and Destructor
+// ---------------------------------------------------------------------------
+PParseHandlers::PParseHandlers() :
+
+    fAttrCount(0)
+    , fCharacterCount(0)
+    , fElementCount(0)
+    , fSpaceCount(0) 
+{
+}
+
+PParseHandlers::~PParseHandlers()
+{
+}
+
+
+// ---------------------------------------------------------------------------
+//  PParseHandlers: Overrides of the SAX DocumentHandler interface
+// ---------------------------------------------------------------------------
+void PParseHandlers::startElement(const   XMLCh* const    /* name */
+                                    ,       AttributeList&  attributes)
+{
+    fElementCount++;
+    fAttrCount += attributes.getLength();
+}
+
+void PParseHandlers::characters(  const   XMLCh* const    /* chars */ 
+								    , const XMLSize_t    length)
+{
+    fCharacterCount += length;
+}
+
+void PParseHandlers::ignorableWhitespace( const   XMLCh* const /* chars */
+										    , const XMLSize_t length)
+{
+    fSpaceCount += length;
+}
+
+void PParseHandlers::resetDocument()
+{
+    fAttrCount = 0;
+    fCharacterCount = 0;
+    fElementCount = 0;
+    fSpaceCount = 0;
+}
+
+
+// ---------------------------------------------------------------------------
+//  PParseHandlers: Overrides of the SAX ErrorHandler interface
+// ---------------------------------------------------------------------------
+void PParseHandlers::error(const SAXParseException& e)
+{
+    XERCES_STD_QUALIFIER cerr << "\nError at file " << StrX(e.getSystemId())
+		 << ", line " << e.getLineNumber()
+		 << ", char " << e.getColumnNumber()
+         << "\n  Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+}
+
+void PParseHandlers::fatalError(const SAXParseException& e)
+{
+    XERCES_STD_QUALIFIER cerr << "\nFatal Error at file " << StrX(e.getSystemId())
+		 << ", line " << e.getLineNumber()
+		 << ", char " << e.getColumnNumber()
+         << "\n  Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+}
+
+void PParseHandlers::warning(const SAXParseException& e)
+{
+    XERCES_STD_QUALIFIER cerr << "\nWarning at file " << StrX(e.getSystemId())
+		 << ", line " << e.getLineNumber()
+		 << ", char " << e.getColumnNumber()
+         << "\n  Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+}
+

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/PParse/PParseHandlers.hpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/PParse/PParseHandlers.hpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/PParse/PParseHandlers.hpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,103 @@
+/*
+ * 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.
+ */
+
+/*
+ * $Id: PParseHandlers.hpp 5336 2010-10-26 22:52:27Z brucedechant $
+ */
+
+
+#include    <xercesc/sax/HandlerBase.hpp>
+
+XERCES_CPP_NAMESPACE_USE
+
+class PParseHandlers : public HandlerBase
+{
+public :
+    // -----------------------------------------------------------------------
+    //  Constructors
+    // -----------------------------------------------------------------------
+    PParseHandlers();
+    ~PParseHandlers();
+
+    // -----------------------------------------------------------------------
+    //  Getter methods
+    // -----------------------------------------------------------------------
+    XMLSize_t getElementCount() const
+    {
+        return fElementCount;
+    }
+
+    XMLSize_t getAttrCount() const
+    {
+        return fAttrCount;
+    }
+
+    XMLSize_t getCharacterCount() const
+    {
+        return fCharacterCount;
+    }
+
+    bool getSawErrors() const
+    {
+        return fSawErrors;
+    }
+
+    XMLSize_t getSpaceCount() const
+    {
+        return fSpaceCount;
+    }
+
+
+    // -----------------------------------------------------------------------
+    //  Handlers for the SAX DocumentHandler interface
+    // -----------------------------------------------------------------------
+    void startElement(const XMLCh* const name, AttributeList& attributes);
+    void characters(const XMLCh* const chars, const XMLSize_t length);
+    void ignorableWhitespace(const XMLCh* const chars, const XMLSize_t length);
+    void resetDocument();
+
+
+    // -----------------------------------------------------------------------
+    //  Implementations of the SAX ErrorHandler interface
+    // -----------------------------------------------------------------------
+    void warning(const SAXParseException& exc);
+    void error(const SAXParseException& exc);
+    void fatalError(const SAXParseException& exc);
+
+
+    private:
+    // -----------------------------------------------------------------------
+    //  Private data members
+    //
+    //  fAttrCount
+    //  fCharacterCount
+    //  fElementCount
+    //  fSpaceCount
+    //      These are just counters that are run upwards based on the input
+    //      from the document handlers.
+    //
+    //  fSawErrors
+    //      This is set by the error handlers, and is queryable later to
+    //      see if any errors occured.
+    // -----------------------------------------------------------------------
+    XMLSize_t       fAttrCount;
+    XMLSize_t       fCharacterCount;
+    XMLSize_t       fElementCount;
+    XMLSize_t       fSpaceCount;
+    bool            fSawErrors;
+};
+

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/PSVIWriter/PSVIWriter.cpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/PSVIWriter/PSVIWriter.cpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/PSVIWriter/PSVIWriter.cpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,347 @@
+/*
+ * 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.
+ */
+
+//REVISIT
+/*
+ * $Id: PSVIWriter.cpp 5336 2010-10-26 22:52:27Z brucedechant $
+ */
+
+
+// ---------------------------------------------------------------------------
+//  Includes
+// ---------------------------------------------------------------------------
+#include "PSVIWriter.hpp"
+#include <xercesc/framework/StdOutFormatTarget.hpp>
+#include <xercesc/framework/LocalFileFormatTarget.hpp>
+#include <xercesc/util/PlatformUtils.hpp>
+#include <xercesc/util/TransService.hpp>
+#include <xercesc/util/XMLString.hpp>
+#include <xercesc/parsers/SAX2XMLReaderImpl.hpp>
+#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"
+			"    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"
+			"Options:\n"
+			"    -f          Enable full schema constraint checking processing. Defaults to off.\n"
+			"    -o=xxx      Output PSVI to file xxx (default is stdout)\n"
+			"    -e=xxx      Output errors to file xxx (default is stdout)\n"
+			"    -u=xxx      Handle unrepresentable chars [fail | rep | ref*].\n"
+			"    -x=XXX      Use a particular encoding for output (UTF8*).\n"
+            "    -l          Indicate the input file is a List File that has a list of xml files.\n"
+            "                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;
+}
+
+
+// ---------------------------------------------------------------------------
+//  Program entry point
+// ---------------------------------------------------------------------------
+int main(int argC, char* argV[])
+{
+
+    // Check command line and extract arguments.
+    if (argC < 2)
+    {
+        usage();
+        return 1;
+    }
+
+    static const char* encodingName		= "UTF8";
+    static XMLFormatter::UnRepFlags unRepFlags = XMLFormatter::UnRep_CharRef;
+    const char*						xmlFile				= 0;
+    bool							doList				= false; //REVISIT
+    bool							schemaFullChecking	= false;
+    bool							errorOccurred		= false;
+    const char*						psviOut				= 0;
+    const char*						errorOut			= 0;
+    XMLFormatTarget* 				psviTarget 			= 0;
+    XMLFormatTarget* 				errorTarget 		= 0;
+    XMLFormatter* 					psviFormatter 		= 0;
+    XMLFormatter* 					errorFormatter 		= 0;
+    char							fileName[80]		="";
+
+
+    int argInd;
+    for (argInd = 1; argInd < argC; argInd++)
+    {
+        // Break out on first parm not starting with a dash
+        if (argV[argInd][0] != '-')
+            break;
+
+        // Watch for special case help request
+        if (!strcmp(argV[argInd], "-?"))
+        {
+            usage();
+            return 2;
+        }
+         else if (!strcmp(argV[argInd], "-l")
+              ||  !strcmp(argV[argInd], "-L"))
+        {
+            doList = true;
+        }
+         else if (!strcmp(argV[argInd], "-f")
+              ||  !strcmp(argV[argInd], "-F"))
+        {
+            schemaFullChecking = true;
+        }
+         else if (!strncmp(argV[argInd], "-o=", 3)
+              ||  !strncmp(argV[argInd], "-O=", 3))
+        {
+            psviOut = &argV[argInd][3];
+        }
+         else if (!strncmp(argV[argInd], "-e=", 3)
+              ||  !strncmp(argV[argInd], "-E=", 3))
+        {
+            errorOut = &argV[argInd][3];
+        }
+         else if (!strncmp(argV[argInd], "-x=", 3)
+              ||  !strncmp(argV[argInd], "-X=", 3))
+        {
+            // Get out the encoding name
+            encodingName = &argV[argInd][3];
+        }
+         else if (!strncmp(argV[argInd], "-u=", 3)
+              ||  !strncmp(argV[argInd], "-U=", 3))
+        {
+            const char* const parm = &argV[argInd][3];
+
+            if (!strcmp(parm, "fail"))
+                unRepFlags = XMLFormatter::UnRep_Fail;
+            else if (!strcmp(parm, "rep"))
+                unRepFlags = XMLFormatter::UnRep_Replace;
+            else if (!strcmp(parm, "ref"))
+                unRepFlags = XMLFormatter::UnRep_CharRef;
+            else
+            {
+                XERCES_STD_QUALIFIER cerr << "Unknown -u= value: " << parm << XERCES_STD_QUALIFIER endl;
+                XMLPlatformUtils::Terminate();
+                return 2;
+            }
+        }
+        else
+        {
+            XERCES_STD_QUALIFIER cerr << "Unknown option '" << argV[argInd]
+                << "', ignoring it\n" << XERCES_STD_QUALIFIER endl;
+        }
+    }
+
+    //
+    //  There should be only one and only one parameter left, and that
+    //  should be the file name.
+    //
+    if (argInd != argC - 1)
+    {
+        usage();
+        return 1;
+    }
+
+    // Initialize the XML4C2 system
+    try
+    {
+        XMLPlatformUtils::Initialize();
+    } catch (const XMLException& toCatch) {
+        XERCES_STD_QUALIFIER cerr << "Error during initialization! Message:\n"
+            << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl;
+        return 1;
+    }
+
+    //
+    //  Create a SAX parser object, then set it to validate or not.
+    //
+    SAX2XMLReaderImpl* parser = new SAX2XMLReaderImpl();
+    parser->setFeature(XMLUni::fgSAX2CoreNameSpaces, true);
+    parser->setFeature(XMLUni::fgXercesSchema, true);
+    parser->setFeature(XMLUni::fgXercesHandleMultipleImports, true);
+    parser->setFeature(XMLUni::fgXercesSchemaFullChecking, schemaFullChecking);
+    parser->setFeature(XMLUni::fgSAX2CoreNameSpacePrefixes, false);
+    parser->setFeature(XMLUni::fgSAX2CoreValidation, true);
+    parser->setFeature(XMLUni::fgXercesDynamic, true);
+
+	//
+	//	Based on commandline arguments, create XMLFormatters for PSVI output and errors
+	//
+	if (!doList) {
+	    if (psviOut==0) {
+	    	psviTarget = new StdOutFormatTarget();
+	    } else {
+	    	psviTarget = new LocalFileFormatTarget(psviOut);
+	    }
+		psviFormatter = new XMLFormatter(encodingName, psviTarget, XMLFormatter::NoEscapes, unRepFlags);
+    }
+
+    if (errorOut==0) {
+    	errorTarget = new StdOutFormatTarget();
+    } else {
+    	errorTarget = new LocalFileFormatTarget(errorOut);
+    }
+	errorFormatter = new XMLFormatter(encodingName, errorTarget, XMLFormatter::NoEscapes, unRepFlags);
+
+  	//
+    //  Create our SAX handler object and install it as the handlers
+    //
+
+   	PSVIWriterHandlers* handler;
+   	if (doList)
+   		handler = new PSVIWriterHandlers(0, errorFormatter);
+   	else
+   		handler = new PSVIWriterHandlers(psviFormatter, errorFormatter);
+
+    PSVIAdvancedHandler* advancedHandler = new PSVIAdvancedHandler(handler);
+    parser->installAdvDocHandler(advancedHandler);
+
+	parser->setPSVIHandler(handler);
+    parser->setContentHandler(handler);
+    parser->setLexicalHandler(handler);
+	parser->setXMLEntityResolver(handler);
+    parser->setErrorHandler(handler);
+
+    //
+    //  Get the starting time and kick off the parse of the indicated
+    //  file. Catch any exceptions that might propogate out of it.
+    //
+    unsigned long duration;
+
+    bool more = true;
+    XERCES_STD_QUALIFIER 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;
+        return 2;
+    }
+
+    while (more) //REVISIT
+    {
+        char fURI[1000];
+        //initialize the array to zeros
+        memset(fURI,0,sizeof(fURI));
+
+        if (doList) {
+            if (! fin.eof() ) {
+                fin.getline (fURI, sizeof(fURI));
+                if (!*fURI)
+                    continue;
+                else {
+                    xmlFile =fURI;
+                    XMLString::trim((char*)xmlFile);
+                    XERCES_STD_QUALIFIER cerr << "==Parsing== \"" << xmlFile << "\"" << XERCES_STD_QUALIFIER endl;
+                }
+
+				if (psviOut==0) {
+					if (psviTarget==0 && psviFormatter==0) {
+			    		psviTarget = new StdOutFormatTarget();
+						psviFormatter = new XMLFormatter(encodingName, psviTarget, XMLFormatter::NoEscapes, unRepFlags);
+						handler->resetPSVIFormatter(psviFormatter);
+			    	}
+			    } else {
+					strcpy(fileName, psviOut);
+					if (strrchr(xmlFile, '\\')>strrchr(xmlFile, '/')) {
+						strcat(fileName, strrchr(xmlFile, '\\'));
+					} else {
+						strcat(fileName, strrchr(xmlFile, '/'));
+					}
+	                if (psviFormatter)
+	                	delete psviFormatter;
+	                if (psviTarget)
+	                	delete psviTarget;
+			    	psviTarget = new LocalFileFormatTarget(fileName);
+					psviFormatter = new XMLFormatter(encodingName, psviTarget, XMLFormatter::NoEscapes, unRepFlags);
+					handler->resetPSVIFormatter(psviFormatter);
+			    }
+            }
+            else
+                break;
+        }
+        else {
+            xmlFile = argV[argInd];
+            more = false; //REVISIT
+        }
+
+        //reset error count first
+        handler->resetErrors();
+
+        try
+        {
+            const unsigned long startMillis = XMLPlatformUtils::getCurrentMillis();
+            parser->parse(xmlFile);
+            const unsigned long endMillis = XMLPlatformUtils::getCurrentMillis();
+            duration = endMillis - startMillis;
+        }
+        catch (const OutOfMemoryException&)
+        {
+            XERCES_STD_QUALIFIER cerr << "OutOfMemoryException" << XERCES_STD_QUALIFIER endl;
+            errorOccurred = true;
+            continue;
+        }
+        catch (const XMLException& e)
+        {
+            XERCES_STD_QUALIFIER cerr << "\nError during parsing: '" << xmlFile << "'\n"
+                << "Exception message is:  \n"
+                << StrX(e.getMessage()) << "\n" << XERCES_STD_QUALIFIER endl;
+            errorOccurred = true;
+            continue;
+        }
+
+        catch (...)
+        {
+            XERCES_STD_QUALIFIER cerr << "\nUnexpected exception during parsing: '" << xmlFile << "'\n" << XERCES_STD_QUALIFIER endl;;
+            errorOccurred = true;
+            continue;
+        }
+    }
+
+    if (doList) //REVISIT
+        fin.close();
+
+    //
+    //  Delete the parser itself.  Must be done prior to calling Terminate, below.
+    //
+    delete parser;
+    delete advancedHandler;
+    delete handler;
+    delete psviFormatter;
+    delete errorFormatter;
+    delete psviTarget;
+    delete errorTarget;
+
+    // And call the termination method
+    XMLPlatformUtils::Terminate();
+
+    if (errorOccurred)
+        return 4;
+    else
+        return 0;
+
+}

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/PSVIWriter/PSVIWriter.hpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/PSVIWriter/PSVIWriter.hpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/PSVIWriter/PSVIWriter.hpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,85 @@
+/*
+ * 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.
+ */
+
+
+#if !defined(PSVIWRITER_HPP)
+#define PSVIWRITER_HPP
+
+// ---------------------------------------------------------------------------
+//  Includes for all the program files to see
+// ---------------------------------------------------------------------------
+
+#include "PSVIWriterHandlers.hpp"
+#include <stdlib.h>
+#include <string.h>
+#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
+
+
+// ---------------------------------------------------------------------------
+//  This is a simple class that lets us do easy (though not terribly efficient)
+//  trancoding of XMLCh data to local code page for display.
+// ---------------------------------------------------------------------------
+class StrX
+{
+public :
+    // -----------------------------------------------------------------------
+    //  Constructors and Destructor
+    // -----------------------------------------------------------------------
+    StrX(const XMLCh* const toTranscode)
+    {
+        // Call the private transcoding method
+        fLocalForm = XMLString::transcode(toTranscode);
+    }
+
+    ~StrX()
+    {
+        XMLString::release(&fLocalForm);
+    }
+
+    // -----------------------------------------------------------------------
+    //  Getter methods
+    // -----------------------------------------------------------------------
+    const char* localForm() const
+    {
+        return fLocalForm;
+    }
+
+private :
+    // -----------------------------------------------------------------------
+    //  Private data members
+    //
+    //  fLocalForm
+    //      This is the local code page form of the string.
+    // -----------------------------------------------------------------------
+    char*   fLocalForm;
+};
+
+inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump)
+{
+    target << toDump.localForm();
+    return target;
+}
+
+#endif

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/PSVIWriter/PSVIWriterHandlers.cpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/PSVIWriter/PSVIWriterHandlers.cpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/PSVIWriter/PSVIWriterHandlers.cpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,1956 @@
+/*
+ * 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.
+ */
+
+// ---------------------------------------------------------------------------
+//  Includes
+// ---------------------------------------------------------------------------
+#include "PSVIWriterHandlers.hpp"
+#include <xercesc/util/PSVIUni.hpp>
+#include <xercesc/util/XMLUni.hpp>
+#include <xercesc/util/XMLUniDefs.hpp>
+#include <xercesc/util/XMLString.hpp>
+#include <xercesc/sax/SAXParseException.hpp>
+#include <xercesc/sax/SAXException.hpp>
+#include <xercesc/dom/DOMAttr.hpp>
+#include <xercesc/dom/DOMDocument.hpp>
+#include <xercesc/dom/DOMNode.hpp>
+#include <xercesc/dom/DOMNodeList.hpp>
+#include <xercesc/dom/DOMTypeInfo.hpp>
+#include <xercesc/dom/DOMImplementationRegistry.hpp>
+#include <xercesc/dom/DOMImplementation.hpp>
+#include <xercesc/framework/psvi/XSValue.hpp>
+
+#include <string.h>
+#include <stdio.h>
+
+XERCES_CPP_NAMESPACE_USE
+
+static const XMLCh fgSpace[] = { chSpace, chNull };
+static const XMLCh fgRoot[] = { chLatin_r, chLatin_o, chLatin_o, chLatin_t, chNull };
+static const XMLCh fgChar[] = { chSpace, chLatin_C, chLatin_h, chLatin_a, chLatin_r, chNull }; // char
+static const XMLCh fgLine[] = { chSpace, chLatin_L, chLatin_i, chLatin_n, chLatin_e, chNull }; // line
+static const XMLCh fgError[] = { chLatin_E, chLatin_r, chLatin_r, chLatin_o, chLatin_r, chNull }; //Error
+static const XMLCh fgAtFile[] = { // at file
+	chSpace, chLatin_a, chLatin_t, chSpace, chLatin_f, chLatin_i, chLatin_l, chLatin_e, chNull
+};
+static const XMLCh fgFatalError[] = { //Fatal Error
+	chLatin_F, chLatin_a, chLatin_t, chLatin_a, chLatin_l, chSpace,
+	chLatin_E, chLatin_r, chLatin_r, chLatin_o, chLatin_r, chNull
+};
+static const XMLCh fgMessage[] = { //Message
+	chLatin_M, chLatin_e, chLatin_s, chLatin_s, chLatin_a, chLatin_g, chLatin_e, chNull
+};
+static const XMLCh fgXsiNil[] = { //xsi:nil
+	chLatin_x, chLatin_s, chLatin_i, chColon, chLatin_n, chLatin_i, chLatin_l, chNull
+};
+static const XMLCh fgWarning[] = { //Warning
+	chLatin_W, chLatin_a, chLatin_r, chLatin_n, chLatin_i, chLatin_n, chLatin_g, chNull
+};
+static const XMLCh gXmlnsColonXsi[] = { //xmlns:xsi
+	chLatin_x, chLatin_m, chLatin_l, chLatin_n, chLatin_s, chColon, chLatin_x, chLatin_s,
+	chLatin_i, chNull
+};
+static const XMLCh gXmlnsColonPsv[] = { //xmlns:psv
+	chLatin_x, chLatin_m, chLatin_l, chLatin_n, chLatin_s, chColon, chLatin_p, chLatin_s,
+	chLatin_v, chNull
+};
+
+static const XMLCh gRef[] = { chLatin_r, chLatin_e, chLatin_f, chNull }; // ref
+static const XMLCh gId[] = { chLatin_i, chLatin_d, chNull }; // id
+
+static const XMLCh gEqualsQuote[] = { chEqual, chDoubleQuote, chNull };
+static const XMLCh gAngleSlash[] = { chOpenAngle, chForwardSlash, chNull };
+static const XMLCh gAngleFeed[] = { chCloseAngle, chLF, chNull };
+static const XMLCh gSlashAngleFeed[] = { chForwardSlash, chCloseAngle, chLF, chNull };
+static const XMLCh gQuoteAngleFeed[] = { chDoubleQuote, chCloseAngle, chLF, chNull };
+
+static const XMLCh gActualValue[] = { chLatin_a, chLatin_c, chLatin_t, chLatin_u, chLatin_a,
+                                      chLatin_l, chLatin_V, chLatin_a, chLatin_l, chLatin_u,
+                                      chLatin_e, chNull };
+
+static const XMLCh gDataType[] = { chLatin_d, chLatin_a, chLatin_t, chLatin_a, chLatin_T,
+                                   chLatin_y, chLatin_p, chLatin_e, chNull };
+static const XMLCh gDataValue[] = { chLatin_d, chLatin_a, chLatin_t, chLatin_a, chLatin_V,
+                                   chLatin_a, chLatin_l,  chLatin_u, chLatin_e, chNull };
+static const XMLCh gCommentStart[] = { chOpenAngle, chBang, chDash, chDash, chLF, chNull};
+static const XMLCh gCommentEnd[] = { chDash, chDash, chCloseAngle, chLF, chNull};
+
+static const XMLCh gPartialElementPSVI[] =
+{ chLatin_p, chLatin_a, chLatin_r, chLatin_t, chLatin_i, chLatin_t, chLatin_i, chLatin_a, chLatin_l,
+  chLatin_E, chLatin_l, chLatin_e, chLatin_m, chLatin_e, chLatin_n, chLatin_t,
+  chLatin_P, chLatin_S, chLatin_V, chLatin_I, chNull };
+
+// ---------------------------------------------------------------------------
+//  PSVIWriterHandlers: Constructors and Destructor
+// ---------------------------------------------------------------------------
+PSVIWriterHandlers::PSVIWriterHandlers(XMLFormatter* outputFormatter, XMLFormatter* errorFormatter) :
+		PSVIHandler(), DefaultHandler() {
+	fFormatter = outputFormatter;
+	fErrorFormatter = (errorFormatter != NULL) ? errorFormatter : outputFormatter;
+
+	fAttrList = new StringList(8, false);
+	fTempResult = new XMLCh[51];
+    fIndentChars = (XMLCh*) XMLPlatformUtils::fgMemoryManager->allocate(101*sizeof(XMLCh));
+	fBaseUri = 0;
+
+	XMLString::copyString(fIndentChars, XMLUni::fgZeroLenString);
+
+	fIndent = 0;
+	fIndentCap = 100;
+	fAnonNum = 1000;
+
+	fIdMap = new RefHashTableOf<XMLCh>(101, false);
+	fDefinedIds = new RefVectorOf<XSObject>(25, false);
+	fIdNames = new RefArrayVectorOf<XMLCh>(25, true);
+	fObjectLocations = new RefArrayVectorOf<XMLCh>(25, true);
+
+	fPrefixMap = new RefHashTableOf<XMLCh>(5, false);
+	fNamespaces = new RefArrayVectorOf<XMLCh>(5, false);
+
+	fNSAttributes = new ValueVectorOf<XMLSize_t>(15);
+	fElementChildren = new ValueStackOf<bool>(20);
+
+
+	fAttributesInfo = new RefVectorOf<AttrInfo>(8, true);
+}
+
+PSVIWriterHandlers::~PSVIWriterHandlers() {
+	if (fBaseUri != NULL)
+		XMLString::release(&fBaseUri);
+	delete fAttrList;
+	delete[] fTempResult;
+	XMLPlatformUtils::fgMemoryManager->deallocate(fIndentChars);
+
+	delete fIdMap;
+	delete fDefinedIds;
+	delete fIdNames;
+	delete fObjectLocations;
+
+	delete fPrefixMap;
+	delete fNamespaces;
+
+	delete fNSAttributes;
+	delete fElementChildren;
+
+	delete fAttributesInfo;
+
+}
+
+// -----------------------------------------------------------------------
+//  Convenience Utility
+// -----------------------------------------------------------------------
+
+void PSVIWriterHandlers::resetPSVIFormatter(XMLFormatter* outputFormatter) {
+	fFormatter = outputFormatter;
+}
+
+void PSVIWriterHandlers::resetDocument() {
+
+	fIndent = 0;
+	fAnonNum = 1000;
+	XMLString::copyString(fIndentChars, XMLUni::fgZeroLenString);
+
+	if (fBaseUri != NULL)
+		XMLString::release(&fBaseUri);
+
+	fIdMap->removeAll();
+	fDefinedIds->removeAllElements();
+	fIdNames->removeAllElements();
+	fObjectLocations->removeAllElements();
+
+	fPrefixMap->removeAll();
+	fNamespaces->removeAllElements();
+
+	fElementChildren->removeAllElements();
+}
+
+// ---------------------------------------------------------------------------
+//  PSVIWriterHandlers: Implementation of the SAX DocumentHandler interface
+// ---------------------------------------------------------------------------
+void PSVIWriterHandlers::startElement(	const XMLCh* const /* uri */,
+										const XMLCh* const /* localname */,
+										const XMLCh* const /* qname */,
+										const Attributes& attrs) {
+	fAttributesInfo->removeAllElements();
+	for (XMLSize_t i=0; i<attrs.getLength(); i++) {
+		fAttributesInfo->addElement(
+			new AttrInfo(
+				attrs.getURI(i),
+				attrs.getLocalName(i),
+				attrs.getType(i),
+				attrs.getValue(i)
+			)
+		);
+	}
+}
+
+void PSVIWriterHandlers::endElement(	const XMLCh* const /* uri */,
+										const XMLCh* const /* localname */,
+										const XMLCh* const /* qname */) {
+}
+
+void PSVIWriterHandlers::startDocument() {
+	fAttrList->removeAllElements();
+	fAttrList->addElement((XMLCh*)gXmlnsColonXsi);
+	fAttrList->addElement((XMLCh*)PSVIUni::fgNamespaceInstance);
+	fAttrList->addElement((XMLCh*)gXmlnsColonPsv);
+	fAttrList->addElement((XMLCh*)PSVIUni::fgNamespacePsvi);
+	fAttrList->addElement((XMLCh*)XMLUni::fgXMLNSString);
+	fAttrList->addElement((XMLCh*)PSVIUni::fgNamespaceInfoset);
+
+	writeOpen(PSVIUni::fgDocument, fAttrList);
+	incIndent();
+	fElementChildren->push(false);
+}
+
+void PSVIWriterHandlers::endDocument() {
+	processChildrenEnd();
+	sendElementEmpty(PSVIUni::fgDocumentElement);
+	writeEmpty(PSVIUni::fgNotations);
+	writeEmpty(PSVIUni::fgUnparsedEntities);
+	sendElementValue(PSVIUni::fgBaseURI, fBaseUri);
+	sendElementValue(PSVIUni::fgAllDeclarationsProcessed, PSVIUni::fgTrue);
+	sendUnindentedElement(PSVIUni::fgDocument);
+	resetDocument();
+}
+
+void PSVIWriterHandlers::characters(	const XMLCh* const chars,
+									const XMLSize_t /* length */ ) {
+	processChildren();
+	sendIndentedElement(PSVIUni::fgCharacter);
+	sendElementValue(PSVIUni::fgTextContent, chars);
+	sendUnindentedElement(PSVIUni::fgCharacter);
+}
+
+void PSVIWriterHandlers::ignorableWhitespace(	const XMLCh* const /* chars */,
+												const XMLSize_t    /* length */) {
+	//ignore it
+}
+
+void PSVIWriterHandlers::comment(const XMLCh* const chars, const XMLSize_t /* length */) {
+	processChildren();
+	sendIndentedElement(PSVIUni::fgComment);
+	sendElementValue(PSVIUni::fgContent, chars);
+	sendUnindentedElement(PSVIUni::fgComment);
+}
+
+void PSVIWriterHandlers::processingInstruction(	const XMLCh* const target,
+												const XMLCh* const data) {
+	processChildren();
+	sendIndentedElement(PSVIUni::fgProcessingInstruction);
+	sendElementValue(PSVIUni::fgTarget, target);
+	sendElementValue(PSVIUni::fgContent, data);
+	sendUnindentedElement(PSVIUni::fgProcessingInstruction);
+}
+
+void PSVIWriterHandlers::startPrefixMapping(const XMLCh* const prefix, const XMLCh* const uri) {
+	if (!fPrefixMap->containsKey(uri)) {
+		XMLCh* permaUri = XMLString::replicate((XMLCh*)uri);
+		XMLCh* permaPrefix = XMLString::replicate((XMLCh*)prefix);
+		fNamespaces->addElement(permaUri);
+		fPrefixMap->put(permaUri, permaPrefix);
+	}
+}
+
+void PSVIWriterHandlers::endPrefixMapping(const XMLCh* const prefix) {
+	for (unsigned int i=0; i < fNamespaces->size(); i++) {
+		if (XMLString::equals(fPrefixMap->get(fNamespaces->elementAt(i)), prefix)) {
+			XMLCh* uri = fNamespaces->elementAt(i);
+			XMLCh* pre = fPrefixMap->get(uri);
+			fPrefixMap->removeKey(uri);
+			fNamespaces->removeElementAt(i);
+			XMLString::release(&uri);
+			XMLString::release(&pre);
+			break;
+		}
+	}
+}
+
+InputSource* PSVIWriterHandlers::resolveEntity(XMLResourceIdentifier* resourceIdentifier) {
+	if (fBaseUri != NULL)
+		XMLString::release(&fBaseUri);
+	fBaseUri = XMLString::replicate(resourceIdentifier->getBaseURI());
+	return 0;
+}
+
+InputSource* PSVIWriterHandlers::resolveEntity(const XMLCh* const, const XMLCh* const) {
+    return 0;
+}
+
+// ---------------------------------------------------------------------------
+//  PSVIWriterHandlers: Overrides of the SAX ErrorHandler interface
+// ---------------------------------------------------------------------------
+void PSVIWriterHandlers::error(const SAXParseException& e) {
+	XMLCh* temp1 = new XMLCh[10];
+	XMLCh* temp2 = new XMLCh[10];
+        XMLString::binToText((unsigned long)e.getLineNumber(), temp1, 9, 10);
+	XMLString::binToText((unsigned long)e.getColumnNumber(), temp2, 9, 10);
+	*fErrorFormatter << fgError << fgAtFile << chSpace << e.getSystemId()
+		<< chComma << fgLine << chSpace << temp1
+		<< chComma << fgChar << chSpace << temp2
+		<< chLF << fgMessage << chColon << e.getMessage() << chLF;
+	delete[] temp1;
+	delete[] temp2;
+}
+
+void PSVIWriterHandlers::fatalError(const SAXParseException& e) {
+	XMLCh* temp1 = new XMLCh[10];
+	XMLCh* temp2 = new XMLCh[10];
+        XMLString::binToText((unsigned long)e.getLineNumber(), temp1, 9, 10);
+	XMLString::binToText((unsigned long)e.getColumnNumber(), temp2, 9, 10);
+	*fErrorFormatter << fgFatalError << fgAtFile << chSpace << e.getSystemId()
+		<< chComma << fgLine << chSpace << temp1
+		<< chComma << fgChar << chSpace << temp2
+		<< chLF	<< fgMessage << chColon << e.getMessage() << chLF;
+	delete[] temp1;
+	delete[] temp2;
+	resetDocument();
+}
+
+void PSVIWriterHandlers::warning(const SAXParseException& e) {
+	XMLCh* temp1 = new XMLCh[10];
+	XMLCh* temp2 = new XMLCh[10];
+        XMLString::binToText((unsigned long)e.getLineNumber(), temp1, 9, 10);
+	XMLString::binToText((unsigned long)e.getColumnNumber(), temp2, 9, 10);
+	*fErrorFormatter << fgWarning << fgAtFile << chSpace << e.getSystemId()
+		<< chComma << fgLine << chSpace << temp1
+		<< chComma << fgChar << chSpace << temp2
+		<< chLF	<< fgMessage << chColon << e.getMessage() << chLF;
+	delete[] temp1;
+	delete[] temp2;
+}
+
+void PSVIWriterHandlers::resetErrors()
+{
+}
+
+// ---------------------------------------------------------------------------
+//  PSVIWriterHandlers: Overrides of the PSVIHandler interface
+// ---------------------------------------------------------------------------
+
+void PSVIWriterHandlers::handleAttributesPSVI(	const XMLCh* const localName,
+												const XMLCh* const uri,
+												PSVIAttributeList* psviAttributes ) {
+
+	processChildren();
+	fElementChildren->push(false);
+	sendIndentedElement(PSVIUni::fgElement);
+	sendElementValue(PSVIUni::fgNamespaceName, uri);
+	sendElementValue(PSVIUni::fgLocalName, localName);
+	sendElementValue(PSVIUni::fgPrefix, fPrefixMap->get(uri));
+	processAttributes(psviAttributes, fAttributesInfo);
+	processInScopeNamespaces();
+	sendElementValue(PSVIUni::fgBaseURI, fBaseUri);
+}
+
+void PSVIWriterHandlers::handleElementPSVI(	const XMLCh* const /* localName */,
+											const XMLCh* const /* uri */,
+											PSVIElement* elementInfo ) {
+
+    processActualValue(elementInfo);
+	processChildrenEnd();
+	processSchemaInformation(elementInfo->getSchemaInformation());
+	sendElementValue( PSVIUni::fgValidationAttempted,
+		translateValidationAttempted(elementInfo->getValidationAttempted()));
+	sendElementValue(PSVIUni::fgValidationContext, elementInfo->getValidationContext());
+	sendElementValue(PSVIUni::fgValidity, translateValidity(elementInfo->getValidity()));
+	//REVISIT errorCodes not supported
+	//processSchemaErrorCode(elementInfo->getErrorCodes());
+	sendElementEmpty(PSVIUni::fgSchemaErrorCode);
+	sendElementValue(PSVIUni::fgSchemaNormalizedValue, elementInfo->getSchemaNormalizedValue());
+	sendElementValue(PSVIUni::fgCanonicalRepresentation, elementInfo->getCanonicalRepresentation());
+	sendElementValue(PSVIUni::fgSchemaSpecified,
+		(elementInfo->getIsSchemaSpecified() ? PSVIUni::fgSchema : PSVIUni::fgInfoset));
+	sendElementValue(PSVIUni::fgSchemaDefault, elementInfo->getSchemaDefault());
+	processTypeDefinitionRef(PSVIUni::fgTypeDefinition, elementInfo->getTypeDefinition());
+	processTypeDefinitionRef(PSVIUni::fgMemberTypeDefinition, elementInfo->getMemberTypeDefinition());
+	sendElementEmpty(PSVIUni::fgNil);
+	processElementDeclarationRef(PSVIUni::fgDeclaration, elementInfo->getElementDeclaration());
+	sendReference(PSVIUni::fgNotation, elementInfo->getNotationDeclaration());
+	sendElementEmpty(PSVIUni::fgIdIdrefTable);
+	sendElementEmpty(PSVIUni::fgIdentityConstraintTable);
+	sendUnindentedElement(PSVIUni::fgElement);
+
+}
+
+/***
+ *
+ *  <partialElementPSVI>
+ *        getValidity()
+ *        getValidationAttemped()
+ *        getValidationContext()
+ *        getIsSchemaSpecified()
+ *        getElementDeclaration()
+ *        getTypeDefinition()
+ *        getMemberTypeDefinition()
+ *        getSchemaInformation()
+ *        getSchemaDefault()
+ *        getSchemaNormalizedValue()
+ *        getCanonicalRepresentation()
+ *        getNotationDeclaration()
+ *  </partialElementPSVI>
+ *
+ ***/
+void
+PSVIWriterHandlers::handlePartialElementPSVI( const XMLCh*       const /* localName */,
+                                              const XMLCh*       const /* uri */,
+                                                    PSVIElement*       elementInfo )
+{
+
+    writeString(gCommentStart);
+    incIndent();
+    writeOpen(gPartialElementPSVI);
+    incIndent();
+
+	processSchemaInformation(elementInfo->getSchemaInformation());
+	sendElementValue(PSVIUni::fgValidationAttempted
+                   , translateValidationAttempted(elementInfo->getValidationAttempted()));
+	sendElementValue(PSVIUni::fgValidationContext
+                   , elementInfo->getValidationContext());
+    sendElementValue(PSVIUni::fgValidity
+                   , translateValidity(elementInfo->getValidity()));
+	sendElementValue(PSVIUni::fgSchemaNormalizedValue
+                   , elementInfo->getSchemaNormalizedValue());
+	sendElementValue(PSVIUni::fgCanonicalRepresentation
+                   , elementInfo->getCanonicalRepresentation());
+	sendElementValue(PSVIUni::fgSchemaSpecified
+                  , (elementInfo->getIsSchemaSpecified() ? PSVIUni::fgSchema : PSVIUni::fgInfoset));
+    sendElementValue(PSVIUni::fgSchemaDefault
+                   , elementInfo->getSchemaDefault());
+    processTypeDefinitionRef(PSVIUni::fgTypeDefinition
+                           , elementInfo->getTypeDefinition());
+	processTypeDefinitionRef(PSVIUni::fgMemberTypeDefinition
+                           , elementInfo->getMemberTypeDefinition());
+    processElementDeclarationRef(PSVIUni::fgDeclaration
+                               , elementInfo->getElementDeclaration());
+    sendReference(PSVIUni::fgNotation
+                , elementInfo->getNotationDeclaration());
+
+    decIndent();
+    writeClose(gPartialElementPSVI);
+    decIndent();
+    writeString(gCommentEnd);
+
+}
+
+// ---------------------------------------------------------------------------
+//  Private methods
+// ---------------------------------------------------------------------------
+
+void PSVIWriterHandlers::processAttributes(PSVIAttributeList* psviAttributes, const RefVectorOf<AttrInfo>* attributesInfo) {
+	fNSAttributes->removeAllElements();  //will store the indecies of namespace attributes
+	bool firstFlag = true;
+	for (XMLSize_t i = 0; i < attributesInfo->size(); i++) {
+		if (attributesInfo->elementAt(i)->getUri() == XMLUni::fgXMLNSURIName) {
+			fNSAttributes->addElement(i);
+		} else {
+			if (firstFlag) {
+				sendIndentedElement(PSVIUni::fgAttributes);
+				firstFlag = false;
+			}
+			const XMLCh* localName = attributesInfo->elementAt(i)->getLocalName();
+			const XMLCh* namespaceUri = attributesInfo->elementAt(i)->getUri();
+			sendIndentedElement(PSVIUni::fgAttribute);
+			sendElementValue(PSVIUni::fgNamespaceName, namespaceUri);
+			sendElementValue(PSVIUni::fgLocalName, localName);
+			sendElementValue(PSVIUni::fgPrefix, fPrefixMap->get(attributesInfo->elementAt(i)->getUri()));
+			sendElementValue(PSVIUni::fgNormalizedValue, attributesInfo->elementAt(i)->getValue());
+			if (psviAttributes!=NULL && psviAttributes->getAttributePSVIAtIndex(i)!=NULL) {
+				sendElementValue(PSVIUni::fgSpecified,
+					translateBool(!(psviAttributes->getAttributePSVIAtIndex(i)->getIsSchemaSpecified())));
+			} else //the desired value is !schemaSpecified
+				sendElementValue(PSVIUni::fgSpecified, PSVIUni::fgUnknown);
+			sendElementValue(PSVIUni::fgAttributeType, attributesInfo->elementAt(i)->getType());
+			sendElementEmpty(PSVIUni::fgReferences);
+			PSVIAttribute* psviAttr = psviAttributes->getAttributePSVIByName(localName, namespaceUri);
+			processAttributePSVI(psviAttr);
+			sendUnindentedElement(PSVIUni::fgAttribute);
+		}
+	}
+	if (firstFlag)
+		writeEmpty(PSVIUni::fgAttributes);
+	else
+		sendUnindentedElement(PSVIUni::fgAttributes);
+	processNamespaceAttributes(psviAttributes, attributesInfo);
+}
+
+void PSVIWriterHandlers::processNamespaceAttributes(PSVIAttributeList* psviAttributes, const RefVectorOf<AttrInfo>* attributes) {
+	if (fNSAttributes->size()==0) {
+		writeEmpty(PSVIUni::fgNamespaceAttributes);
+	} else {
+		sendIndentedElement(PSVIUni::fgNamespaceAttributes);
+		XMLSize_t ind;
+		for (XMLSize_t count = 0; count < fNSAttributes->size(); count++) {
+			ind = fNSAttributes->elementAt(count);
+			sendIndentedElement(PSVIUni::fgAttribute);
+			sendElementValue(PSVIUni::fgNamespaceName, XMLUni::fgXMLNSURIName);
+			sendElementValue(PSVIUni::fgLocalName, attributes->elementAt(ind)->getLocalName());
+			sendElementValue(PSVIUni::fgPrefix, XMLUni::fgXMLNSString);
+			sendElementValue(PSVIUni::fgNormalizedValue, attributes->elementAt(ind)->getValue());
+			if (psviAttributes!=NULL) {
+				sendElementValue(PSVIUni::fgSpecified,
+					translateBool(
+						psviAttributes->getAttributePSVIByName(
+							attributes->elementAt(ind)->getLocalName(),
+							attributes->elementAt(ind)->getUri()
+						)->getIsSchemaSpecified()
+					)
+				);
+			} else
+				sendElementValue(PSVIUni::fgSpecified, PSVIUni::fgUnknown);
+			sendElementValue(PSVIUni::fgAttributeType, attributes->elementAt(ind)->getType());
+			// this property isn't relevent to PSVI
+			sendElementEmpty(PSVIUni::fgReferences);
+			sendUnindentedElement(PSVIUni::fgAttribute);
+		}
+		sendUnindentedElement(PSVIUni::fgNamespaceAttributes);
+	}
+}
+
+void PSVIWriterHandlers::processAttributePSVI(PSVIAttribute* attrPSVI) {
+	if (attrPSVI != NULL) {
+		sendElementValue(PSVIUni::fgValidationAttempted,
+			translateValidationAttempted(attrPSVI->getValidationAttempted()));
+		sendElementValue(PSVIUni::fgValidationContext, attrPSVI->getValidationContext());
+		sendElementValue(PSVIUni::fgValidity, translateValidity(attrPSVI->getValidity()));
+		//REVISIT errorCodes not supported
+		//processSchemaErrorCode(attrPSVI->getErrorCodes());
+		sendElementEmpty(PSVIUni::fgSchemaErrorCode);
+		sendElementValue(PSVIUni::fgSchemaNormalizedValue, attrPSVI->getSchemaNormalizedValue());
+		sendElementValue(PSVIUni::fgSchemaSpecified,
+			(attrPSVI->getIsSchemaSpecified() ? PSVIUni::fgSchema : PSVIUni::fgInfoset));
+		sendElementValue(PSVIUni::fgSchemaDefault, attrPSVI->getSchemaDefault());
+		processTypeDefinitionRef(PSVIUni::fgTypeDefinition, attrPSVI->getTypeDefinition());
+		processTypeDefinitionOrRef(PSVIUni::fgMemberTypeDefinition, attrPSVI->getMemberTypeDefinition());
+		processAttributeDeclarationRef(PSVIUni::fgDeclaration, attrPSVI->getAttributeDeclaration());
+
+        processActualValue(attrPSVI);
+	}
+}
+
+void PSVIWriterHandlers::processInScopeNamespaces() {
+	sendIndentedElement(PSVIUni::fgInScopeNamespaces);
+	sendIndentedElement(PSVIUni::fgNamespace);
+	sendElementValue(PSVIUni::fgPrefix, PSVIUni::fgXml);
+	sendElementValue(PSVIUni::fgNamespaceName, XMLUni::fgXMLURIName);
+	sendUnindentedElement(PSVIUni::fgNamespace);
+	for (unsigned int i=0; i<fNamespaces->size(); i++) {
+		sendIndentedElement(PSVIUni::fgNamespace);
+		sendElementValue(PSVIUni::fgPrefix, fPrefixMap->get(fNamespaces->elementAt(i)));
+		sendElementValue(PSVIUni::fgNamespaceName, fNamespaces->elementAt(i));
+		sendUnindentedElement(PSVIUni::fgNamespace);
+	}
+	sendUnindentedElement(PSVIUni::fgInScopeNamespaces);
+}
+
+void PSVIWriterHandlers::processSchemaInformation(XSModel* model) {
+	if (fElementChildren->size()!=1 || model==NULL) {
+		sendElementEmpty(PSVIUni::fgSchemaInformation);
+	} else {
+		sendIndentedElement(PSVIUni::fgSchemaInformation);
+		XSNamespaceItemList* namespaceItems = model->getNamespaceItems();
+		for (unsigned int i=0; i < namespaceItems->size(); i++) {
+			processNamespaceItem(namespaceItems->elementAt(i));
+		}
+		sendUnindentedElement(PSVIUni::fgSchemaInformation);
+	}
+}
+
+void PSVIWriterHandlers::processNamespaceItem(XSNamespaceItem* namespaceItem) {
+	if (!XMLString::equals(namespaceItem->getSchemaNamespace(), PSVIUni::fgNamespaceXmlSchema)) {
+		sendIndentedElement(PSVIUni::fgNamespaceSchemaInformation);
+		sendElementValue(PSVIUni::fgSchemaNamespace, namespaceItem->getSchemaNamespace());
+		processSchemaComponents(namespaceItem);
+		processSchemaDocuments(namespaceItem);
+		processSchemaAnnotations(namespaceItem->getAnnotations());
+		sendUnindentedElement(PSVIUni::fgNamespaceSchemaInformation);
+	}
+}
+
+void PSVIWriterHandlers::processSchemaComponents(XSNamespaceItem* namespaceItem) {
+	sendIndentedElement(PSVIUni::fgSchemaComponents);
+	XSNamedMap<XSTypeDefinition>* types = (XSNamedMap<XSTypeDefinition>*)(namespaceItem->getComponents(XSConstants::TYPE_DEFINITION));
+	for (XMLSize_t typeCount = 0; typeCount < types->getLength(); typeCount++) {
+		processTypeDefinition(types->item(typeCount));
+	}
+	XSNamedMap<XSAttributeDeclaration>* attributes = (XSNamedMap<XSAttributeDeclaration>*)namespaceItem->getComponents(XSConstants::ATTRIBUTE_DECLARATION);
+	for (XMLSize_t attrCount = 0; attrCount < attributes->getLength(); attrCount++) {
+		processAttributeDeclaration(attributes->item(attrCount));
+	}
+	XSNamedMap<XSElementDeclaration>* elements = (XSNamedMap<XSElementDeclaration>*)namespaceItem->getComponents(XSConstants::ELEMENT_DECLARATION);
+	for (XMLSize_t elemCount = 0; elemCount < elements->getLength(); elemCount++) {
+		processElementDeclaration(elements->item(elemCount));
+	}
+	XSNamedMap<XSAttributeGroupDefinition>* attrGroups = (XSNamedMap<XSAttributeGroupDefinition>*)namespaceItem->getComponents(XSConstants::ATTRIBUTE_GROUP_DEFINITION);
+	for (XMLSize_t attrGroupCount = 0; attrGroupCount < attrGroups->getLength(); attrGroupCount++) {
+		processAttributeGroupDefinition(attrGroups->item(attrGroupCount));
+	}
+	XSNamedMap<XSModelGroupDefinition>* modelGroups = (XSNamedMap<XSModelGroupDefinition>*)namespaceItem->getComponents(XSConstants::MODEL_GROUP_DEFINITION);
+	for (XMLSize_t modelGroupCount = 0; modelGroupCount < modelGroups->getLength(); modelGroupCount++) {
+		processModelGroupDefinition(modelGroups->item(modelGroupCount));
+	}
+	XSNamedMap<XSNotationDeclaration>* notations = (XSNamedMap<XSNotationDeclaration>*)namespaceItem->getComponents(XSConstants::NOTATION_DECLARATION);
+	for (XMLSize_t notationCount = 0; notationCount < notations->getLength(); notationCount++) {
+		processNotationDeclaration(notations->item(notationCount));
+	}
+	sendUnindentedElement(PSVIUni::fgSchemaComponents);
+}
+
+void PSVIWriterHandlers::processSchemaDocuments(XSNamespaceItem* namespaceItem) {
+	const StringList* locations = namespaceItem->getDocumentLocations();
+	if (locations==NULL) {
+		sendElementEmpty(PSVIUni::fgSchemaDocuments);
+	}
+	sendIndentedElement(PSVIUni::fgSchemaDocuments);
+	for (unsigned int i = 0; i < locations->size(); i++) {
+		sendIndentedElement(PSVIUni::fgSchemaDocument);
+		sendElementValue(PSVIUni::fgDocumentLocation, locations->elementAt(i));
+		sendElementEmpty(PSVIUni::fgPsvDocument); //supposed to point to a document element, but we dont deal with them
+		sendUnindentedElement(PSVIUni::fgSchemaDocument);
+	}
+	sendUnindentedElement(PSVIUni::fgSchemaDocuments);
+}
+
+void PSVIWriterHandlers::processSchemaAnnotations(XSAnnotationList* annotations) {
+	if (annotations == NULL || annotations->size()==0) {
+		sendElementEmpty(PSVIUni::fgSchemaAnnotations);
+	} else {
+		sendIndentedElement(PSVIUni::fgSchemaAnnotations);
+		for (unsigned int i = 0; i < annotations->size(); i++) {
+			processAnnotation(annotations->elementAt(i));
+		}
+		sendUnindentedElement(PSVIUni::fgSchemaAnnotations);
+	}
+}
+
+void PSVIWriterHandlers::processSchemaErrorCode(StringList* /* errors */ ) {
+	//REVISIT
+	//ErrorCodes not yet supported
+}
+
+void PSVIWriterHandlers::processTypeDefinition(XSTypeDefinition* type) {
+	if (type->getTypeCategory() == XSTypeDefinition::COMPLEX_TYPE) {
+		processComplexTypeDefinition((XSComplexTypeDefinition*)type);
+	} else { //XSTypeDefinition::SIMPLE_TYPE
+		processSimpleTypeDefinition((XSSimpleTypeDefinition*)type);
+	}
+}
+
+void PSVIWriterHandlers::processComplexTypeDefinition(XSComplexTypeDefinition* complexType) {
+	sendIndentedElementWithID(PSVIUni::fgComplexTypeDefinition, (XSObject*) complexType);
+	if (complexType->getAnonymous())
+		sendElementEmpty(PSVIUni::fgName);
+	else sendElementValue(PSVIUni::fgName, complexType->getName());
+	sendElementValue(PSVIUni::fgTargetNamespace, complexType->getNamespace());
+	processTypeDefinitionOrRef(PSVIUni::fgBaseTypeDefinition, complexType->getBaseType());
+	sendElementValue(PSVIUni::fgDerivationMethod,
+		translateDerivationMethod(complexType->getDerivationMethod()));
+	sendElementValue(PSVIUni::fgFinal, translateBlockOrFinal(complexType->getFinal()));
+	sendElementValue(PSVIUni::fgAbstract, translateBool(complexType->getAbstract()));
+	processAttributeUses(complexType->getAttributeUses());
+	processAttributeWildcard(complexType->getAttributeWildcard());
+
+	sendIndentedElement(PSVIUni::fgContentType);
+	sendElementValue(PSVIUni::fgVariety, translateComplexContentType(complexType->getContentType()));
+	if (complexType->getSimpleType()==NULL) {
+		sendElementEmpty(PSVIUni::fgSimpleTypeDefinition);
+	} else {
+		processSimpleTypeDefinitionOrRef(complexType->getSimpleType());
+	}
+	processParticle(complexType->getParticle());
+	sendUnindentedElement(PSVIUni::fgContentType);
+	sendElementValue(PSVIUni::fgProhibitedSubstitutions,
+		translateBlockOrFinal(complexType->getProhibitedSubstitutions()));
+	processAnnotations(complexType->getAnnotations());
+	sendUnindentedElement(PSVIUni::fgComplexTypeDefinition);
+}
+
+void PSVIWriterHandlers::processSimpleTypeDefinition(XSSimpleTypeDefinition* simpleType) {
+	sendIndentedElementWithID(PSVIUni::fgSimpleTypeDefinition, (XSObject*) simpleType);
+	if (simpleType->getAnonymous())
+		sendElementEmpty(PSVIUni::fgName);
+	else sendElementValue(PSVIUni::fgName, simpleType->getName());
+	sendElementValue(PSVIUni::fgTargetNamespace, simpleType->getNamespace());
+	processTypeDefinitionOrRef(PSVIUni::fgBaseTypeDefinition, simpleType->getBaseType());
+	processTypeDefinitionOrRef(PSVIUni::fgPrimitiveTypeDefinition, simpleType->getPrimitiveType());
+	processFacets(simpleType->getFacets(), simpleType->getMultiValueFacets());
+	processFundamentalFacets(simpleType);
+	sendElementValue(PSVIUni::fgFinal, translateBlockOrFinal(simpleType->getFinal()));
+	sendElementValue(PSVIUni::fgVariety, translateSimpleTypeVariety(simpleType->getVariety()));
+	processTypeDefinitionOrRef(PSVIUni::fgItemTypeDefinition, simpleType->getItemType());
+	processMemberTypeDefinitions(simpleType->getMemberTypes());
+	processAnnotations(simpleType->getAnnotations());
+	sendUnindentedElement(PSVIUni::fgSimpleTypeDefinition);
+}
+
+void PSVIWriterHandlers::processModelGroupDefinition(XSModelGroupDefinition* modelGroup) {
+	if (modelGroup == NULL) {
+		sendElementEmpty(PSVIUni::fgModelGroupDefinition);
+	} else {
+		sendIndentedElementWithID(PSVIUni::fgModelGroupDefinition, (XSObject*) modelGroup);
+		sendElementValue(PSVIUni::fgName, modelGroup->getName());
+		sendElementValue(PSVIUni::fgTargetNamespace, modelGroup->getNamespace());
+		processModelGroup(modelGroup->getModelGroup());
+		processAnnotation(modelGroup->getAnnotation());
+		sendUnindentedElement(PSVIUni::fgModelGroupDefinition);
+	}
+}
+
+void PSVIWriterHandlers::processAttributeGroupDefinition(XSAttributeGroupDefinition* attributeGroup) {
+	if (attributeGroup == NULL) {
+		sendElementEmpty(PSVIUni::fgAttributeGroupDefinition);
+	} else {
+		sendIndentedElementWithID(PSVIUni::fgAttributeGroupDefinition, (XSObject*) attributeGroup);
+		sendElementValue(PSVIUni::fgName, attributeGroup->getName());
+		sendElementValue(PSVIUni::fgTargetNamespace, attributeGroup->getNamespace());
+		processAttributeUses(attributeGroup->getAttributeUses());
+		processAttributeWildcard(attributeGroup->getAttributeWildcard());
+		processAnnotation(attributeGroup->getAnnotation());
+		sendUnindentedElement(PSVIUni::fgAttributeGroupDefinition);
+	}
+}
+
+void PSVIWriterHandlers::processElementDeclaration(XSElementDeclaration* element) {
+	if (element == NULL) {
+		sendElementEmpty(PSVIUni::fgElementDeclaration);
+	} else {
+		sendIndentedElementWithID(PSVIUni::fgElementDeclaration, (XSObject*) element);
+		sendElementValue(PSVIUni::fgName, element->getName());
+		sendElementValue(PSVIUni::fgTargetNamespace, element->getNamespace());
+		processTypeDefinitionOrRef(PSVIUni::fgTypeDefinition, element->getTypeDefinition());
+		processScope(element->getEnclosingCTDefinition(), element->getScope());
+		processValueConstraint(element->getConstraintType(), element->getConstraintValue());
+		sendElementValue(PSVIUni::fgNillable, translateBool(element->getNillable()));
+		processIdentityConstraintDefinition(element->getIdentityConstraints());
+		processElementDeclarationRef(PSVIUni::fgSubstitutionGroupAffiliation,
+			element->getSubstitutionGroupAffiliation());
+		sendElementValue(PSVIUni::fgSubstitutionGroupExclusions,
+			translateBlockOrFinal(element->getSubstitutionGroupExclusions()));
+		sendElementValue(PSVIUni::fgDisallowedSubstitutions,
+			translateBlockOrFinal(element->getDisallowedSubstitutions()));
+		sendElementValue(PSVIUni::fgAbstract, translateBool(element->getAbstract()));
+		processAnnotation(element->getAnnotation());
+		sendUnindentedElement(PSVIUni::fgElementDeclaration);
+	}
+}
+
+void PSVIWriterHandlers::processAttributeDeclaration(XSAttributeDeclaration* attribute) {
+	if (attribute == NULL) {
+		sendElementEmpty(PSVIUni::fgAttributeDeclaration);
+	} else {
+		sendIndentedElementWithID(PSVIUni::fgAttributeDeclaration, (XSObject*) attribute);
+		sendElementValue(PSVIUni::fgName, attribute->getName());
+		sendElementValue(PSVIUni::fgTargetNamespace, attribute->getNamespace());
+		sendIndentedElement(PSVIUni::fgTypeDefinition);
+		processSimpleTypeDefinitionOrRef(attribute->getTypeDefinition());
+		sendUnindentedElement(PSVIUni::fgTypeDefinition);
+		processScope(attribute->getEnclosingCTDefinition(), attribute->getScope());
+		processValueConstraint(attribute->getConstraintType(), attribute->getConstraintValue());
+		processAnnotation(attribute->getAnnotation());
+		sendUnindentedElement(PSVIUni::fgAttributeDeclaration);
+	}
+}
+
+void PSVIWriterHandlers::processNotationDeclaration(XSNotationDeclaration* notation) {
+	if (notation == NULL) {
+		sendElementEmpty(PSVIUni::fgNotationDeclaration);
+	} else {
+		sendIndentedElementWithID(PSVIUni::fgNotationDeclaration, (XSObject*) notation);
+		sendElementValue(PSVIUni::fgName, notation->getName());
+		sendElementValue(PSVIUni::fgTargetNamespace, notation->getNamespace());
+		sendElementValue(PSVIUni::fgSystemIdentifier, notation->getSystemId());
+		sendElementValue(PSVIUni::fgPublicIdentifier, notation->getPublicId());
+		processAnnotation(notation->getAnnotation());
+		sendUnindentedElement(PSVIUni::fgNotationDeclaration);
+	}
+}
+
+void PSVIWriterHandlers::processAnnotations(XSAnnotationList* annotations) {
+	if (annotations == NULL) {
+		sendElementEmpty(PSVIUni::fgAnnotations);
+	} else {
+		sendIndentedElement(PSVIUni::fgAnnotations);
+		for (unsigned int i = 0; i < annotations->size(); i++) {
+			processAnnotation(annotations->elementAt(i));
+		}
+		sendUnindentedElement(PSVIUni::fgAnnotations);
+	}
+}
+
+void PSVIWriterHandlers::processAttributeUses(XSAttributeUseList* attributeUses) {
+	if (attributeUses == NULL) {
+		sendElementEmpty(PSVIUni::fgAttributeUses);
+	} else {
+		sendIndentedElement(PSVIUni::fgAttributeUses);
+		XSAttributeUse* attrUse;
+		for (unsigned int i=0; i < attributeUses->size(); i++) {
+			attrUse = attributeUses->elementAt(i);
+			sendIndentedElement(PSVIUni::fgAttributeUse);
+			sendElementValue(PSVIUni::fgRequired, translateBool(attrUse->getRequired()));
+			processAttributeDeclarationOrRef(attrUse->getAttrDeclaration());
+			processValueConstraint(attrUse->getConstraintType(), attrUse->getConstraintValue());
+			sendUnindentedElement(PSVIUni::fgAttributeUse);
+		}
+		sendUnindentedElement(PSVIUni::fgAttributeUses);
+	}
+}
+
+void PSVIWriterHandlers::processFacets(XSFacetList* facets, XSMultiValueFacetList* multiFacets) {
+	if (facets == NULL && multiFacets == NULL) {
+		sendElementEmpty(PSVIUni::fgFacets);
+	} else {
+		sendIndentedElement(PSVIUni::fgFacets);
+		if (facets != NULL) {
+			for (unsigned int facetCount = 0; facetCount < facets->size(); facetCount++) {
+				XSFacet* facet = facets->elementAt(facetCount);
+				sendIndentedElement(translateFacet(facet->getFacetKind()));
+				sendElementValue(PSVIUni::fgValue, facet->getLexicalFacetValue());
+				sendElementValue(PSVIUni::fgFacetFixed, translateBool(facet->isFixed()));
+				processAnnotation(facet->getAnnotation());
+				sendUnindentedElement(translateFacet(facet->getFacetKind()));
+			}
+		}
+		if (multiFacets != NULL) {
+			for (unsigned int multiFacetCount = 0; multiFacetCount < multiFacets->size(); multiFacetCount++) {
+				XSMultiValueFacet* multiFacet = multiFacets->elementAt(multiFacetCount);
+				sendIndentedElement(translateFacet(multiFacet->getFacetKind()));
+				StringList* values = multiFacet->getLexicalFacetValues();
+				for (unsigned int i=0; i < values->size(); i++) {
+					sendElementValue(PSVIUni::fgValue, values->elementAt(i));
+				}
+				sendElementValue(PSVIUni::fgFacetFixed, translateBool(multiFacet->isFixed()));
+				processAnnotations(multiFacet->getAnnotations());
+				sendUnindentedElement(translateFacet(multiFacet->getFacetKind()));
+			}
+		}
+		sendUnindentedElement(PSVIUni::fgFacets);
+	}
+}
+
+void PSVIWriterHandlers::processFundamentalFacets(XSSimpleTypeDefinition* type) {
+	sendIndentedElement(PSVIUni::fgFundamentalFacets);
+	sendIndentedElement(PSVIUni::fgOrdered);
+	sendElementValue(PSVIUni::fgValue, translateOrderedFacet(type->getOrdered()));
+	sendUnindentedElement(PSVIUni::fgOrdered);
+	sendIndentedElement(PSVIUni::fgBounded);
+	sendElementValue(PSVIUni::fgValue, translateBool(type->getBounded()));
+	sendUnindentedElement(PSVIUni::fgBounded);
+	sendIndentedElement(PSVIUni::fgCardinality);
+	sendElementValue(PSVIUni::fgValue, translateBool(type->getFinite()));
+	sendUnindentedElement(PSVIUni::fgCardinality);
+	sendIndentedElement(PSVIUni::fgNumeric);
+	sendElementValue(PSVIUni::fgValue, translateBool(type->getNumeric()));
+	sendUnindentedElement(PSVIUni::fgNumeric);
+	sendUnindentedElement(PSVIUni::fgFundamentalFacets);
+}
+
+void PSVIWriterHandlers::processMemberTypeDefinitions(XSSimpleTypeDefinitionList* memberTypes) {
+	if (memberTypes == NULL) {
+		sendElementEmpty(PSVIUni::fgMemberTypeDefinitions);
+	} else {
+		sendIndentedElement(PSVIUni::fgMemberTypeDefinitions);
+		for (unsigned int i = 0; i < memberTypes->size(); i++) {
+			processTypeDefinitionOrRef(PSVIUni::fgMemberTypeDefinition, (XSTypeDefinition*)memberTypes->elementAt(i));
+		}
+		sendUnindentedElement(PSVIUni::fgMemberTypeDefinitions);
+	}
+}
+
+void PSVIWriterHandlers::processAnnotation(XSAnnotation* annotation) {
+	if (annotation == NULL) {
+		sendElementEmpty(PSVIUni::fgAnnotation);
+	} else {
+        XSAnnotation* annot;
+        annot = annotation;
+
+        while (annot) {
+		    XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* document = DOMImplementationRegistry::getDOMImplementation(XMLUni::fgZeroLenString)->
+                createDocument();
+		    annot->writeAnnotation((DOMNode*)document, XSAnnotation::W3C_DOM_DOCUMENT);
+		    DOMElement* elem = document->getDocumentElement();
+		    sendIndentedElement(PSVIUni::fgAnnotation);
+		    processDOMElement(PSVIUni::fgApplicationInformation, elem, PSVIUni::fgAppinfo);
+		    processDOMElement(PSVIUni::fgUserInformation, elem, PSVIUni::fgDocumentation);
+		    processDOMAttributes(elem->getAttributes());
+		    sendUnindentedElement(PSVIUni::fgAnnotation);
+            document->release();
+            annot = annot->getNext();
+        }
+	}
+}
+
+void PSVIWriterHandlers::processDOMElement(const XMLCh* const encloseName, DOMElement* rootElem, const XMLCh* const elementName) {
+	DOMNodeList* elems = rootElem->getElementsByTagNameNS(SchemaSymbols::fgURI_SCHEMAFORSCHEMA, elementName);
+	if (elems->getLength()==0) {
+		sendElementEmpty(encloseName);
+	} else {
+		sendIndentedElement(encloseName);
+		for (XMLSize_t i=0; i < elems->getLength(); i++) {
+			DOMElement* elem = (DOMElement*)elems->item(i);
+			sendIndentedElement(PSVIUni::fgElement);
+			sendElementValue(PSVIUni::fgNamespaceName, elem->getNamespaceURI());
+			sendElementValue(PSVIUni::fgLocalName, elem->getLocalName());
+			sendElementValue(PSVIUni::fgPrefix, elem->getPrefix());
+			sendIndentedElement(PSVIUni::fgChildren);
+			sendIndentedElement(PSVIUni::fgCharacter);
+			sendElementValue(PSVIUni::fgTextContent, elem->getTextContent());
+			sendUnindentedElement(PSVIUni::fgCharacter);
+			sendUnindentedElement(PSVIUni::fgChildren);
+			processDOMAttributes(elem->getAttributes());
+			sendUnindentedElement(PSVIUni::fgElement);
+		}
+		sendUnindentedElement(encloseName);
+	}
+}
+
+void PSVIWriterHandlers::processDOMAttributes(DOMNamedNodeMap* attrs) {
+	fNSAttributes->removeAllElements();
+	bool firstFlag = true;
+	for (XMLSize_t count=0; count < attrs->getLength(); count++) {
+		DOMAttr* attr = (DOMAttr*)attrs->item(count);
+        if (XMLString::equals(attr->getNamespaceURI(), XMLUni::fgXMLNSURIName)) {
+			fNSAttributes->addElement(count);
+		} else {
+			if (firstFlag) {
+				sendIndentedElement(PSVIUni::fgAttributes);
+				firstFlag = false;
+			}
+			sendIndentedElement(PSVIUni::fgAttribute);
+			sendElementValue(PSVIUni::fgNamespaceName, attr->getNamespaceURI());
+			sendElementValue(PSVIUni::fgLocalName, attr->getLocalName());
+			sendElementValue(PSVIUni::fgPrefix, attr->getPrefix());
+			sendElementValue(PSVIUni::fgNormalizedValue, attr->getValue());
+			sendElementValue(PSVIUni::fgSpecified, translateBool(attr->getSpecified()));
+			sendElementValue(PSVIUni::fgAttributeType, attr->getSchemaTypeInfo()->getTypeName());
+			sendElementEmpty(PSVIUni::fgReferences);
+			sendUnindentedElement(PSVIUni::fgAttribute);
+		}
+	}
+	if (firstFlag)
+		writeEmpty(PSVIUni::fgAttributes);
+	else
+		sendUnindentedElement(PSVIUni::fgAttributes);
+
+	//now for namespace attributes
+	if (fNSAttributes->size()==0) {
+		writeEmpty(PSVIUni::fgNamespaceAttributes);
+	} else {
+		sendIndentedElement(PSVIUni::fgNamespaceAttributes);
+		for (XMLSize_t NScount = 0; NScount < fNSAttributes->size(); NScount++) {
+			DOMAttr* attr = (DOMAttr*)attrs->item(fNSAttributes->elementAt(NScount));
+			sendIndentedElement(PSVIUni::fgAttribute);
+			sendElementValue(PSVIUni::fgNamespaceName, XMLUni::fgXMLNSURIName);
+			sendElementValue(PSVIUni::fgLocalName, attr->getLocalName());
+			sendElementValue(PSVIUni::fgPrefix, attr->getPrefix());
+			sendElementValue(PSVIUni::fgNormalizedValue, attr->getValue());
+			sendElementValue(PSVIUni::fgSpecified, translateBool(attr->getSpecified()));
+			sendElementValue(PSVIUni::fgAttributeType, attr->getSchemaTypeInfo()->getTypeName());
+			sendElementEmpty(PSVIUni::fgReferences);
+			sendUnindentedElement(PSVIUni::fgAttribute);
+		}
+		sendUnindentedElement(PSVIUni::fgNamespaceAttributes);
+	}
+}
+
+void PSVIWriterHandlers::processWildcard(XSWildcard* wildcard) {
+	if (wildcard == NULL) {
+		sendElementEmpty(PSVIUni::fgWildcard);
+	} else {
+		sendIndentedElement(PSVIUni::fgWildcard);
+		sendIndentedElement(PSVIUni::fgNamespaceConstraint);
+		if (wildcard->getConstraintType()==XSWildcard::NSCONSTRAINT_ANY) {
+			sendElementValue(PSVIUni::fgVariety, PSVIUni::fgAny);
+			sendElementEmpty(PSVIUni::fgNamespaces);
+		} else {
+			if (wildcard->getConstraintType()==XSWildcard::NSCONSTRAINT_DERIVATION_LIST) {
+				sendElementEmpty(PSVIUni::fgVariety);
+				sendElementValueList(PSVIUni::fgNamespaces, wildcard->getNsConstraintList());
+			} else {  //NSCONSTRAINT_NOT
+				sendElementValue(PSVIUni::fgVariety, PSVIUni::fgNot);
+				sendElementValueList(PSVIUni::fgNamespaces, wildcard->getNsConstraintList());
+			}
+		}
+		sendUnindentedElement(PSVIUni::fgNamespaceConstraint);
+		sendElementValue(PSVIUni::fgProcessContents,
+			translateProcessContents(wildcard->getProcessContents()));
+		processAnnotation(wildcard->getAnnotation());
+		sendUnindentedElement(PSVIUni::fgWildcard);
+	}
+}
+
+void PSVIWriterHandlers::processModelGroup(XSModelGroup* modelGroup) {
+	if (modelGroup == NULL) {
+		sendElementEmpty(PSVIUni::fgModelGroup);
+	} else {
+		sendIndentedElement(PSVIUni::fgModelGroup);
+		sendElementValue(PSVIUni::fgCompositor, translateCompositor(modelGroup->getCompositor()));
+		sendIndentedElement(PSVIUni::fgParticles);
+		for (unsigned int i=0; i < modelGroup->getParticles()->size(); i++) {
+			processParticle(modelGroup->getParticles()->elementAt(i));
+		}
+		sendUnindentedElement(PSVIUni::fgParticles);
+		processAnnotation(modelGroup->getAnnotation());
+		sendUnindentedElement(PSVIUni::fgModelGroup);
+	}
+}
+
+void PSVIWriterHandlers::processParticle(XSParticle* particle) {
+	if (particle == NULL) {
+		sendElementEmpty(PSVIUni::fgParticle);
+	} else {
+		sendIndentedElement(PSVIUni::fgParticle);
+		sendElementValueInt(PSVIUni::fgMinOccurs, particle->getMinOccurs());
+		if (particle->getMaxOccursUnbounded()) {
+			sendElementValue(PSVIUni::fgMaxOccurs, PSVIUni::fgUnbounded);
+		} else {
+			sendElementValueInt(PSVIUni::fgMaxOccurs,particle->getMaxOccurs());
+		}
+		sendIndentedElement(PSVIUni::fgTerm);
+		switch (particle->getTermType()) {
+            case XSParticle::TERM_ELEMENT:
+				processElementDeclarationOrRef(particle->getElementTerm());
+				break;
+            case XSParticle::TERM_MODELGROUP:
+				processModelGroup(particle->getModelGroupTerm());
+				break;
+            case XSParticle::TERM_WILDCARD:
+				processWildcard(particle->getWildcardTerm());
+                break;
+            default:
+                break;
+		}
+		sendUnindentedElement(PSVIUni::fgTerm);
+		sendUnindentedElement(PSVIUni::fgParticle);
+	}
+}
+
+void PSVIWriterHandlers::processAttributeWildcard(XSWildcard* wildcard) {
+	if (wildcard == NULL) {
+		sendElementEmpty(PSVIUni::fgAttributeWildcard);
+	} else {
+		sendIndentedElement(PSVIUni::fgAttributeWildcard);
+		processWildcard(wildcard);
+		sendUnindentedElement(PSVIUni::fgAttributeWildcard);
+	}
+}
+
+void PSVIWriterHandlers::processScope(XSComplexTypeDefinition* enclosingCTD, short scope) {
+	switch (scope) {
+		case XSConstants::SCOPE_ABSENT:
+			sendElementEmpty(PSVIUni::fgScope);
+			break;
+		case XSConstants::SCOPE_LOCAL:
+			sendIndentedElement(PSVIUni::fgScope);
+			sendReference(PSVIUni::fgComplexTypeDefinition, enclosingCTD);
+			sendUnindentedElement(PSVIUni::fgScope);
+			break;
+		case XSConstants::SCOPE_GLOBAL:
+			sendElementValue(PSVIUni::fgScope, PSVIUni::fgGlobal);
+	}
+}
+
+void PSVIWriterHandlers::processValueConstraint(XSConstants::VALUE_CONSTRAINT valueConstraintType, const XMLCh* constraintValue) {
+	if (valueConstraintType == XSConstants::VALUE_CONSTRAINT_NONE) {
+		sendElementEmpty(PSVIUni::fgValueConstraint);
+	} else {
+		sendIndentedElement(PSVIUni::fgValueConstraint);
+		sendElementValue(PSVIUni::fgVariety, translateValueConstraint(valueConstraintType));
+		sendElementValue(PSVIUni::fgValue, constraintValue);
+		sendUnindentedElement(PSVIUni::fgValueConstraint);
+	}
+}
+
+void PSVIWriterHandlers::processIdentityConstraintDefinition(XSNamedMap<XSIDCDefinition>* idConstraint) {
+	if (idConstraint == NULL) {
+		sendElementEmpty(PSVIUni::fgIdentityConstraintDefinitions);
+	} else {
+		sendIndentedElement(PSVIUni::fgIdentityConstraintDefinitions);
+		for (XMLSize_t i=0; i < idConstraint->getLength(); i++) {
+			XSIDCDefinition* constraint = idConstraint->item(i);
+			sendIndentedElementWithID(PSVIUni::fgIdentityConstraintDefinition, (XSObject*) constraint);
+			sendElementValue(PSVIUni::fgName, constraint->getName());
+			sendElementValue(PSVIUni::fgTargetNamespace, constraint->getNamespace());
+			sendElementValue(PSVIUni::fgIdentityConstraintCategory, translateIdConstraintCategory(constraint->getCategory()));
+			sendIndentedElement(PSVIUni::fgSelector);
+			processXPath(constraint->getSelectorStr());
+			sendUnindentedElement(PSVIUni::fgSelector);
+			processFields(constraint->getFieldStrs());
+			sendReference(PSVIUni::fgReferencedKey, constraint->getRefKey());
+			processAnnotations(constraint->getAnnotations());
+			sendUnindentedElement(PSVIUni::fgIdentityConstraintDefinition);
+		}
+		sendUnindentedElement(PSVIUni::fgIdentityConstraintDefinitions);
+	}
+}
+
+void PSVIWriterHandlers::processFields(StringList* fields) {
+	sendIndentedElement(PSVIUni::fgFields);
+	for (unsigned int i=0; i < fields->size(); i++) {
+		processXPath(fields->elementAt(i));
+	}
+	sendUnindentedElement(PSVIUni::fgFields);
+}
+
+void PSVIWriterHandlers::processXPath(const XMLCh* xpath) {
+	sendIndentedElement(PSVIUni::fgXpath);
+	sendElementValue(PSVIUni::fgXpath, xpath);
+	sendUnindentedElement(PSVIUni::fgXpath);
+}
+
+void PSVIWriterHandlers::processChildren() {
+	if (!fElementChildren->empty() && !fElementChildren->peek()) {
+		fElementChildren->pop();
+		sendIndentedElement(PSVIUni::fgChildren);
+		fElementChildren->push(true);
+	}
+}
+
+void PSVIWriterHandlers::processChildrenEnd() {
+	if (fElementChildren->pop()) {
+		sendUnindentedElement(PSVIUni::fgChildren);
+	} else {
+		writeEmpty(PSVIUni::fgChildren);
+	}
+}
+
+void PSVIWriterHandlers::processTypeDefinitionOrRef(const XMLCh* enclose, XSTypeDefinition* type) {
+	if (type==NULL) {
+		sendElementEmpty(enclose);
+	} else {
+		sendIndentedElement(enclose);
+		if (type->getAnonymous() && !(fDefinedIds->containsElement(type))) {
+			processTypeDefinition(type);
+		} else {
+			if (type->getTypeCategory() == XSTypeDefinition::SIMPLE_TYPE) {
+				sendReference(PSVIUni::fgSimpleTypeDefinition, type);
+			} else {
+				sendReference(PSVIUni::fgComplexTypeDefinition, type);
+			}
+		}
+		sendUnindentedElement(enclose);
+	}
+}
+
+void PSVIWriterHandlers::processSimpleTypeDefinitionOrRef(XSSimpleTypeDefinition* type) {
+	if (type==NULL) {
+		sendElementEmpty(PSVIUni::fgSimpleTypeDefinition);
+	} else {
+		if (type->getAnonymous() && !(fDefinedIds->containsElement(type))) {
+			processSimpleTypeDefinition(type);
+		} else {
+			sendReference(PSVIUni::fgSimpleTypeDefinition, type);
+		}
+	}
+}
+
+void PSVIWriterHandlers::processAttributeDeclarationOrRef(XSAttributeDeclaration* attrDecl) {
+	if (attrDecl==NULL) {
+		sendElementEmpty(PSVIUni::fgAttributeDeclaration);
+	} else {
+		if (fDefinedIds->containsElement(attrDecl) ||
+				(attrDecl->getScope() == XSConstants::SCOPE_GLOBAL)) {
+			sendReference(PSVIUni::fgAttributeDeclaration, attrDecl);
+		} else {
+			processAttributeDeclaration(attrDecl);
+		}
+	}
+}
+
+void PSVIWriterHandlers::processElementDeclarationOrRef(XSElementDeclaration* elemDecl) {
+	if (elemDecl==NULL) {
+		sendElementEmpty(PSVIUni::fgElementDeclaration);
+	} else {
+		if (fDefinedIds->containsElement(elemDecl) ||
+				(elemDecl->getScope() == XSConstants::SCOPE_GLOBAL)) {
+			sendReference(PSVIUni::fgElementDeclaration, elemDecl);
+		} else {
+			processElementDeclaration(elemDecl);
+		}
+	}
+}
+
+void PSVIWriterHandlers::processTypeDefinitionRef(const XMLCh* enclose, XSTypeDefinition* type) {
+	if (type==NULL) {
+		sendElementEmpty(enclose);
+	} else {
+		sendIndentedElement(enclose);
+		if (type->getTypeCategory() == XSTypeDefinition::SIMPLE_TYPE) {
+			sendReference(PSVIUni::fgSimpleTypeDefinition, type);
+		} else {
+			sendReference(PSVIUni::fgComplexTypeDefinition, type);
+		}
+		sendUnindentedElement(enclose);
+	}
+}
+
+void PSVIWriterHandlers::processAttributeDeclarationRef(const XMLCh* /* enclose */, XSAttributeDeclaration* attrDecl) {
+	if (attrDecl == NULL) {
+		sendElementEmpty(PSVIUni::fgDeclaration);
+	} else {
+		sendIndentedElement(PSVIUni::fgDeclaration);
+		sendReference(PSVIUni::fgAttributeDeclaration, attrDecl);
+		sendUnindentedElement(PSVIUni::fgDeclaration);
+	}
+}
+
+void PSVIWriterHandlers::processElementDeclarationRef(const XMLCh* enclose, XSElementDeclaration* elemDecl) {
+	if (elemDecl==NULL) {
+		sendElementEmpty(enclose);
+	} else {
+		sendIndentedElement(enclose);
+		sendReference(PSVIUni::fgElementDeclaration, elemDecl);
+		sendUnindentedElement(enclose);
+	}
+}
+
+void PSVIWriterHandlers::sendReference(const XMLCh* elementName, XSObject* obj) {
+	if (obj==NULL) {
+		sendElementEmpty(elementName);
+	} else {
+		fAttrList->removeAllElements();
+		fAttrList->addElement((XMLCh*)gRef);
+		fAttrList->addElement((XMLCh*)getIdName(obj));
+		fAttrList->addElement((XMLCh*)fgXsiNil);
+		fAttrList->addElement((XMLCh*)PSVIUni::fgTrue);
+		writeEmpty(elementName, fAttrList);
+	}
+}
+
+void PSVIWriterHandlers::sendElementEmpty(const XMLCh* const elementName) {
+	fAttrList->removeAllElements();
+	fAttrList->addElement((XMLCh*)fgXsiNil);
+	fAttrList->addElement((XMLCh*)PSVIUni::fgTrue);
+	writeEmpty(elementName, fAttrList);
+}
+
+void PSVIWriterHandlers::sendElementValueInt(const XMLCh* const elementName, int value) {
+	XMLString::binToText(value, fTempResult, 50, 10);
+	writeValue(elementName, fTempResult);
+}
+
+void PSVIWriterHandlers::sendElementValue(const XMLCh* const elementName, const XMLCh* const value) {
+	if (value==NULL || XMLString::equals(value, XMLUni::fgZeroLenString)) {
+		sendElementEmpty(elementName);
+	} else {
+		writeValue(elementName, value);
+	}
+}
+
+void PSVIWriterHandlers::sendElementValueList(const XMLCh* const elementName, const StringList* const values) {
+	if (values==NULL) {
+		sendElementEmpty(elementName);
+	} else {
+		writeValue(elementName, values);
+	}
+}
+
+void PSVIWriterHandlers::sendIndentedElement(const XMLCh* const elementName) {
+	writeOpen(elementName);
+	incIndent();
+}
+
+void PSVIWriterHandlers::sendIndentedElementWithID(const XMLCh* const elementName, XSObject* obj) {
+	fDefinedIds->addElement(obj);
+	fAttrList->removeAllElements();
+	fAttrList->addElement((XMLCh*)gId);
+	fAttrList->addElement((XMLCh*)getIdName(obj));
+	writeOpen(elementName, fAttrList);
+	incIndent();
+}
+
+void PSVIWriterHandlers::sendUnindentedElement(const XMLCh* const elementName) {
+	decIndent();
+	writeClose(elementName);
+}
+
+void PSVIWriterHandlers::writeOpen(const XMLCh* const elementName) {
+	*fFormatter
+		<< XMLFormatter::NoEscapes << fIndentChars << chOpenAngle << elementName << gAngleFeed;
+}
+
+void PSVIWriterHandlers::writeOpen(const XMLCh* const elementName, const StringList* const attrs) {
+	*fFormatter
+		<< XMLFormatter::NoEscapes << fIndentChars << chOpenAngle << elementName ;
+	for (unsigned int i=0; i < attrs->size(); i+=2 ) {
+		*fFormatter
+			<< XMLFormatter::NoEscapes << chSpace << attrs->elementAt(i) << gEqualsQuote
+			<< XMLFormatter::AttrEscapes << attrs->elementAt(i+1)
+			<< XMLFormatter::NoEscapes << chDoubleQuote ;
+	}
+	*fFormatter
+		<< XMLFormatter::NoEscapes << gAngleFeed;
+}
+
+void PSVIWriterHandlers::writeClose(const XMLCh* const elementName) {
+	*fFormatter
+		<< XMLFormatter::NoEscapes << fIndentChars << gAngleSlash << elementName << gAngleFeed;
+}
+
+void PSVIWriterHandlers::writeValue(const XMLCh* const elementName, const XMLCh* const value) {
+	*fFormatter
+		<< XMLFormatter::NoEscapes << fIndentChars << chOpenAngle << elementName << chCloseAngle
+		<< XMLFormatter::CharEscapes << value
+		<< XMLFormatter::NoEscapes << gAngleSlash << elementName <<	gAngleFeed ;
+}
+
+void PSVIWriterHandlers::writeValue(const XMLCh* const elementName, const StringList* const values) {
+	*fFormatter
+		<< XMLFormatter::NoEscapes << fIndentChars << chOpenAngle << elementName << chCloseAngle;
+	for (unsigned int i=0; i < values->size(); i++) {
+		*fFormatter
+			<< XMLFormatter::CharEscapes << values->elementAt(i) << chSpace;
+	}
+	*fFormatter
+		<< XMLFormatter::NoEscapes << gAngleSlash << elementName <<	gAngleFeed ;
+}
+
+void PSVIWriterHandlers::writeEmpty(const XMLCh* const elementName, const StringList* const attrs) {
+	*fFormatter
+		<< XMLFormatter::NoEscapes << fIndentChars << chOpenAngle << elementName ;
+	for (unsigned int i=0; i < attrs->size(); i+=2 ) {
+		*fFormatter
+			<< XMLFormatter::NoEscapes << chSpace << attrs->elementAt(i) << gEqualsQuote
+			<< XMLFormatter::AttrEscapes << attrs->elementAt(i+1)
+			<< XMLFormatter::NoEscapes << chDoubleQuote ;
+	}
+	*fFormatter
+		<< XMLFormatter::NoEscapes << gSlashAngleFeed ;
+}
+
+void PSVIWriterHandlers::writeEmpty(const XMLCh* const elementName) {
+	*fFormatter
+		<< XMLFormatter::NoEscapes << fIndentChars << chOpenAngle << elementName << gSlashAngleFeed ;
+}
+
+void PSVIWriterHandlers::writeString(const XMLCh* const string) {
+	*fFormatter
+		<< XMLFormatter::NoEscapes << fIndentChars << string;
+}
+
+const XMLCh* PSVIWriterHandlers::translateScope(XSConstants::SCOPE scope) {
+	switch (scope) {
+		case XSConstants::SCOPE_ABSENT :
+			return NULL;
+		case XSConstants::SCOPE_GLOBAL :
+			return PSVIUni::fgGlobal;
+		case XSConstants::SCOPE_LOCAL :
+			return PSVIUni::fgLocal;
+		default :
+			return PSVIUni::fgUnknown;
+	}
+}
+
+const XMLCh* PSVIWriterHandlers::translateValueConstraint(XSConstants::VALUE_CONSTRAINT constraintKind) {
+	switch (constraintKind) {
+		case XSConstants::VALUE_CONSTRAINT_DEFAULT :
+			return PSVIUni::fgDefault;
+		case XSConstants::VALUE_CONSTRAINT_FIXED :
+			return PSVIUni::fgVCFixed;
+		default :
+			return PSVIUni::fgUnknown;
+	}
+}
+
+const XMLCh* PSVIWriterHandlers::translateBlockOrFinal(short val) {
+	XMLString::copyString(fTempResult, XMLUni::fgZeroLenString);
+	if ((val & XSConstants::DERIVATION_EXTENSION) != 0) {
+		XMLString::catString(fTempResult, PSVIUni::fgExtension);
+	}
+	if ((val & XSConstants::DERIVATION_RESTRICTION) != 0) {
+		if (fTempResult && *fTempResult)
+			XMLString::catString(fTempResult, fgSpace);
+		XMLString::catString(fTempResult, PSVIUni::fgRestriction);
+	}
+	if ((val & XSConstants::DERIVATION_LIST) != 0) {
+		if (fTempResult && *fTempResult)
+			XMLString::catString(fTempResult, fgSpace);
+		XMLString::catString(fTempResult, PSVIUni::fgList);
+	}
+	if ((val & XSConstants::DERIVATION_UNION) != 0) {
+		if (fTempResult && *fTempResult)
+			XMLString::catString(fTempResult, fgSpace);
+		XMLString::catString(fTempResult, PSVIUni::fgUnion);
+	}
+	if ((val & XSConstants::DERIVATION_SUBSTITUTION) != 0) {
+		if (fTempResult && *fTempResult)
+			XMLString::catString(fTempResult, fgSpace);
+		XMLString::catString(fTempResult, PSVIUni::fgSubstitution);
+	}
+	return fTempResult;
+}
+
+const XMLCh* PSVIWriterHandlers::translateDerivationMethod(XSConstants::DERIVATION_TYPE derivation) {
+	switch (derivation) {
+		case XSConstants::DERIVATION_EXTENSION :
+			return PSVIUni::fgExtension;
+		case XSConstants::DERIVATION_LIST :
+			return PSVIUni::fgList;
+		case XSConstants::DERIVATION_RESTRICTION :
+			return PSVIUni::fgRestriction;
+		case XSConstants::DERIVATION_SUBSTITUTION :
+			return PSVIUni::fgSubstitution;
+		case XSConstants::DERIVATION_UNION :
+			return PSVIUni::fgUnion;
+		case XSConstants::DERIVATION_NONE :
+			return NULL;
+		default :
+			return PSVIUni::fgUnknown;
+	}
+}
+
+const XMLCh* PSVIWriterHandlers::translateProcessContents(XSWildcard::PROCESS_CONTENTS processContents) {
+	switch (processContents) {
+		case XSWildcard::PC_LAX :
+			return PSVIUni::fgLax;
+		case XSWildcard::PC_SKIP :
+			return PSVIUni::fgSkip;
+		case XSWildcard::PC_STRICT :
+			return PSVIUni::fgStrict;
+		default :
+			return PSVIUni::fgUnknown;
+	}
+}
+
+const XMLCh* PSVIWriterHandlers::translateCompositor(XSModelGroup::COMPOSITOR_TYPE compositor) {
+	switch (compositor) {
+		case XSModelGroup::COMPOSITOR_SEQUENCE :
+			return PSVIUni::fgSequence;
+		case XSModelGroup::COMPOSITOR_CHOICE :
+			return PSVIUni::fgChoice;
+		case XSModelGroup::COMPOSITOR_ALL :
+			return PSVIUni::fgAll;
+		default :
+			return PSVIUni::fgUnknown;
+	}
+}
+
+const XMLCh* PSVIWriterHandlers::translateValidity(PSVIItem::VALIDITY_STATE validity) {
+	switch (validity) {
+		case PSVIItem::VALIDITY_NOTKNOWN :
+			return PSVIUni::fgNotKnown;
+		case PSVIItem::VALIDITY_VALID :
+			return PSVIUni::fgValid;
+		case PSVIItem::VALIDITY_INVALID :
+			return PSVIUni::fgInvalid;
+		default :
+			return PSVIUni::fgUnknown;
+	}
+}
+
+const XMLCh* PSVIWriterHandlers::translateValidationAttempted(PSVIItem::ASSESSMENT_TYPE validation) {
+	switch (validation) {
+		case PSVIItem::VALIDATION_NONE :
+			return PSVIUni::fgNone;
+		case PSVIItem::VALIDATION_PARTIAL :
+			return PSVIUni::fgPartial;
+		case PSVIItem::VALIDATION_FULL :
+			return PSVIUni::fgFull;
+		default :
+			return PSVIUni::fgUnknown;
+	}
+}
+
+const XMLCh* PSVIWriterHandlers::translateIdConstraintCategory(XSIDCDefinition::IC_CATEGORY category) {
+	switch (category) {
+		case XSIDCDefinition::IC_KEY :
+			return PSVIUni::fgKey;
+		case XSIDCDefinition::IC_KEYREF :
+			return PSVIUni::fgKeyref;
+		case XSIDCDefinition::IC_UNIQUE :
+			return PSVIUni::fgUnique;
+		default :
+			return PSVIUni::fgUnknown;
+	}
+}
+
+const XMLCh* PSVIWriterHandlers::translateComplexContentType(XSComplexTypeDefinition::CONTENT_TYPE contentType) {
+	switch (contentType) {
+		case XSComplexTypeDefinition::CONTENTTYPE_ELEMENT :
+			return PSVIUni::fgElementOnly;
+		case XSComplexTypeDefinition::CONTENTTYPE_EMPTY :
+			return PSVIUni::fgEmpty;
+		case XSComplexTypeDefinition::CONTENTTYPE_MIXED :
+			return PSVIUni::fgMixed;
+		case XSComplexTypeDefinition::CONTENTTYPE_SIMPLE :
+			return PSVIUni::fgSimple;
+		default :
+			return PSVIUni::fgUnknown;
+	}
+}
+
+const XMLCh* PSVIWriterHandlers::translateSimpleTypeVariety(XSSimpleTypeDefinition::VARIETY variety) {
+	switch (variety) {
+		case XSSimpleTypeDefinition::VARIETY_LIST :
+			return PSVIUni::fgList;
+		case XSSimpleTypeDefinition::VARIETY_UNION :
+			return PSVIUni::fgUnion;
+		case XSSimpleTypeDefinition::VARIETY_ATOMIC :
+			return PSVIUni::fgAtomic;
+		case XSSimpleTypeDefinition::VARIETY_ABSENT :
+			return NULL;
+		default :
+			return PSVIUni::fgUnknown;
+	}
+}
+
+const XMLCh* PSVIWriterHandlers::translateOrderedFacet(XSSimpleTypeDefinition::ORDERING ordered) {
+	switch (ordered) {
+		case XSSimpleTypeDefinition::ORDERED_FALSE:
+			return PSVIUni::fgFalse;
+		case XSSimpleTypeDefinition::ORDERED_PARTIAL:
+			return PSVIUni::fgPartial;
+		case XSSimpleTypeDefinition::ORDERED_TOTAL:
+			return PSVIUni::fgTotal;
+		default :
+			return PSVIUni::fgUnknown;
+	}
+}
+
+const XMLCh* PSVIWriterHandlers::translateFacet(XSSimpleTypeDefinition::FACET facetKind) {
+	switch (facetKind) {
+		case XSSimpleTypeDefinition::FACET_WHITESPACE :
+			return PSVIUni::fgWhiteSpace;
+		case XSSimpleTypeDefinition::FACET_LENGTH :
+			return PSVIUni::fgLength;
+		case XSSimpleTypeDefinition::FACET_MINLENGTH :
+			return PSVIUni::fgMinLength;
+		case XSSimpleTypeDefinition::FACET_MAXLENGTH :
+			return PSVIUni::fgMaxLength;
+		case XSSimpleTypeDefinition::FACET_TOTALDIGITS :
+			return PSVIUni::fgTotalDigits;
+		case XSSimpleTypeDefinition::FACET_FRACTIONDIGITS :
+			return PSVIUni::fgFractionDigits;
+		case XSSimpleTypeDefinition::FACET_PATTERN :
+			return PSVIUni::fgPattern;
+		case XSSimpleTypeDefinition::FACET_ENUMERATION :
+			return PSVIUni::fgEnumeration;
+		case XSSimpleTypeDefinition::FACET_MAXINCLUSIVE :
+			return PSVIUni::fgMaxInclusive;
+		case XSSimpleTypeDefinition::FACET_MAXEXCLUSIVE :
+			return PSVIUni::fgMaxExclusive;
+		case XSSimpleTypeDefinition::FACET_MINEXCLUSIVE :
+			return PSVIUni::fgMinExclusive;
+		case XSSimpleTypeDefinition::FACET_MININCLUSIVE :
+			return PSVIUni::fgMinInclusive;
+		default :
+			return PSVIUni::fgUnknown;
+	}
+}
+
+const XMLCh* PSVIWriterHandlers::translateComponentType(XSConstants::COMPONENT_TYPE type) {
+	switch (type) {
+		case XSConstants::TYPE_DEFINITION :
+			return PSVIUni::fgType;
+		case XSConstants::ANNOTATION :
+			return PSVIUni::fgAnnot;
+		case XSConstants::ATTRIBUTE_DECLARATION :
+			return PSVIUni::fgAttr;
+		case XSConstants::ATTRIBUTE_GROUP_DEFINITION :
+			return PSVIUni::fgAg;
+		case XSConstants::ATTRIBUTE_USE :
+			return PSVIUni::fgAu;
+		case XSConstants::ELEMENT_DECLARATION :
+			return PSVIUni::fgElt;
+		case XSConstants::MODEL_GROUP_DEFINITION :
+			return PSVIUni::fgMg;
+		case XSConstants::NOTATION_DECLARATION :
+			return PSVIUni::fgNot;
+		case XSConstants::IDENTITY_CONSTRAINT :
+			return PSVIUni::fgIdc;
+		default :
+			return PSVIUni::fgUnknown;
+	}
+}
+
+const XMLCh* PSVIWriterHandlers::translateBool(bool flag) {
+	return (flag ? PSVIUni::fgTrue : PSVIUni::fgFalse);
+}
+
+XMLCh* PSVIWriterHandlers::createID(XSObject* obj) {
+	const XMLCh* objPrefix = fPrefixMap->get(obj->getNamespace());
+	XMLCh* result = new XMLCh[100];
+
+	if (XMLString::equals(obj->getNamespace(), PSVIUni::fgNamespaceXmlSchema)) {
+			XMLString::copyString(result, obj->getName());
+	} else {
+		const XMLCh period[] = { chPeriod, chNull };
+		XMLCh anonNum[6];
+		bool hasPrefix = objPrefix!=NULL && *objPrefix!=0;
+		if (hasPrefix) {
+			XMLString::copyString(result, objPrefix);
+			XMLString::catString(result, period);
+			XMLString::catString(result, translateComponentType(obj->getType()));
+		} else {
+			XMLString::copyString(result, translateComponentType(obj->getType()));
+		}
+		XMLString::catString(result, period);
+
+		if (obj->getType()==XSConstants::TYPE_DEFINITION && ((XSTypeDefinition*)obj)->getAnonymous()) {
+			const XMLCh anon[] = { chLatin_a, chLatin_n, chLatin_o, chLatin_n, chUnderscore, chNull };
+			XMLString::catString(result, anon);
+			XMLString::binToText(fAnonNum, anonNum, 5, 10);
+			XMLString::catString(result, anonNum);
+			fAnonNum++;
+		} else {
+			XMLString::catString(result, obj->getName());
+			if (!hasPrefix) {
+				XMLString::catString(result, period);
+				XMLString::binToText(fAnonNum, anonNum, 5, 10);
+				XMLString::catString(result, anonNum);
+				fAnonNum++;
+			}
+		}
+	}
+	fIdNames->addElement(result);
+	return result;
+}
+
+const XMLCh* PSVIWriterHandlers::getIdName(XSObject* obj) {
+	XMLCh* objLoc = new XMLCh[9];
+	XMLString::sizeToText((XMLSize_t)obj, objLoc, 8, 16);
+	XMLCh* idName = fIdMap->get(objLoc);
+	if (!idName) {
+		idName = createID(obj);
+		fIdMap->put(objLoc, idName);
+		fObjectLocations->addElement(objLoc);
+	} else {
+		delete objLoc;
+	}
+	return idName;
+}
+
+void PSVIWriterHandlers::incIndent() {
+    XMLCh tab[] = {chHTab, chNull};
+    if (fIndent >= fIndentCap) {
+        fIndentCap *= 2;
+        XMLCh* temp = (XMLCh*) XMLPlatformUtils::fgMemoryManager->allocate((fIndentCap+1)*sizeof(XMLCh));
+        XMLString::copyString(temp, fIndentChars);
+        XMLPlatformUtils::fgMemoryManager->deallocate(fIndentChars);
+        fIndentChars = temp;
+    }
+    XMLString::catString(fIndentChars, tab);
+    fIndent++;
+}
+
+void PSVIWriterHandlers::decIndent() {
+	fIndentChars[XMLString::stringLen(fIndentChars)-1] = chNull;
+	fIndent--;
+}
+
+/***
+ *    yyyy-mm-ddThh:mm:ss.sssss
+ ***/
+void PSVIWriterHandlers::formDateTime(XSValue* obj)
+{
+
+    char buffer[1024];
+    memset(buffer, 0, sizeof buffer);
+    sprintf(buffer, "%d-%d-%dT%d:%d:%f", obj->fData.fValue.f_datetime.f_year
+                                       , obj->fData.fValue.f_datetime.f_month
+                                       , obj->fData.fValue.f_datetime.f_day
+                                       , obj->fData.fValue.f_datetime.f_hour
+                                       , obj->fData.fValue.f_datetime.f_min
+                                       , obj->fData.fValue.f_datetime.f_second
+                                       + obj->fData.fValue.f_datetime.f_milisec);
+
+    XMLCh *value = XMLString::transcode(buffer);
+    ArrayJanitor<XMLCh> jan(value);
+    writeValue(gDataValue, value);
+}
+
+/***
+ *  <actualValue>
+ *       <dataType>unsignedShort</dataType>
+ *	     <dataValue>0</dataValue>
+ *	</actualValue>
+ ***/
+void  PSVIWriterHandlers::processActualValue(PSVIItem* item)
+{
+    if (!item) return;
+
+    XSValue* obj = item->getActualValue();
+
+    if (obj)
+    {
+        char buffer[1024];
+
+        writeString(gCommentStart);
+        incIndent();
+        writeOpen(gActualValue);
+        incIndent();
+
+        switch (obj->fData.f_datatype)
+        {
+        case XSValue::dt_boolean:
+            {
+                writeValue(gDataType, SchemaSymbols::fgDT_BOOLEAN);
+                writeValue(gDataValue, XMLUni::fgBooleanValueSpace[obj->fData.fValue.f_bool? 0: 1]);
+            }
+            break;
+        case XSValue::dt_decimal:
+            {
+                writeValue(gDataType, SchemaSymbols::fgDT_DECIMAL);
+                sprintf( buffer,"%f", obj->fData.fValue.f_decimal.f_dvalue);
+                XMLCh *value = XMLString::transcode(buffer);
+                ArrayJanitor<XMLCh> jan(value);
+                writeValue(gDataValue, value);
+            }
+            break;
+        case XSValue::dt_float:
+            {
+                writeValue(gDataType, SchemaSymbols::fgDT_FLOAT);
+                sprintf( buffer,"%f", obj->fData.fValue.f_float);
+                XMLCh *value = XMLString::transcode(buffer);
+                ArrayJanitor<XMLCh> jan(value);
+                writeValue(gDataValue, value);
+            }
+            break;
+        case XSValue::dt_double:
+            {
+                writeValue(gDataType, SchemaSymbols::fgDT_DOUBLE);
+                sprintf( buffer,"%f", obj->fData.fValue.f_double);
+                XMLCh *value = XMLString::transcode(buffer);
+                ArrayJanitor<XMLCh> jan(value);
+                writeValue(gDataValue, value);
+            }
+            break;
+        case XSValue::dt_duration:
+            {
+                writeValue(gDataType, SchemaSymbols::fgDT_DURATION);
+                formDateTime(obj);
+            }
+            break;
+        case XSValue::dt_dateTime:
+            {
+                writeValue(gDataType, SchemaSymbols::fgDT_DATETIME);
+                formDateTime(obj);
+            }
+            break;
+        case XSValue::dt_time:
+            {
+                writeValue(gDataType, SchemaSymbols::fgDT_TIME);
+                formDateTime(obj);
+            }
+            break;
+        case XSValue::dt_date:
+            {
+                writeValue(gDataType, SchemaSymbols::fgDT_DATE);
+                formDateTime(obj);
+            }
+            break;
+        case XSValue::dt_gYearMonth:
+            {
+                writeValue(gDataType, SchemaSymbols::fgDT_YEARMONTH);
+                formDateTime(obj);
+            }
+            break;
+        case XSValue::dt_gYear:
+            {
+                writeValue(gDataType, SchemaSymbols::fgDT_YEAR);
+                formDateTime(obj);
+            }
+            break;
+        case XSValue::dt_gMonthDay:
+            {
+                writeValue(gDataType, SchemaSymbols::fgDT_MONTHDAY);
+                formDateTime(obj);
+            }
+            break;
+        case XSValue::dt_gDay:
+            {
+                writeValue(gDataType, SchemaSymbols::fgDT_DAY);
+                formDateTime(obj);
+            }
+            break;
+        case XSValue::dt_gMonth:
+            {
+                writeValue(gDataType, SchemaSymbols::fgDT_MONTH);
+                formDateTime(obj);
+            }
+            break;
+        case XSValue::dt_hexBinary:
+            {
+                writeValue(gDataType, SchemaSymbols::fgDT_HEXBINARY);
+                writeValue(gDataValue, obj->fData.fValue.f_strVal);
+            }
+            break;
+        case XSValue::dt_base64Binary:
+            {
+                writeValue(gDataType, SchemaSymbols::fgDT_BASE64BINARY);
+                writeValue(gDataValue, obj->fData.fValue.f_strVal);
+            }
+            break;
+
+        case XSValue::dt_integer:
+            {
+                writeValue(gDataType, SchemaSymbols::fgDT_INTEGER);
+                sprintf( buffer,"%ld", obj->fData.fValue.f_long);
+                XMLCh *value = XMLString::transcode(buffer);
+                ArrayJanitor<XMLCh> jan(value);
+                writeValue(gDataValue, value);
+            }
+            break;
+        case XSValue::dt_nonPositiveInteger:
+            {
+                writeValue(gDataType, SchemaSymbols::fgDT_NONPOSITIVEINTEGER);
+                sprintf( buffer,"%ld", obj->fData.fValue.f_long);
+                XMLCh *value = XMLString::transcode(buffer);
+                ArrayJanitor<XMLCh> jan(value);
+                writeValue(gDataValue, value);
+            }
+            break;
+        case XSValue::dt_negativeInteger:
+            {
+                writeValue(gDataType, SchemaSymbols::fgDT_NEGATIVEINTEGER);
+                sprintf( buffer,"%ld", obj->fData.fValue.f_long);
+                XMLCh *value = XMLString::transcode(buffer);
+                ArrayJanitor<XMLCh> jan(value);
+                writeValue(gDataValue, value);
+            }
+            break;
+        case XSValue::dt_long:
+            {
+                writeValue(gDataType, SchemaSymbols::fgDT_LONG);
+                sprintf( buffer,"%ld", obj->fData.fValue.f_long);
+                XMLCh *value = XMLString::transcode(buffer);
+                ArrayJanitor<XMLCh> jan(value);
+                writeValue(gDataValue, value);
+            }
+            break;
+        case XSValue::dt_int:
+            {
+                writeValue(gDataType, SchemaSymbols::fgDT_INT);
+                sprintf( buffer,"%d", obj->fData.fValue.f_int);
+                XMLCh *value = XMLString::transcode(buffer);
+                ArrayJanitor<XMLCh> jan(value);
+                writeValue(gDataValue, value);
+            }
+            break;
+        case XSValue::dt_short:
+            {
+                writeValue(gDataType, SchemaSymbols::fgDT_SHORT);
+                sprintf( buffer,"%d", obj->fData.fValue.f_short);
+                XMLCh *value = XMLString::transcode(buffer);
+                ArrayJanitor<XMLCh> jan(value);
+                writeValue(gDataValue, value);
+            }
+            break;
+        case XSValue::dt_byte:
+            {
+                writeValue(gDataType, SchemaSymbols::fgDT_BYTE);
+                sprintf( buffer,"%d", obj->fData.fValue.f_char);
+                XMLCh *value = XMLString::transcode(buffer);
+                ArrayJanitor<XMLCh> jan(value);
+                writeValue(gDataValue, value);
+            }
+            break;
+        case XSValue::dt_nonNegativeInteger:
+            {
+                writeValue(gDataType, SchemaSymbols::fgDT_NONNEGATIVEINTEGER);
+                sprintf( buffer,"%ld", obj->fData.fValue.f_long);
+                XMLCh *value = XMLString::transcode(buffer);
+                ArrayJanitor<XMLCh> jan(value);
+                writeValue(gDataValue, value);
+            }
+            break;
+        case XSValue::dt_unsignedLong:
+            {
+                writeValue(gDataType, SchemaSymbols::fgDT_ULONG);
+                sprintf( buffer,"%lu", obj->fData.fValue.f_ulong);
+                XMLCh *value = XMLString::transcode(buffer);
+                ArrayJanitor<XMLCh> jan(value);
+                writeValue(gDataValue, value);
+            }
+            break;
+        case XSValue::dt_unsignedInt:
+            {
+                writeValue(gDataType, SchemaSymbols::fgDT_UINT);
+                sprintf( buffer,"%u", obj->fData.fValue.f_uint);
+                XMLCh *value = XMLString::transcode(buffer);
+                ArrayJanitor<XMLCh> jan(value);
+                writeValue(gDataValue, value);
+            }
+            break;
+        case XSValue::dt_unsignedShort:
+            {
+                writeValue(gDataType, SchemaSymbols::fgDT_USHORT);
+                sprintf( buffer,"%u", obj->fData.fValue.f_ushort);
+                XMLCh *value = XMLString::transcode(buffer);
+                ArrayJanitor<XMLCh> jan(value);
+                writeValue(gDataValue, value);
+            }
+            break;
+        case XSValue::dt_unsignedByte:
+            {
+                writeValue(gDataType, SchemaSymbols::fgDT_UBYTE);
+                sprintf( buffer,"%u", obj->fData.fValue.f_uchar);
+                XMLCh *value = XMLString::transcode(buffer);
+                ArrayJanitor<XMLCh> jan(value);
+                writeValue(gDataValue, value);
+            }
+            break;
+        case XSValue::dt_positiveInteger:
+            {
+                writeValue(gDataType, SchemaSymbols::fgDT_POSITIVEINTEGER);
+                sprintf( buffer,"%ld", obj->fData.fValue.f_long);
+                XMLCh *value = XMLString::transcode(buffer);
+                ArrayJanitor<XMLCh> jan(value);
+                writeValue(gDataValue, value);
+            }
+            break;
+        case XSValue::dt_string:
+        case XSValue::dt_anyURI:
+        case XSValue::dt_QName:
+        case XSValue::dt_NOTATION:
+        case XSValue::dt_normalizedString:
+        case XSValue::dt_token:
+        case XSValue::dt_language:
+        case XSValue::dt_NMTOKEN:
+        case XSValue::dt_NMTOKENS:
+        case XSValue::dt_Name:
+        case XSValue::dt_NCName:
+        case XSValue::dt_ID:
+        case XSValue::dt_IDREF:
+        case XSValue::dt_IDREFS:
+        case XSValue::dt_ENTITY:
+        case XSValue::dt_ENTITIES:
+            break; //we shouldn't see them
+        default:
+            break;
+        }
+
+        decIndent();
+        writeClose(gActualValue);
+        decIndent();
+        writeString(gCommentEnd);
+
+    	delete obj;
+ 	}
+}
+
+void PSVIAdvancedHandler::XMLDecl(const XMLCh* const versionStr, const XMLCh* const encodingStr, const XMLCh* const standaloneStr, const XMLCh* const autoEncodingStr)
+{
+    if (encodingStr && *encodingStr)
+        fWriterHandler->sendElementValue(PSVIUni::fgCharacterEncodingScheme, encodingStr);
+    else
+        fWriterHandler->sendElementValue(PSVIUni::fgCharacterEncodingScheme, autoEncodingStr);
+    if (standaloneStr && *standaloneStr)
+        fWriterHandler->sendElementValue(PSVIUni::fgStandalone, standaloneStr);
+	else
+        fWriterHandler->sendElementEmpty(PSVIUni::fgStandalone);
+	fWriterHandler->sendElementValue(PSVIUni::fgVersion, versionStr);
+}

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/PSVIWriter/PSVIWriterHandlers.hpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/PSVIWriter/PSVIWriterHandlers.hpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/PSVIWriter/PSVIWriterHandlers.hpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,308 @@
+/*
+ * 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.
+ */
+
+#ifndef PSVIWRITERHANDLER_HPP
+#define PSVIWRITERHANDLER_HPP
+
+// ---------------------------------------------------------------------------
+//  Includes
+// ---------------------------------------------------------------------------
+#include <xercesc/sax2/Attributes.hpp>
+#include <xercesc/sax2/DefaultHandler.hpp>
+#include <xercesc/framework/psvi/XSConstants.hpp>
+#include <xercesc/framework/psvi/PSVIHandler.hpp>
+#include <xercesc/framework/psvi/PSVIAttribute.hpp>
+#include <xercesc/framework/psvi/PSVIAttributeList.hpp>
+#include <xercesc/framework/psvi/PSVIElement.hpp>
+#include <xercesc/framework/psvi/PSVIItem.hpp>
+#include <xercesc/framework/psvi/XSAnnotation.hpp>
+#include <xercesc/framework/psvi/XSAttributeDeclaration.hpp>
+#include <xercesc/framework/psvi/XSAttributeGroupDefinition.hpp>
+#include <xercesc/framework/psvi/XSAttributeUse.hpp>
+#include <xercesc/framework/psvi/XSComplexTypeDefinition.hpp>
+#include <xercesc/framework/psvi/XSElementDeclaration.hpp>
+#include <xercesc/framework/psvi/XSFacet.hpp>
+#include <xercesc/framework/psvi/XSIDCDefinition.hpp>
+#include <xercesc/framework/psvi/XSModel.hpp>
+#include <xercesc/framework/psvi/XSModelGroup.hpp>
+#include <xercesc/framework/psvi/XSModelGroupDefinition.hpp>
+#include <xercesc/framework/psvi/XSMultiValueFacet.hpp>
+#include <xercesc/framework/psvi/XSNamedMap.hpp>
+#include <xercesc/framework/psvi/XSNamespaceItem.hpp>
+#include <xercesc/framework/psvi/XSNotationDeclaration.hpp>
+#include <xercesc/framework/psvi/XSParticle.hpp>
+#include <xercesc/framework/psvi/XSSimpleTypeDefinition.hpp>
+#include <xercesc/framework/psvi/XSTypeDefinition.hpp>
+#include <xercesc/framework/psvi/XSWildcard.hpp>
+#include <xercesc/framework/XMLFormatter.hpp>
+#include <xercesc/framework/XMLDocumentHandler.hpp>
+#include <xercesc/dom/DOMElement.hpp>
+#include <xercesc/dom/DOMNamedNodeMap.hpp>
+#include <xercesc/util/ValueStackOf.hpp>
+#include <xercesc/util/ValueVectorOf.hpp>
+#include <xercesc/util/XMLEntityResolver.hpp>
+#include <xercesc/util/XMLResourceIdentifier.hpp>
+#include <stdlib.h>
+#include <string.h>
+
+XERCES_CPP_NAMESPACE_USE
+
+
+class AttrInfo {
+public:
+	AttrInfo(const XMLCh* pUri, const XMLCh* pName, const XMLCh* pType, const XMLCh* pValue) {
+		uri = XMLString::replicate(pUri);
+		name = XMLString::replicate(pName);
+		type = XMLString::replicate(pType);
+		value = XMLString::replicate(pValue);
+	}
+
+	~AttrInfo() {
+		XMLString::release((XMLCh**)&uri);
+		XMLString::release((XMLCh**)&name);
+		XMLString::release((XMLCh**)&type);
+		XMLString::release((XMLCh**)&value);
+	}
+
+	const XMLCh* getUri() const {
+		return uri;
+	}
+
+	const XMLCh* getLocalName() const {
+		return name;
+	}
+
+	const XMLCh* getType() const {
+		return type;
+	}
+
+	const XMLCh* getValue() const {
+		return value;
+	}
+
+private:
+	const XMLCh* uri;
+	const XMLCh* name;
+	const XMLCh* type;
+	const XMLCh* value;
+};
+
+class PSVIWriterHandlers : public PSVIHandler, public DefaultHandler, public XMLEntityResolver {
+public:
+    // -----------------------------------------------------------------------
+    //  Constructors and Destructor
+    // -----------------------------------------------------------------------
+    PSVIWriterHandlers(XMLFormatter* outputFormatter, XMLFormatter* errorFormatter = NULL);
+    ~PSVIWriterHandlers();
+
+    friend class PSVIAdvancedHandler;
+    // -----------------------------------------------------------------------
+    //  Convenience Utility
+    // -----------------------------------------------------------------------
+	void resetPSVIFormatter(XMLFormatter* outputFormatter);
+    void resetDocument();
+
+    // -----------------------------------------------------------------------
+    //  Handlers for the SAX ContentHandler interface
+    // -----------------------------------------------------------------------
+    void startElement(const XMLCh* const uri, const XMLCh* const localname, const XMLCh* const qname, const Attributes& attrs);
+    void endElement(const XMLCh* const uri, const XMLCh* const localname, const XMLCh* const qname);
+    void startDocument();
+    void endDocument();
+    void characters(const XMLCh* const chars, const XMLSize_t length);
+    void ignorableWhitespace(const XMLCh* const chars, const XMLSize_t length);
+    void comment(const XMLCh* const chars, const XMLSize_t length);
+    void processingInstruction(const XMLCh* const target, const XMLCh* const data);
+    void startPrefixMapping(const XMLCh* const prefix, const XMLCh* const uri);
+    void endPrefixMapping(const XMLCh* const prefix);
+    InputSource* resolveEntity(XMLResourceIdentifier* resourceIdentifier);
+    InputSource* resolveEntity(const XMLCh* const publicId, const XMLCh* const systemId);
+
+    // -----------------------------------------------------------------------
+    //  Handlers for the SAX ErrorHandler interface
+    // -----------------------------------------------------------------------
+	void warning(const SAXParseException& exc);
+    void error(const SAXParseException& exc);
+    void fatalError(const SAXParseException& exc);
+    void resetErrors();
+
+    // -----------------------------------------------------------------------
+    //  Handlers for the PSVIHandler interface
+    // -----------------------------------------------------------------------
+
+	void handleAttributesPSVI( const XMLCh* const localName,
+								const XMLCh* const uri,
+								PSVIAttributeList* psviAttributes );
+	void handleElementPSVI(	const XMLCh* const localName,
+                                const XMLCh* const uri,
+                                PSVIElement* elementInfo );
+	void handlePartialElementPSVI( const XMLCh* const localName,
+                                   const XMLCh* const uri,
+                                   PSVIElement* elementInfo );
+private:
+    // -----------------------------------------------------------------------
+    //  Private methods
+    // -----------------------------------------------------------------------
+
+    void processAttributes(PSVIAttributeList* psviAttributes, const RefVectorOf<AttrInfo>* attributesInfo);
+    void processNamespaceAttributes(PSVIAttributeList* psviAttributes, const RefVectorOf<AttrInfo>* attributes);
+    void processAttributePSVI(PSVIAttribute* attribute);
+    void processInScopeNamespaces();
+    void processActualValue(PSVIItem*);
+    void formDateTime(XSValue*);
+
+    void processSchemaInformation(XSModel* model);
+    void processNamespaceItem(XSNamespaceItem* namespaceItem);
+    void processSchemaComponents(XSNamespaceItem* namespaceItem);
+    void processSchemaDocuments(XSNamespaceItem* namespaceItem);
+    void processSchemaAnnotations(XSAnnotationList* annotations);
+    void processSchemaErrorCode(StringList* errors);
+
+    void processTypeDefinition(XSTypeDefinition* type);
+    void processComplexTypeDefinition(XSComplexTypeDefinition* complexType);
+    void processSimpleTypeDefinition(XSSimpleTypeDefinition* simpleType);
+    void processModelGroupDefinition(XSModelGroupDefinition* modelGroup);
+    void processAttributeGroupDefinition(XSAttributeGroupDefinition* attributeGroup);
+
+    void processElementDeclaration(XSElementDeclaration* element);
+    void processAttributeDeclaration(XSAttributeDeclaration* attribute);
+    void processNotationDeclaration(XSNotationDeclaration* notation);
+
+    void processAnnotations(XSAnnotationList* annotations);
+    void processAttributeUses(XSAttributeUseList* attributeUses);
+    void processFacets(XSFacetList* facets, XSMultiValueFacetList* multiFacets);
+    void processFundamentalFacets(XSSimpleTypeDefinition* facets);
+    void processMemberTypeDefinitions(XSSimpleTypeDefinitionList* memberTypes);
+
+    void processAnnotation(XSAnnotation* annotation);
+    void processDOMElement(const XMLCh* const encloseName, DOMElement* rootElem, const XMLCh* const elementName);
+    void processDOMAttributes(DOMNamedNodeMap* attrs);
+    void processWildcard(XSWildcard* wildcard);
+    void processModelGroup(XSModelGroup* modelGroup);
+    void processParticle(XSParticle* particle);
+
+    void processAttributeWildcard(XSWildcard* wildcard);
+    void processScope(XSComplexTypeDefinition* enclosingCTD, short scope);
+    void processValueConstraint(XSConstants::VALUE_CONSTRAINT ConstraintType, const XMLCh* constraintValue);
+
+    void processIdentityConstraintDefinition(XSNamedMap<XSIDCDefinition>* identityConstraint);
+    void processFields(StringList* fields);
+    void processXPath(const XMLCh* xpath);
+
+    void processChildren();
+    void processChildrenEnd();
+
+    void processTypeDefinitionOrRef(const XMLCh* enclose, XSTypeDefinition* type);
+	void processSimpleTypeDefinitionOrRef(XSSimpleTypeDefinition* type);
+    void processAttributeDeclarationOrRef(XSAttributeDeclaration* attrDecl);
+    void processElementDeclarationOrRef(XSElementDeclaration* elemDecl);
+	void processTypeDefinitionRef(const XMLCh* enclose, XSTypeDefinition* type);
+    void processAttributeDeclarationRef(const XMLCh* enclose, XSAttributeDeclaration* attrDecl);
+    void processElementDeclarationRef(const XMLCh* enclose, XSElementDeclaration* elemDecl);
+    void sendReference(const XMLCh* elementName, XSObject* obj);
+
+    void sendElementEmpty(const XMLCh* const elementName);
+	void sendElementValueInt(const XMLCh* const elementName, int value);
+    void sendElementValue(const XMLCh* const elementName, const XMLCh* const value);
+    void sendElementValueList(const XMLCh* const elementName, const StringList* const values);
+
+	void sendIndentedElement(const XMLCh* const elementName);
+    void sendIndentedElementWithID(const XMLCh* const elementName, XSObject* obj);	//adds the ID to the attribute list before sending
+    void sendUnindentedElement(const XMLCh* const elementName);
+
+    void writeOpen(const XMLCh* const elementName);
+	void writeOpen(const XMLCh* const elementName, const StringList* const attrs);
+	void writeClose(const XMLCh* const elementName);
+	void writeValue(const XMLCh* const elementName, const XMLCh* const value);
+	void writeValue(const XMLCh* const elementName, const StringList* const values);
+	void writeEmpty(const XMLCh* const elementName, const StringList* const attrs);
+	void writeEmpty(const XMLCh* const elementName);
+    void writeString(const XMLCh* const string);
+
+    const XMLCh* translateScope(XSConstants::SCOPE scope);
+    const XMLCh* translateValueConstraint(XSConstants::VALUE_CONSTRAINT constraintKind);
+    const XMLCh* translateBlockOrFinal(short val);
+    const XMLCh* translateDerivationMethod(XSConstants::DERIVATION_TYPE derivation);
+    const XMLCh* translateProcessContents(XSWildcard::PROCESS_CONTENTS processContents);
+    const XMLCh* translateCompositor(XSModelGroup::COMPOSITOR_TYPE compositor);
+    const XMLCh* translateValidity(PSVIItem::VALIDITY_STATE validity);
+    const XMLCh* translateValidationAttempted(PSVIItem::ASSESSMENT_TYPE validation);
+    const XMLCh* translateIdConstraintCategory(XSIDCDefinition::IC_CATEGORY category);
+    const XMLCh* translateComplexContentType(XSComplexTypeDefinition::CONTENT_TYPE contentType);
+    const XMLCh* translateSimpleTypeVariety(XSSimpleTypeDefinition::VARIETY variety);
+    const XMLCh* translateOrderedFacet(XSSimpleTypeDefinition::ORDERING ordered);
+    const XMLCh* translateFacet(XSSimpleTypeDefinition::FACET facetKind);
+    const XMLCh* translateComponentType(XSConstants::COMPONENT_TYPE type);
+    const XMLCh* translateBool(bool flag);
+
+    XMLCh* createID(XSObject* obj);
+    const XMLCh* getIdName(XSObject* obj);
+    void incIndent();
+    void decIndent();
+
+protected:
+	XMLFormatter* fFormatter;
+	XMLFormatter* fErrorFormatter;
+
+	StringList* fAttrList;
+    XMLCh* fTempResult;
+    XMLCh* fIndentChars;
+    XMLCh* fBaseUri;
+
+    unsigned int fIndent;
+    unsigned int fIndentCap;
+    unsigned int fAnonNum;
+
+	RefHashTableOf<XMLCh>* fIdMap;
+    RefVectorOf<XSObject>* fDefinedIds;
+    RefArrayVectorOf<XMLCh>* fIdNames;
+    RefArrayVectorOf<XMLCh>* fObjectLocations;
+
+	RefHashTableOf<XMLCh>* fPrefixMap;
+    RefArrayVectorOf<XMLCh>* fNamespaces;
+
+	ValueVectorOf<XMLSize_t>* fNSAttributes;  //REVISIT  dont need if NSAttrs in different object
+	ValueStackOf<bool>* fElementChildren;
+
+	RefVectorOf<AttrInfo>* fAttributesInfo;
+};
+
+class PSVIAdvancedHandler: public XMLDocumentHandler {
+public:
+    PSVIAdvancedHandler(PSVIWriterHandlers* writerHandler) : XMLDocumentHandler(), fWriterHandler(writerHandler) {}
+    ~PSVIAdvancedHandler() {}
+    void docCharacters(const XMLCh* const, const XMLSize_t, const bool) {}
+    void docComment(const XMLCh* const) {}
+    void docPI(const XMLCh* const, const XMLCh* const) {}
+    void endDocument() {}
+    void endElement(const XMLElementDecl&, const unsigned int, const bool, const XMLCh* const) {}
+    void endEntityReference(const   XMLEntityDecl&) {}
+
+    void ignorableWhitespace(const XMLCh* const, const XMLSize_t, const bool) {}
+
+    void resetDocument() {}
+    void startDocument() {}
+    void startElement(const XMLElementDecl&, const unsigned int, const XMLCh* const, const RefVectorOf<XMLAttr>&
+                     ,const XMLSize_t, const bool, const bool) {}
+    void startEntityReference(const XMLEntityDecl&) {};
+
+    void XMLDecl(const XMLCh* const versionStr, const XMLCh* const encodingStr, const XMLCh* const standaloneStr, const XMLCh* const autoEncodingStr);
+private:
+    PSVIWriterHandlers* fWriterHandler;
+};
+
+#endif

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/Redirect/Redirect.cpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/Redirect/Redirect.cpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/Redirect/Redirect.cpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,164 @@
+/*
+ * 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.
+ */
+
+
+/**
+ *
+ * This simplistic sample illustrates how an XML application can use
+ * the SAX entityResolver handler to provide customized handling for
+ * external entities.
+ *
+ * It registers an entity resolver with the parser. When ever the parser
+ * comes across an external entity, like a reference to an external DTD
+ * file, it calls the 'resolveEntity()' callback. This callback in this
+ * sample checks to see if the external entity to be resolved is the file
+ * 'personal.dtd'.
+ *
+ * If it is then, it redirects the input stream to the file 'redirect.dtd',
+ * which is then read instead of 'personal.dtd'.
+ *
+ * If the external entity to be resolved was not the file 'personal.dtd', the
+ * callback returns NULL indicating that do the default behaviour which is
+ * to read the contents of 'personal.dtd'.
+ *
+ * $Id: Redirect.cpp 5336 2010-10-26 22:52:27Z brucedechant $
+ */
+
+
+// ---------------------------------------------------------------------------
+//  Includes
+// ---------------------------------------------------------------------------
+#include <xercesc/parsers/SAXParser.hpp>
+#include "Redirect.hpp"
+#include <xercesc/util/OutOfMemoryException.hpp>
+
+// ---------------------------------------------------------------------------
+//  Local helper methods
+// ---------------------------------------------------------------------------
+void usage()
+{
+    XERCES_STD_QUALIFIER 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;
+}
+
+
+// ---------------------------------------------------------------------------
+//  Program entry point
+// ---------------------------------------------------------------------------
+int main(int argc, char* args[])
+{
+    // Initialize the XML4C system
+    try
+    {
+         XMLPlatformUtils::Initialize();
+    }
+    catch (const XMLException& toCatch)
+    {
+        XERCES_STD_QUALIFIER cerr << "Error during initialization! Message:\n"
+             << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl;
+        return 1;
+    }
+
+    // We only have one parameter, which is the file to process
+    // We only have one required parameter, which is the file to process
+    if ((argc != 2) || (*(args[1]) == '-'))
+    {
+        usage();
+        XMLPlatformUtils::Terminate();
+        return 1;
+    }
+
+    const char*              xmlFile = args[1];
+
+    //
+    //  Create a SAX parser object. Then, according to what we were told on
+    //  the command line, set it to validate or not.
+    //
+    SAXParser* parser = new SAXParser;
+
+    //
+    //  Create our SAX handler object and install it on the parser, as the
+    //  document, entity and error handlers.
+    //
+    RedirectHandlers handler;
+    parser->setDocumentHandler(&handler);
+    parser->setErrorHandler(&handler);
+    //Use the new XML Entity Resolver
+    //parser->setEntityResolver(&handler);
+    parser->setXMLEntityResolver(&handler);    
+
+    //
+    //  Get the starting time and kick off the parse of the indicated file.
+    //  Catch any exceptions that might propogate out of it.
+    //
+    unsigned long duration;
+    int errorCount = 0;
+    int errorCode = 0;
+    try
+    {
+        const unsigned long startMillis = XMLPlatformUtils::getCurrentMillis();
+        parser->parse(xmlFile);
+        const unsigned long endMillis = XMLPlatformUtils::getCurrentMillis();
+        duration = endMillis - startMillis;
+        errorCount = parser->getErrorCount();
+    }
+    catch (const OutOfMemoryException&)
+    {
+        XERCES_STD_QUALIFIER cerr << "OutOfMemoryException" << XERCES_STD_QUALIFIER endl;
+        errorCode = 5;
+    }
+    catch (const XMLException& e)
+    {
+        XERCES_STD_QUALIFIER cerr << "\nError during parsing: '" << xmlFile << "'\n"
+                << "Exception message is:  \n"
+                << StrX(e.getMessage()) << "\n" << XERCES_STD_QUALIFIER endl;
+        errorCode = 4;
+    }
+
+    if(errorCode) {
+        XMLPlatformUtils::Terminate();
+        return errorCode;
+    }
+
+    // Print out the stats that we collected and time taken.
+    if (!errorCount) {
+        XERCES_STD_QUALIFIER cout << xmlFile << ": " << duration << " ms ("
+             << handler.getElementCount() << " elems, "
+             << handler.getAttrCount() << " attrs, "
+             << handler.getSpaceCount() << " spaces, "
+             << handler.getCharacterCount() << " chars)" << XERCES_STD_QUALIFIER endl;
+    }
+
+    //
+    //  Delete the parser itself.  Must be done prior to calling Terminate, below.
+    //
+    delete parser;
+
+    XMLPlatformUtils::Terminate();
+
+    if (errorCount > 0)
+        return 4;
+    else
+        return 0;
+}
+

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/Redirect/Redirect.hpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/Redirect/Redirect.hpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/Redirect/Redirect.hpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,81 @@
+/*
+ * 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.
+ */
+
+/*
+ * $Id: Redirect.hpp 5336 2010-10-26 22:52:27Z brucedechant $
+ */
+
+
+// ---------------------------------------------------------------------------
+//  Includes for all the program files to see
+// ---------------------------------------------------------------------------
+#include <stdlib.h>
+#include <string.h>
+#if defined(XERCES_NEW_IOSTREAMS)
+#include <iostream>
+#else
+#include <iostream.h>
+#endif
+#include <xercesc/util/PlatformUtils.hpp>
+#include "RedirectHandlers.hpp"
+
+
+// ---------------------------------------------------------------------------
+//  This is a simple class that lets us do easy (though not terribly efficient)
+//  trancoding of XMLCh data to local code page for display.
+// ---------------------------------------------------------------------------
+class StrX
+{
+public :
+    // -----------------------------------------------------------------------
+    //  Constructors and Destructor
+    // -----------------------------------------------------------------------
+    StrX(const XMLCh* const toTranscode)
+    {
+        // Call the private transcoding method
+        fLocalForm = XMLString::transcode(toTranscode);
+    }
+
+    ~StrX()
+    {
+        XMLString::release(&fLocalForm);
+    }
+
+    // -----------------------------------------------------------------------
+    //  Getter methods
+    // -----------------------------------------------------------------------
+    const char* localForm() const
+    {
+        return fLocalForm;
+    }
+
+
+private :
+    // -----------------------------------------------------------------------
+    //  Private data members
+    //
+    //  fLocalForm
+    //      This is the local code page form of the string.
+    // -----------------------------------------------------------------------
+    char*   fLocalForm;
+};
+
+inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump)
+{
+    target << toDump.localForm();
+    return target;
+}

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/Redirect/RedirectHandlers.cpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/Redirect/RedirectHandlers.cpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/Redirect/RedirectHandlers.cpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,167 @@
+/*
+ * 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.
+ */
+
+/*
+ * $Id: RedirectHandlers.cpp 5336 2010-10-26 22:52:27Z brucedechant $
+ */
+
+
+
+// ---------------------------------------------------------------------------
+//  Includes
+// ---------------------------------------------------------------------------
+#include <xercesc/util/XMLUniDefs.hpp>
+#include <xercesc/util/XMLUni.hpp>
+#include <xercesc/sax/AttributeList.hpp>
+#include <xercesc/sax/SAXParseException.hpp>
+#include <xercesc/sax/SAXException.hpp>
+#include <xercesc/framework/LocalFileInputSource.hpp>
+#include "Redirect.hpp"
+#include <string.h>
+
+
+// ---------------------------------------------------------------------------
+//  Local constant data
+//
+//  gFileToTrap
+//      This is the file that we are looking for in the entity handler, to
+//      redirect to another file.
+//
+//  gRedirectToFile
+//      This is the file that we are going to redirect the parser to.
+// ---------------------------------------------------------------------------
+static const XMLCh  gFileToTrap[] =
+{
+        chLatin_p, chLatin_e, chLatin_r, chLatin_s, chLatin_o, chLatin_n
+    ,   chLatin_a, chLatin_l, chPeriod,  chLatin_d, chLatin_t, chLatin_d, chNull
+};
+
+static const XMLCh  gRedirectToFile[] =
+{
+        chLatin_r, chLatin_e, chLatin_d, chLatin_i, chLatin_r, chLatin_e
+    ,   chLatin_c, chLatin_t, chPeriod,  chLatin_d, chLatin_t, chLatin_d, chNull
+};
+
+
+// ---------------------------------------------------------------------------
+//  RedirectHandlers: Constructors and Destructor
+// ---------------------------------------------------------------------------
+RedirectHandlers::RedirectHandlers() :
+
+    fAttrCount(0)
+    , fCharacterCount(0)
+    , fElementCount(0)
+    , fSpaceCount(0)
+{
+}
+
+RedirectHandlers::~RedirectHandlers()
+{
+}
+
+
+// ---------------------------------------------------------------------------
+//  RedirectHandlers: Implementation of the SAX DocumentHandler interface
+// ---------------------------------------------------------------------------
+void RedirectHandlers::startElement(const   XMLCh* const    /* name */
+                                    ,       AttributeList&  attributes)
+{
+    fElementCount++;
+    fAttrCount += attributes.getLength();
+}
+
+void RedirectHandlers::characters(  const   XMLCh* const    /* chars */
+                                    , const XMLSize_t    length)
+{
+    fCharacterCount += length;
+}
+
+void RedirectHandlers::ignorableWhitespace( const   XMLCh* const /* chars */
+                                            , const XMLSize_t length)
+{
+    fSpaceCount += length;
+}
+
+void RedirectHandlers::resetDocument()
+{
+    fAttrCount = 0;
+    fCharacterCount = 0;
+    fElementCount = 0;
+    fSpaceCount = 0;
+}
+
+
+
+// ---------------------------------------------------------------------------
+//  RedirectHandlers: Overrides of the SAX ErrorHandler interface
+// ---------------------------------------------------------------------------
+void RedirectHandlers::error(const SAXParseException& e)
+{
+    XERCES_STD_QUALIFIER cerr << "\nError at (file " << StrX(e.getSystemId())
+		 << ", line " << e.getLineNumber()
+		 << ", char " << e.getColumnNumber()
+         << "): " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+}
+
+void RedirectHandlers::fatalError(const SAXParseException& e)
+{
+    XERCES_STD_QUALIFIER cerr << "\nFatal Error at (file " << StrX(e.getSystemId())
+		 << ", line " << e.getLineNumber()
+		 << ", char " << e.getColumnNumber()
+         << "): " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+}
+
+void RedirectHandlers::warning(const SAXParseException& e)
+{
+    XERCES_STD_QUALIFIER cerr << "\nWarning at (file " << StrX(e.getSystemId())
+		 << ", line " << e.getLineNumber()
+		 << ", char " << e.getColumnNumber()
+         << "): " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+}
+
+
+// This is the SAX2 resolveEntity interface...
+// -----------------------------------------------------------------------
+//  Handlers for the SAX EntityResolver interface
+// -----------------------------------------------------------------------
+InputSource* RedirectHandlers::resolveEntity(const   XMLCh* const    /* publicId */
+                                             , const XMLCh* const    systemId)
+{
+    //
+    //  If it's our file, then create a new URL input source for the file that
+    //  we want to really be used. Otherwise, just return NULL to let the
+    //  default action occur.
+    if (XMLString::compareString(gFileToTrap, systemId) != 0)
+    {
+        return NULL;
+    }
+    else
+    {
+        // They were equal, so redirect to our other file
+        return new LocalFileInputSource(gRedirectToFile);
+    }
+}
+
+// -----------------------------------------------------------------------
+//  Handlers for the XMLEntityResolver interface
+// -----------------------------------------------------------------------
+
+InputSource* RedirectHandlers::resolveEntity(XMLResourceIdentifier* resourceIdentifier)
+{
+    // Call the SAX2 version.
+    return resolveEntity(NULL, resourceIdentifier->getSystemId());
+}

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/Redirect/RedirectHandlers.hpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/Redirect/RedirectHandlers.hpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/Redirect/RedirectHandlers.hpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,121 @@
+/*
+ * 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.
+ */
+
+/*
+ * $Id: RedirectHandlers.hpp 5336 2010-10-26 22:52:27Z brucedechant $
+ */
+
+
+// ---------------------------------------------------------------------------
+//  Includes
+// ---------------------------------------------------------------------------
+#include <xercesc/sax/HandlerBase.hpp>
+#include <xercesc/util/XMLEntityResolver.hpp>
+
+XERCES_CPP_NAMESPACE_USE
+
+XERCES_CPP_NAMESPACE_BEGIN
+class AttributeList;
+XERCES_CPP_NAMESPACE_END
+
+
+class RedirectHandlers : public HandlerBase, public XMLEntityResolver
+{
+public:
+    // -----------------------------------------------------------------------
+    //  Constructors and Destructor
+    // -----------------------------------------------------------------------
+    RedirectHandlers();
+    ~RedirectHandlers();
+
+
+    // -----------------------------------------------------------------------
+    //  Getter methods
+    // -----------------------------------------------------------------------
+    XMLSize_t getElementCount()
+    {
+        return fElementCount;
+    }
+
+    XMLSize_t getAttrCount()
+    {
+        return fAttrCount;
+    }
+
+    XMLSize_t getCharacterCount()
+    {
+        return fCharacterCount;
+    }
+
+    XMLSize_t getSpaceCount()
+    {
+        return fSpaceCount;
+    }
+
+
+    // -----------------------------------------------------------------------
+    //  Handlers for the SAX DocumentHandler interface
+    // -----------------------------------------------------------------------
+    void startElement(const XMLCh* const name, AttributeList& attributes);
+    void characters(const XMLCh* const chars, const XMLSize_t length);
+    void ignorableWhitespace(const XMLCh* const chars, const XMLSize_t length);
+    void resetDocument();
+
+
+    // -----------------------------------------------------------------------
+    //  Handlers for the SAX ErrorHandler interface
+    // -----------------------------------------------------------------------
+    void warning(const SAXParseException& exc);
+    void error(const SAXParseException& exc);
+    void fatalError(const SAXParseException& exc);
+
+
+    // This is the SAX2 resolveEntity interface.  This is inherited from
+    // EntityResolver.
+    // -----------------------------------------------------------------------
+    //  Handlers for the SAX EntityResolver interface
+    // -----------------------------------------------------------------------
+    InputSource* resolveEntity
+    (
+        const   XMLCh* const    publicId
+        , const XMLCh* const    systemId
+    );
+
+    // -----------------------------------------------------------------------
+    //  Handlers for the XMLEntityResolver interface
+    // -----------------------------------------------------------------------
+    InputSource* resolveEntity
+    (
+        XMLResourceIdentifier* resourceIdentifier
+    );
+
+private:
+    // -----------------------------------------------------------------------
+    //  Private data members
+    //
+    //  fAttrCount
+    //  fCharacterCount
+    //  fElementCount
+    //  fSpaceCount
+    //      These are just counters that are run upwards based on the input
+    //      from the document handlers.
+    // -----------------------------------------------------------------------
+    XMLSize_t       fAttrCount;
+    XMLSize_t       fCharacterCount;
+    XMLSize_t       fElementCount;
+    XMLSize_t       fSpaceCount;
+};

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAX2Count/SAX2Count.cpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAX2Count/SAX2Count.cpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAX2Count/SAX2Count.cpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,346 @@
+/*
+ * 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.
+ */
+
+/*
+ * $Id: SAX2Count.cpp 5336 2010-10-26 22:52:27Z brucedechant $
+ */
+
+
+// ---------------------------------------------------------------------------
+//  Includes
+// ---------------------------------------------------------------------------
+#include "SAX2Count.hpp"
+#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>
+
+// ---------------------------------------------------------------------------
+//  Local helper methods
+// ---------------------------------------------------------------------------
+void usage()
+{
+    XERCES_STD_QUALIFIER 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"
+            "in each XML file, using SAX2 API.\n\n"
+            "Options:\n"
+            "    -l          Indicate the input file is a List File that has a list of xml files.\n"
+            "                Default to off (Input file is an XML file).\n"
+            "    -v=xxx      Validation scheme [always | never | auto*].\n"
+            "    -f          Enable full schema constraint checking processing. Defaults to off.\n"
+            "    -p          Enable namespace-prefixes feature. Defaults to off.\n"
+            "    -n          Disable namespace processing. Defaults to on.\n"
+            "                NOTE: THIS IS OPPOSITE FROM OTHER SAMPLES.\n"
+            "    -s          Disable schema processing. Defaults to on.\n"
+            "                NOTE: THIS IS OPPOSITE FROM OTHER SAMPLES.\n"
+            "    -i          Disable identity constraint checking. Defaults to on.\n"
+            "                NOTE: THIS IS OPPOSITE FROM OTHER SAMPLES.\n"
+            "    -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;
+}
+
+
+// ---------------------------------------------------------------------------
+//  Program entry point
+// ---------------------------------------------------------------------------
+int main(int argC, char* argV[])
+{
+
+    // Check command line and extract arguments.
+    if (argC < 2)
+    {
+        usage();
+        return 1;
+    }
+
+    const char*                  xmlFile      = 0;
+    SAX2XMLReader::ValSchemes    valScheme    = SAX2XMLReader::Val_Auto;
+    bool                         doNamespaces = true;
+    bool                         doSchema = true;
+    bool                         schemaFullChecking = false;
+    bool                         identityConstraintChecking = true;
+    bool                         doList = false;
+    bool                         errorOccurred = false;
+    bool                         namespacePrefixes = false;
+    bool                         recognizeNEL = false;
+    char                         localeStr[64];
+    memset(localeStr, 0, sizeof localeStr);
+
+    int argInd;
+    for (argInd = 1; argInd < argC; argInd++)
+    {
+        // Break out on first parm not starting with a dash
+        if (argV[argInd][0] != '-')
+            break;
+
+        // Watch for special case help request
+        if (!strcmp(argV[argInd], "-?"))
+        {
+            usage();
+            return 2;
+        }
+         else if (!strncmp(argV[argInd], "-v=", 3)
+              ||  !strncmp(argV[argInd], "-V=", 3))
+        {
+            const char* const parm = &argV[argInd][3];
+
+            if (!strcmp(parm, "never"))
+                valScheme = SAX2XMLReader::Val_Never;
+            else if (!strcmp(parm, "auto"))
+                valScheme = SAX2XMLReader::Val_Auto;
+            else if (!strcmp(parm, "always"))
+                valScheme = SAX2XMLReader::Val_Always;
+            else
+            {
+                XERCES_STD_QUALIFIER cerr << "Unknown -v= value: " << parm << XERCES_STD_QUALIFIER endl;
+                return 2;
+            }
+        }
+         else if (!strcmp(argV[argInd], "-n")
+              ||  !strcmp(argV[argInd], "-N"))
+        {
+            doNamespaces = false;
+        }
+         else if (!strcmp(argV[argInd], "-s")
+              ||  !strcmp(argV[argInd], "-S"))
+        {
+            doSchema = false;
+        }
+         else if (!strcmp(argV[argInd], "-f")
+              ||  !strcmp(argV[argInd], "-F"))
+        {
+            schemaFullChecking = true;
+        }
+         else if (!strcmp(argV[argInd], "-i")
+              ||  !strcmp(argV[argInd], "-I"))
+        {
+            identityConstraintChecking = false;
+        }
+         else if (!strcmp(argV[argInd], "-l")
+              ||  !strcmp(argV[argInd], "-L"))
+        {
+            doList = true;
+        }
+         else if (!strcmp(argV[argInd], "-p")
+              ||  !strcmp(argV[argInd], "-P"))
+        {
+            namespacePrefixes = true;
+        }
+         else if (!strcmp(argV[argInd], "-special:nel"))
+        {
+            // turning this on will lead to non-standard compliance behaviour
+            // it will recognize the unicode character 0x85 as new line character
+            // instead of regular character as specified in XML 1.0
+            // do not turn this on unless really necessary
+             recognizeNEL = true;
+        }
+         else if (!strncmp(argV[argInd], "-locale=", 8))
+        {
+             // Get out the end of line
+             strncpy(localeStr, &(argV[argInd][8]), sizeof localeStr);
+        }
+        else
+        {
+            XERCES_STD_QUALIFIER cerr << "Unknown option '" << argV[argInd]
+                << "', ignoring it\n" << XERCES_STD_QUALIFIER endl;
+        }
+    }
+
+    //
+    //  There should be only one and only one parameter left, and that
+    //  should be the file name.
+    //
+    if (argInd != argC - 1)
+    {
+        usage();
+        return 1;
+    }
+
+    // Initialize the XML4C2 system
+    try
+    {
+        if (strlen(localeStr))
+        {
+            XMLPlatformUtils::Initialize(localeStr);
+        }
+        else
+        {
+            XMLPlatformUtils::Initialize();
+        }
+
+        if (recognizeNEL)
+        {
+            XMLPlatformUtils::recognizeNEL(recognizeNEL);
+        }
+    }
+
+    catch (const XMLException& toCatch)
+    {
+        XERCES_STD_QUALIFIER cerr << "Error during initialization! Message:\n"
+            << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl;
+        return 1;
+    }
+
+    //
+    //  Create a SAX parser object. Then, according to what we were told on
+    //  the command line, set it to validate or not.
+    //
+    SAX2XMLReader* parser = XMLReaderFactory::createXMLReader();
+    parser->setFeature(XMLUni::fgSAX2CoreNameSpaces, doNamespaces);
+    parser->setFeature(XMLUni::fgXercesSchema, doSchema);
+    parser->setFeature(XMLUni::fgXercesHandleMultipleImports, true);
+    parser->setFeature(XMLUni::fgXercesSchemaFullChecking, schemaFullChecking);
+    parser->setFeature(XMLUni::fgXercesIdentityConstraintChecking, identityConstraintChecking);
+    parser->setFeature(XMLUni::fgSAX2CoreNameSpacePrefixes, namespacePrefixes);
+
+    if (valScheme == SAX2XMLReader::Val_Auto)
+    {
+        parser->setFeature(XMLUni::fgSAX2CoreValidation, true);
+        parser->setFeature(XMLUni::fgXercesDynamic, true);
+    }
+    if (valScheme == SAX2XMLReader::Val_Never)
+    {
+        parser->setFeature(XMLUni::fgSAX2CoreValidation, false);
+    }
+    if (valScheme == SAX2XMLReader::Val_Always)
+    {
+        parser->setFeature(XMLUni::fgSAX2CoreValidation, true);
+        parser->setFeature(XMLUni::fgXercesDynamic, false);
+    }
+
+    //
+    //  Create our SAX handler object and install it on the parser, as the
+    //  document and error handler.
+    //
+    SAX2CountHandlers handler;
+    parser->setContentHandler(&handler);
+    parser->setErrorHandler(&handler);
+
+    //
+    //  Get the starting time and kick off the parse of the indicated
+    //  file. Catch any exceptions that might propogate out of it.
+    //
+    unsigned long duration;
+
+    bool more = true;
+    XERCES_STD_QUALIFIER 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;
+        return 2;
+    }
+
+    while (more)
+    {
+        char fURI[1000];
+        //initialize the array to zeros
+        memset(fURI,0,sizeof(fURI));
+
+        if (doList) {
+            if (! fin.eof() ) {
+                fin.getline (fURI, sizeof(fURI));
+                if (!*fURI)
+                    continue;
+                else {
+                    xmlFile = fURI;
+                    XERCES_STD_QUALIFIER cerr << "==Parsing== " << xmlFile << XERCES_STD_QUALIFIER endl;
+                }
+            }
+            else
+                break;
+        }
+        else {
+            xmlFile = argV[argInd];
+            more = false;
+        }
+
+        //reset error count first
+        handler.resetErrors();
+
+        try
+        {
+            const unsigned long startMillis = XMLPlatformUtils::getCurrentMillis();
+            parser->parse(xmlFile);
+            const unsigned long endMillis = XMLPlatformUtils::getCurrentMillis();
+            duration = endMillis - startMillis;
+        }
+        catch (const OutOfMemoryException&)
+        {
+            XERCES_STD_QUALIFIER cerr << "OutOfMemoryException" << XERCES_STD_QUALIFIER endl;
+            errorOccurred = true;
+            continue;
+        }
+        catch (const XMLException& e)
+        {
+            XERCES_STD_QUALIFIER cerr << "\nError during parsing: '" << xmlFile << "'\n"
+                << "Exception message is:  \n"
+                << StrX(e.getMessage()) << "\n" << XERCES_STD_QUALIFIER endl;
+            errorOccurred = true;
+            continue;
+        }
+
+        catch (...)
+        {
+            XERCES_STD_QUALIFIER cerr << "\nUnexpected exception during parsing: '" << xmlFile << "'\n";
+            errorOccurred = true;
+            continue;
+        }
+
+
+        // Print out the stats that we collected and time taken
+        if (!handler.getSawErrors())
+        {
+            XERCES_STD_QUALIFIER cout << xmlFile << ": " << duration << " ms ("
+                << handler.getElementCount() << " elems, "
+                << handler.getAttrCount() << " attrs, "
+                << handler.getSpaceCount() << " spaces, "
+                << handler.getCharacterCount() << " chars)" << XERCES_STD_QUALIFIER endl;
+        }
+        else
+            errorOccurred = true;
+    }
+
+    if (doList)
+        fin.close();
+
+    //
+    //  Delete the parser itself.  Must be done prior to calling Terminate, below.
+    //
+    delete parser;
+
+    // And call the termination method
+    XMLPlatformUtils::Terminate();
+
+    if (errorOccurred)
+        return 4;
+    else
+        return 0;
+
+}

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAX2Count/SAX2Count.hpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAX2Count/SAX2Count.hpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAX2Count/SAX2Count.hpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,83 @@
+/*
+ * 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.
+ */
+
+/*
+ * $Id: SAX2Count.hpp 5336 2010-10-26 22:52:27Z brucedechant $
+ */
+
+
+// ---------------------------------------------------------------------------
+//  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 <iostream>
+#else
+#include <iostream.h>
+#endif
+#include "SAX2CountHandlers.hpp"
+#include <xercesc/sax2/XMLReaderFactory.hpp>
+#include <xercesc/sax2/SAX2XMLReader.hpp>
+
+
+// ---------------------------------------------------------------------------
+//  This is a simple class that lets us do easy (though not terribly efficient)
+//  trancoding of XMLCh data to local code page for display.
+// ---------------------------------------------------------------------------
+class StrX
+{
+public :
+    // -----------------------------------------------------------------------
+    //  Constructors and Destructor
+    // -----------------------------------------------------------------------
+    StrX(const XMLCh* const toTranscode)
+    {
+        // Call the private transcoding method
+        fLocalForm = XMLString::transcode(toTranscode);
+    }
+
+    ~StrX()
+    {
+        XMLString::release(&fLocalForm);
+    }
+
+    // -----------------------------------------------------------------------
+    //  Getter methods
+    // -----------------------------------------------------------------------
+    const char* localForm() const
+    {
+        return fLocalForm;
+    }
+
+private :
+    // -----------------------------------------------------------------------
+    //  Private data members
+    //
+    //  fLocalForm
+    //      This is the local code page form of the string.
+    // -----------------------------------------------------------------------
+    char*   fLocalForm;
+};
+
+inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump)
+{
+    target << toDump.localForm();
+    return target;
+}

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAX2Count/SAX2CountHandlers.cpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAX2Count/SAX2CountHandlers.cpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAX2Count/SAX2CountHandlers.cpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,114 @@
+/*
+ * 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.
+ */
+
+/*
+ * $Id: SAX2CountHandlers.cpp 5336 2010-10-26 22:52:27Z brucedechant $
+ */
+
+// ---------------------------------------------------------------------------
+//  Includes
+// ---------------------------------------------------------------------------
+#include "SAX2Count.hpp"
+#include <xercesc/sax2/Attributes.hpp>
+#include <xercesc/sax/SAXParseException.hpp>
+#include <xercesc/sax/SAXException.hpp>
+
+
+
+// ---------------------------------------------------------------------------
+//  SAX2CountHandlers: Constructors and Destructor
+// ---------------------------------------------------------------------------
+SAX2CountHandlers::SAX2CountHandlers() :
+
+    fAttrCount(0)
+    , fCharacterCount(0)
+    , fElementCount(0)
+    , fSpaceCount(0)
+    , fSawErrors(false)
+{
+}
+
+SAX2CountHandlers::~SAX2CountHandlers()
+{
+}
+
+// ---------------------------------------------------------------------------
+//  SAX2CountHandlers: Implementation of the SAX DocumentHandler interface
+// ---------------------------------------------------------------------------
+void SAX2CountHandlers::startElement(const XMLCh* const /* uri */
+                                   , const XMLCh* const /* localname */
+                                   , const XMLCh* const /* qname */
+                                   , const Attributes& attrs)
+{
+    fElementCount++;
+    fAttrCount += attrs.getLength();
+}
+
+void SAX2CountHandlers::characters(  const   XMLCh* const   /* chars */
+								    , const XMLSize_t length)
+{
+    fCharacterCount += length;
+}
+
+void SAX2CountHandlers::ignorableWhitespace( const   XMLCh* const /* chars */
+										    , const XMLSize_t length)
+{
+    fSpaceCount += length;
+}
+
+void SAX2CountHandlers::startDocument()
+{
+    fAttrCount = 0;
+    fCharacterCount = 0;
+    fElementCount = 0;
+    fSpaceCount = 0;
+}
+
+
+// ---------------------------------------------------------------------------
+//  SAX2CountHandlers: Overrides of the SAX ErrorHandler interface
+// ---------------------------------------------------------------------------
+void SAX2CountHandlers::error(const SAXParseException& e)
+{
+    fSawErrors = true;
+    XERCES_STD_QUALIFIER cerr << "\nError at file " << StrX(e.getSystemId())
+		 << ", line " << e.getLineNumber()
+		 << ", char " << e.getColumnNumber()
+         << "\n  Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+}
+
+void SAX2CountHandlers::fatalError(const SAXParseException& e)
+{
+    fSawErrors = true;
+    XERCES_STD_QUALIFIER cerr << "\nFatal Error at file " << StrX(e.getSystemId())
+		 << ", line " << e.getLineNumber()
+		 << ", char " << e.getColumnNumber()
+         << "\n  Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+}
+
+void SAX2CountHandlers::warning(const SAXParseException& e)
+{
+    XERCES_STD_QUALIFIER cerr << "\nWarning at file " << StrX(e.getSystemId())
+		 << ", line " << e.getLineNumber()
+		 << ", char " << e.getColumnNumber()
+         << "\n  Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+}
+
+void SAX2CountHandlers::resetErrors()
+{
+    fSawErrors = false;
+}

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAX2Count/SAX2CountHandlers.hpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAX2Count/SAX2CountHandlers.hpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAX2Count/SAX2CountHandlers.hpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,108 @@
+/*
+ * 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.
+ */
+
+/*
+ * $Id: SAX2CountHandlers.hpp 5336 2010-10-26 22:52:27Z brucedechant $
+ */
+
+
+// ---------------------------------------------------------------------------
+//  Includes
+// ---------------------------------------------------------------------------
+#include <xercesc/sax2/Attributes.hpp>
+#include <xercesc/sax2/DefaultHandler.hpp>
+
+XERCES_CPP_NAMESPACE_USE
+
+class SAX2CountHandlers : public DefaultHandler
+{
+public:
+    // -----------------------------------------------------------------------
+    //  Constructors and Destructor
+    // -----------------------------------------------------------------------
+    SAX2CountHandlers();
+    ~SAX2CountHandlers();
+
+
+    // -----------------------------------------------------------------------
+    //  Getter methods
+    // -----------------------------------------------------------------------
+    XMLSize_t getElementCount() const
+    {
+        return fElementCount;
+    }
+
+    XMLSize_t getAttrCount() const
+    {
+        return fAttrCount;
+    }
+
+    XMLSize_t getCharacterCount() const
+    {
+        return fCharacterCount;
+    }
+
+    bool getSawErrors() const
+    {
+        return fSawErrors;
+    }
+
+    XMLSize_t getSpaceCount() const
+    {
+        return fSpaceCount;
+    }
+
+
+    // -----------------------------------------------------------------------
+    //  Handlers for the SAX ContentHandler interface
+    // -----------------------------------------------------------------------
+    void startElement(const XMLCh* const uri, const XMLCh* const localname, const XMLCh* const qname, const Attributes& attrs);
+    void characters(const XMLCh* const chars, const XMLSize_t length);
+    void ignorableWhitespace(const XMLCh* const chars, const XMLSize_t length);
+    void startDocument();
+
+
+    // -----------------------------------------------------------------------
+    //  Handlers for the SAX ErrorHandler interface
+    // -----------------------------------------------------------------------
+	void warning(const SAXParseException& exc);
+    void error(const SAXParseException& exc);
+    void fatalError(const SAXParseException& exc);
+    void resetErrors();
+
+
+private:
+    // -----------------------------------------------------------------------
+    //  Private data members
+    //
+    //  fAttrCount
+    //  fCharacterCount
+    //  fElementCount
+    //  fSpaceCount
+    //      These are just counters that are run upwards based on the input
+    //      from the document handlers.
+    //
+    //  fSawErrors
+    //      This is set by the error handlers, and is queryable later to
+    //      see if any errors occured.
+    // -----------------------------------------------------------------------
+    XMLSize_t       fAttrCount;
+    XMLSize_t       fCharacterCount;
+    XMLSize_t       fElementCount;
+    XMLSize_t       fSpaceCount;
+    bool            fSawErrors;
+};

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAX2Print/SAX2FilterHandlers.cpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAX2Print/SAX2FilterHandlers.cpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAX2Print/SAX2FilterHandlers.cpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,174 @@
+/*
+ * 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.
+ */
+
+/*
+ * $Id: SAX2FilterHandlers.cpp 5336 2010-10-26 22:52:27Z brucedechant $
+ */
+
+
+// ---------------------------------------------------------------------------
+//  Includes
+// ---------------------------------------------------------------------------
+#include "SAX2FilterHandlers.hpp"
+#include <xercesc/sax2/Attributes.hpp>
+
+struct Attr
+{
+    const XMLCh* qName;
+    const XMLCh* uri;
+    const XMLCh* localPart;
+    const XMLCh* value;
+    const XMLCh* attrType;
+};
+
+class AttrList : public Attributes, public RefVectorOf<Attr>
+{
+public:
+    AttrList(XMLSize_t count) : RefVectorOf<Attr>(count) {}
+
+    virtual XMLSize_t getLength() const
+    {
+        return size();
+    }
+
+    virtual const XMLCh* getURI(const XMLSize_t index) const
+    {
+        return elementAt(index)->uri;
+    }
+    virtual const XMLCh* getLocalName(const XMLSize_t index) const
+    {
+        return elementAt(index)->localPart;
+    }
+    virtual const XMLCh* getQName(const XMLSize_t index) const
+    {
+        return elementAt(index)->qName;
+    }
+    virtual const XMLCh* getType(const XMLSize_t index) const
+    {
+        return elementAt(index)->attrType;
+    }
+    virtual const XMLCh* getValue(const XMLSize_t index) const
+    {
+        return elementAt(index)->value;
+    }
+
+
+    virtual bool getIndex(const XMLCh* const uri,
+                          const XMLCh* const localPart,
+                          XMLSize_t& i) const
+    {
+        for(i=0;i<size();i++)
+            if(XMLString::equals(elementAt(i)->uri,uri) && XMLString::equals(elementAt(i)->localPart,localPart))
+                return true;
+        return false;
+    }
+
+    virtual int getIndex(const XMLCh* const uri, const XMLCh* const localPart ) const
+    {
+        for(XMLSize_t i=0;i<size();i++)
+            if(XMLString::equals(elementAt(i)->uri,uri) && XMLString::equals(elementAt(i)->localPart,localPart))
+                return (int)i;
+        return -1;
+    }
+
+    virtual bool getIndex(const XMLCh* const qName, XMLSize_t& i) const
+    {
+        for(i=0;i<size();i++)
+            if(XMLString::equals(elementAt(i)->qName,qName))
+                return true;
+        return false;
+    }
+
+    virtual int getIndex(const XMLCh* const qName ) const
+    {
+        for(XMLSize_t i=0;i<size();i++)
+            if(XMLString::equals(elementAt(i)->qName,qName))
+                return (int)i;
+        return -1;
+    }
+
+    virtual const XMLCh* getType(const XMLCh* const uri, const XMLCh* const localPart ) const
+    {
+        for(XMLSize_t i=0;i<size();i++)
+            if(XMLString::equals(elementAt(i)->uri,uri) && XMLString::equals(elementAt(i)->localPart,localPart))
+                return elementAt(i)->attrType;
+        return NULL;
+    }
+    virtual const XMLCh* getType(const XMLCh* const qName) const
+    {
+        for(XMLSize_t i=0;i<size();i++)
+            if(XMLString::equals(elementAt(i)->qName,qName))
+                return elementAt(i)->attrType;
+        return NULL;
+    }
+
+    virtual const XMLCh* getValue(const XMLCh* const uri, const XMLCh* const localPart ) const
+    {
+        for(XMLSize_t i=0;i<size();i++)
+            if(XMLString::equals(elementAt(i)->uri,uri) && XMLString::equals(elementAt(i)->localPart,localPart))
+                return elementAt(i)->value;
+        return NULL;
+    }
+    virtual const XMLCh* getValue(const XMLCh* const qName) const
+    {
+        for(XMLSize_t i=0;i<size();i++)
+            if(XMLString::equals(elementAt(i)->qName,qName))
+                return elementAt(i)->value;
+        return NULL;
+    }
+
+};
+
+// ---------------------------------------------------------------------------
+//  SAX2SortAttributesFilter: Constructors and Destructor
+// ---------------------------------------------------------------------------
+SAX2SortAttributesFilter::SAX2SortAttributesFilter(SAX2XMLReader* parent) : SAX2XMLFilterImpl(parent)
+{
+}
+
+SAX2SortAttributesFilter::~SAX2SortAttributesFilter()
+{
+}
+
+
+// ---------------------------------------------------------------------------
+//  SAX2SortAttributesFilter: Overrides of the SAX2XMLFilter interface
+// ---------------------------------------------------------------------------
+void SAX2SortAttributesFilter::startElement(const   XMLCh* const    uri,
+                                            const   XMLCh* const    localname,
+                                            const   XMLCh* const    qname,
+                                            const   Attributes&		attributes)
+{
+    AttrList sortedList(attributes.getLength());
+    for(XMLSize_t i=0;i<attributes.getLength();i++)
+    {
+        XMLSize_t j;
+        for(j=0;j<sortedList.getLength();j++)
+        {
+            if(XMLString::compareString(sortedList.elementAt(j)->qName,attributes.getQName(i))>=0)
+                break;
+        }
+        Attr* pClone=new Attr;
+        pClone->qName       = attributes.getQName(i);
+        pClone->uri         = attributes.getURI(i);
+        pClone->localPart   = attributes.getLocalName(i);
+        pClone->value       = attributes.getValue(i);
+        pClone->attrType    = attributes.getType(i);
+        sortedList.insertElementAt(pClone, j);
+    }
+    SAX2XMLFilterImpl::startElement(uri, localname, qname, sortedList);
+}

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAX2Print/SAX2FilterHandlers.hpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAX2Print/SAX2FilterHandlers.hpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAX2Print/SAX2FilterHandlers.hpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,44 @@
+/*
+ * 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.
+ */
+
+/*
+ * $Id: SAX2FilterHandlers.hpp 5336 2010-10-26 22:52:27Z brucedechant $
+ */
+
+#include    <xercesc/parsers/SAX2XMLFilterImpl.hpp>
+
+XERCES_CPP_NAMESPACE_USE
+
+class SAX2SortAttributesFilter : public SAX2XMLFilterImpl
+{
+public:
+    // -----------------------------------------------------------------------
+    //  Constructors
+    // -----------------------------------------------------------------------
+    SAX2SortAttributesFilter(SAX2XMLReader* parent);
+    ~SAX2SortAttributesFilter();
+
+
+    // -----------------------------------------------------------------------
+    //  Implementations of the SAX2XMLFilter interface
+    // -----------------------------------------------------------------------
+    void startElement(	const   XMLCh* const    uri,
+						const   XMLCh* const    localname,
+						const   XMLCh* const    qname,
+					    const   Attributes&		attributes);
+};
+

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAX2Print/SAX2Print.cpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAX2Print/SAX2Print.cpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAX2Print/SAX2Print.cpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,316 @@
+/*
+ * 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.
+ */
+
+/*
+ * $Id: SAX2Print.cpp 5336 2010-10-26 22:52:27Z brucedechant $
+ */
+
+
+// ---------------------------------------------------------------------------
+//  Includes
+// ---------------------------------------------------------------------------
+#include <xercesc/util/PlatformUtils.hpp>
+#include <xercesc/util/TransService.hpp>
+#include <xercesc/sax2/SAX2XMLReader.hpp>
+#include <xercesc/sax2/XMLReaderFactory.hpp>
+#include "SAX2Print.hpp"
+#include <xercesc/util/OutOfMemoryException.hpp>
+#include "SAX2FilterHandlers.hpp"
+
+// ---------------------------------------------------------------------------
+//  Local data
+//
+//  encodingName
+//      The encoding we are to output in. If not set on the command line,
+//      then it is defaulted to LATIN1.
+//
+//  xmlFile
+//      The path to the file to parser. Set via command line.
+//
+//  valScheme
+//      Indicates what validation scheme to use. It defaults to 'auto', but
+//      can be set via the -v= command.
+//
+//	expandNamespaces
+//		Indicates if the output should expand the namespaces Alias with
+//		their URI's, defaults to false, can be set via the command line -e
+// ---------------------------------------------------------------------------
+static const char*              encodingName    = "LATIN1";
+static XMLFormatter::UnRepFlags unRepFlags      = XMLFormatter::UnRep_CharRef;
+static char*                    xmlFile         = 0;
+static SAX2XMLReader::ValSchemes valScheme      = SAX2XMLReader::Val_Auto;
+static bool					        expandNamespaces= false ;
+static bool                     doNamespaces    = true;
+static bool                     doSchema        = true;
+static bool                     schemaFullChecking = false;
+static bool                     namespacePrefixes = false;
+static bool                     sortAttributes  = false;
+
+
+// ---------------------------------------------------------------------------
+//  Local helper methods
+// ---------------------------------------------------------------------------
+static void usage()
+{
+    XERCES_STD_QUALIFIER 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"
+            "XML file.\n\n"
+            "Options:\n"
+             "    -u=xxx      Handle unrepresentable chars [fail | rep | ref*].\n"
+             "    -v=xxx      Validation scheme [always | never | auto*].\n"
+             "    -e          Expand Namespace Alias with URI's. Defaults to off.\n"
+             "    -x=XXX      Use a particular encoding for output (LATIN1*).\n"
+             "    -f          Enable full schema constraint checking processing. Defaults to off.\n"
+             "    -p          Enable namespace-prefixes feature. Defaults to off.\n"
+             "    -n          Disable namespace processing. Defaults to on.\n"
+             "                NOTE: THIS IS OPPOSITE FROM OTHER SAMPLES.\n"
+             "    -s          Disable schema processing. Defaults to on.\n"
+             "                NOTE: THIS IS OPPOSITE FROM OTHER SAMPLES.\n"
+             "    -sa         Print the attributes in alphabetic order. Defaults to off.\n"
+             "    -?          Show this help.\n\n"
+             "  * = Default if not provided explicitly.\n\n"
+             "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;
+}
+
+
+
+// ---------------------------------------------------------------------------
+//  Program entry point
+// ---------------------------------------------------------------------------
+int main(int argC, char* argV[])
+{
+    // Initialize the XML4C2 system
+    try
+    {
+         XMLPlatformUtils::Initialize();
+    }
+
+    catch (const XMLException& toCatch)
+    {
+         XERCES_STD_QUALIFIER cerr << "Error during initialization! :\n"
+              << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl;
+         return 1;
+    }
+
+    // Check command line and extract arguments.
+    if (argC < 2)
+    {
+        usage();
+        XMLPlatformUtils::Terminate();
+        return 1;
+    }
+
+    int parmInd;
+    for (parmInd = 1; parmInd < argC; parmInd++)
+    {
+        // Break out on first parm not starting with a dash
+        if (argV[parmInd][0] != '-')
+            break;
+
+        // Watch for special case help request
+        if (!strcmp(argV[parmInd], "-?"))
+        {
+            usage();
+            XMLPlatformUtils::Terminate();
+            return 2;
+        }
+         else if (!strncmp(argV[parmInd], "-v=", 3)
+              ||  !strncmp(argV[parmInd], "-V=", 3))
+        {
+            const char* const parm = &argV[parmInd][3];
+
+            if (!strcmp(parm, "never"))
+                valScheme = SAX2XMLReader::Val_Never;
+            else if (!strcmp(parm, "auto"))
+                valScheme = SAX2XMLReader::Val_Auto;
+            else if (!strcmp(parm, "always"))
+                valScheme = SAX2XMLReader::Val_Always;
+            else
+            {
+                XERCES_STD_QUALIFIER cerr << "Unknown -v= value: " << parm << XERCES_STD_QUALIFIER endl;
+                XMLPlatformUtils::Terminate();
+                return 2;
+            }
+        }
+         else if (!strcmp(argV[parmInd], "-e")
+              ||  !strcmp(argV[parmInd], "-E"))
+        {
+            expandNamespaces = true;
+        }
+         else if (!strncmp(argV[parmInd], "-x=", 3)
+              ||  !strncmp(argV[parmInd], "-X=", 3))
+        {
+            // Get out the encoding name
+            encodingName = &argV[parmInd][3];
+        }
+         else if (!strncmp(argV[parmInd], "-u=", 3)
+              ||  !strncmp(argV[parmInd], "-U=", 3))
+        {
+            const char* const parm = &argV[parmInd][3];
+
+            if (!strcmp(parm, "fail"))
+                unRepFlags = XMLFormatter::UnRep_Fail;
+            else if (!strcmp(parm, "rep"))
+                unRepFlags = XMLFormatter::UnRep_Replace;
+            else if (!strcmp(parm, "ref"))
+                unRepFlags = XMLFormatter::UnRep_CharRef;
+            else
+            {
+                XERCES_STD_QUALIFIER cerr << "Unknown -u= value: " << parm << XERCES_STD_QUALIFIER endl;
+                XMLPlatformUtils::Terminate();
+                return 2;
+            }
+        }
+         else if (!strcmp(argV[parmInd], "-n")
+              ||  !strcmp(argV[parmInd], "-N"))
+        {
+            doNamespaces = false;
+        }
+         else if (!strcmp(argV[parmInd], "-s")
+              ||  !strcmp(argV[parmInd], "-S"))
+        {
+            doSchema = false;
+        }
+         else if (!strcmp(argV[parmInd], "-f")
+              ||  !strcmp(argV[parmInd], "-F"))
+        {
+            schemaFullChecking = true;
+        }
+         else if (!strcmp(argV[parmInd], "-p")
+              ||  !strcmp(argV[parmInd], "-P"))
+        {
+            namespacePrefixes = true;
+        }
+         else if (!strcmp(argV[parmInd], "-sa"))
+        {
+            sortAttributes = true;
+        }
+         else
+        {
+            XERCES_STD_QUALIFIER cerr << "Unknown option '" << argV[parmInd]
+                 << "', ignoring it\n" << XERCES_STD_QUALIFIER endl;
+        }
+    }
+
+    //
+    //  And now we have to have only one parameter left and it must be
+    //  the file name.
+    //
+    if (parmInd + 1 != argC)
+    {
+        usage();
+        XMLPlatformUtils::Terminate();
+        return 1;
+    }
+    xmlFile = argV[parmInd];
+
+    //
+    //  Create a SAX parser object. Then, according to what we were told on
+    //  the command line, set it to validate or not.
+    //
+    SAX2XMLReader* parser;
+    SAX2XMLReader* reader = XMLReaderFactory::createXMLReader();
+    SAX2XMLReader* filter = NULL;
+    if(sortAttributes)
+    {
+        filter=new SAX2SortAttributesFilter(reader);
+        parser=filter;
+    }
+    else
+        parser=reader;
+
+    //
+    //  Then, according to what we were told on
+    //  the command line, set it to validate or not.
+    //
+    if (valScheme == SAX2XMLReader::Val_Auto)
+    {
+        parser->setFeature(XMLUni::fgSAX2CoreValidation, true);
+        parser->setFeature(XMLUni::fgXercesDynamic, true);
+    }
+
+    if (valScheme == SAX2XMLReader::Val_Never)
+    {
+        parser->setFeature(XMLUni::fgSAX2CoreValidation, false);
+    }
+
+    if (valScheme == SAX2XMLReader::Val_Always)
+    {
+        parser->setFeature(XMLUni::fgSAX2CoreValidation, true);
+        parser->setFeature(XMLUni::fgXercesDynamic, false);
+    }
+
+    parser->setFeature(XMLUni::fgSAX2CoreNameSpaces, doNamespaces);
+    parser->setFeature(XMLUni::fgXercesSchema, doSchema);
+    parser->setFeature(XMLUni::fgXercesHandleMultipleImports, true);
+    parser->setFeature(XMLUni::fgXercesSchemaFullChecking, schemaFullChecking);
+    parser->setFeature(XMLUni::fgSAX2CoreNameSpacePrefixes, namespacePrefixes);
+
+    //
+    //  Create the handler object and install it as the document and error
+    //  handler for the parser. Then parse the file and catch any exceptions
+    //  that propogate out
+    //
+
+    int errorCount = 0;
+    int errorCode = 0;
+    try
+    {
+        SAX2PrintHandlers handler(encodingName, unRepFlags, expandNamespaces);
+        parser->setContentHandler(&handler);
+        parser->setErrorHandler(&handler);
+        parser->parse(xmlFile);
+        errorCount = parser->getErrorCount();
+    }
+    catch (const OutOfMemoryException&)
+    {
+        XERCES_STD_QUALIFIER cerr << "OutOfMemoryException" << XERCES_STD_QUALIFIER endl;
+        errorCode = 5;
+    }
+    catch (const XMLException& toCatch)
+    {
+        XERCES_STD_QUALIFIER cerr << "\nAn error occurred\n  Error: "
+             << StrX(toCatch.getMessage())
+             << "\n" << XERCES_STD_QUALIFIER endl;
+        errorCode = 4;
+    }
+
+    if(errorCode) {
+        XMLPlatformUtils::Terminate();
+        return errorCode;
+    }
+
+    //
+    //  Delete the parser itself.  Must be done prior to calling Terminate, below.
+    //
+    delete reader;
+    if(filter)
+        delete filter;
+
+    // And call the termination method
+    XMLPlatformUtils::Terminate();
+
+    if (errorCount > 0)
+        return 4;
+    else
+        return 0;
+}

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAX2Print/SAX2Print.hpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAX2Print/SAX2Print.hpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAX2Print/SAX2Print.hpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,78 @@
+/*
+ * 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.
+ */
+
+/*
+ * $Id: SAX2Print.hpp 5336 2010-10-26 22:52:27Z brucedechant $
+ */
+
+// ---------------------------------------------------------------------------
+//  Includes for all the program files to see
+// ---------------------------------------------------------------------------
+#include <string.h>
+#if defined(XERCES_NEW_IOSTREAMS)
+#include <iostream>
+#else
+#include <iostream.h>
+#endif
+#include <stdlib.h>
+#include "SAX2PrintHandlers.hpp"
+
+
+// ---------------------------------------------------------------------------
+//  This is a simple class that lets us do easy (though not terribly efficient)
+//  trancoding of XMLCh data to local code page for display.
+// ---------------------------------------------------------------------------
+class StrX
+{
+public :
+    // -----------------------------------------------------------------------
+    //  Constructors and Destructor
+    // -----------------------------------------------------------------------
+    StrX(const XMLCh* const toTranscode)
+    {
+        // Call the private transcoding method
+        fLocalForm = XMLString::transcode(toTranscode);
+    }
+
+    ~StrX()
+    {
+        XMLString::release(&fLocalForm);
+    }
+
+    // -----------------------------------------------------------------------
+    //  Getter methods
+    // -----------------------------------------------------------------------
+    const char* localForm() const
+    {
+        return fLocalForm;
+    }
+
+private :
+    // -----------------------------------------------------------------------
+    //  Private data members
+    //
+    //  fLocalForm
+    //      This is the local code page form of the string.
+    // -----------------------------------------------------------------------
+    char*   fLocalForm;
+};
+
+inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump)
+{
+    target << toDump.localForm();
+    return target;
+}

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAX2Print/SAX2PrintHandlers.cpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAX2Print/SAX2PrintHandlers.cpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAX2Print/SAX2PrintHandlers.cpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,256 @@
+/*
+ * 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.
+ */
+
+/*
+ * $Id: SAX2PrintHandlers.cpp 5336 2010-10-26 22:52:27Z brucedechant $
+ */
+
+
+
+// ---------------------------------------------------------------------------
+//  Includes
+// ---------------------------------------------------------------------------
+#include <xercesc/util/XMLUniDefs.hpp>
+#include <xercesc/sax2/Attributes.hpp>
+#include "SAX2Print.hpp"
+
+
+// ---------------------------------------------------------------------------
+//  Local const data
+//
+//  Note: This is the 'safe' way to do these strings. If you compiler supports
+//        L"" style strings, and portability is not a concern, you can use
+//        those types constants directly.
+// ---------------------------------------------------------------------------
+static const XMLCh  gEndElement[] = { chOpenAngle, chForwardSlash, chNull };
+static const XMLCh  gEndPI[] = { chQuestion, chCloseAngle, chNull };
+static const XMLCh  gStartPI[] = { chOpenAngle, chQuestion, chNull };
+static const XMLCh  gXMLDecl1[] =
+{
+        chOpenAngle, chQuestion, chLatin_x, chLatin_m, chLatin_l
+    ,   chSpace, chLatin_v, chLatin_e, chLatin_r, chLatin_s, chLatin_i
+    ,   chLatin_o, chLatin_n, chEqual, chDoubleQuote, chDigit_1, chPeriod
+    ,   chDigit_0, chDoubleQuote, chSpace, chLatin_e, chLatin_n, chLatin_c
+    ,   chLatin_o, chLatin_d, chLatin_i, chLatin_n, chLatin_g, chEqual
+    ,   chDoubleQuote, chNull
+};
+
+static const XMLCh  gXMLDecl2[] =
+{
+        chDoubleQuote, chQuestion, chCloseAngle
+    ,   chLF, chNull
+};
+
+
+
+
+// ---------------------------------------------------------------------------
+//  SAX2PrintHandlers: Constructors and Destructor
+// ---------------------------------------------------------------------------
+SAX2PrintHandlers::SAX2PrintHandlers( const   char* const              encodingName
+                                    , const XMLFormatter::UnRepFlags unRepFlags
+									, const bool					 expandNamespaces) :
+
+    fFormatter
+    (
+        encodingName
+        , 0
+        , this
+        , XMLFormatter::NoEscapes
+        , unRepFlags
+    ),
+	fExpandNS ( expandNamespaces )
+{
+    //
+    //  Go ahead and output an XML Decl with our known encoding. This
+    //  is not the best answer, but its the best we can do until we
+    //  have SAX2 support.
+    //
+    fFormatter << gXMLDecl1 << fFormatter.getEncodingName() << gXMLDecl2;
+}
+
+SAX2PrintHandlers::~SAX2PrintHandlers()
+{
+}
+
+
+// ---------------------------------------------------------------------------
+//  SAX2PrintHandlers: Overrides of the output formatter target interface
+// ---------------------------------------------------------------------------
+void SAX2PrintHandlers::writeChars(const XMLByte* const /* toWrite */)
+{
+}
+
+void SAX2PrintHandlers::writeChars(const XMLByte* const toWrite,
+                                   const XMLSize_t      count,
+                                   XMLFormatter* const /* formatter */)
+{
+    // For this one, just dump them to the standard output
+    // Surprisingly, Solaris was the only platform on which
+    // required the char* cast to print out the string correctly.
+    // 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();
+}
+
+
+// ---------------------------------------------------------------------------
+//  SAX2PrintHandlers: Overrides of the SAX ErrorHandler interface
+// ---------------------------------------------------------------------------
+void SAX2PrintHandlers::error(const SAXParseException& e)
+{
+    XERCES_STD_QUALIFIER cerr << "\nError at file " << StrX(e.getSystemId())
+		 << ", line " << e.getLineNumber()
+		 << ", char " << e.getColumnNumber()
+         << "\n  Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+}
+
+void SAX2PrintHandlers::fatalError(const SAXParseException& e)
+{
+    XERCES_STD_QUALIFIER cerr << "\nFatal Error at file " << StrX(e.getSystemId())
+		 << ", line " << e.getLineNumber()
+		 << ", char " << e.getColumnNumber()
+         << "\n  Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+}
+
+void SAX2PrintHandlers::warning(const SAXParseException& e)
+{
+    XERCES_STD_QUALIFIER cerr << "\nWarning at file " << StrX(e.getSystemId())
+		 << ", line " << e.getLineNumber()
+		 << ", char " << e.getColumnNumber()
+         << "\n  Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+}
+
+
+// ---------------------------------------------------------------------------
+//  SAX2PrintHandlers: Overrides of the SAX DTDHandler interface
+// ---------------------------------------------------------------------------
+void SAX2PrintHandlers::unparsedEntityDecl(const    XMLCh* const /* name */
+                                          , const   XMLCh* const /* publicId */
+                                          , const   XMLCh* const /* systemId */
+                                          , const   XMLCh* const /* notationName */)
+{
+    // Not used at this time
+}
+
+
+void SAX2PrintHandlers::notationDecl(const  XMLCh* const /* name */
+                                    , const XMLCh* const /* publicId */
+                                    , const XMLCh* const /* systemId */)
+{
+    // Not used at this time
+}
+
+
+// ---------------------------------------------------------------------------
+//  SAX2PrintHandlers: Overrides of the SAX DocumentHandler interface
+// ---------------------------------------------------------------------------
+void SAX2PrintHandlers::characters(const     XMLCh* const    chars
+                                  , const   XMLSize_t    length)
+{
+    fFormatter.formatBuf(chars, length, XMLFormatter::CharEscapes);
+}
+
+
+void SAX2PrintHandlers::endDocument()
+{
+}
+
+
+void SAX2PrintHandlers::endElement(const XMLCh* const uri,
+								 const XMLCh* const localname,
+								 const XMLCh* const qname)
+{
+    // No escapes are legal here
+    fFormatter << XMLFormatter::NoEscapes << gEndElement ;
+	if ( fExpandNS )
+	{
+		if (XMLString::compareIString(uri,XMLUni::fgZeroLenString) != 0)
+				fFormatter  << uri << chColon;
+		fFormatter << localname << chCloseAngle;
+	}
+	else
+		fFormatter << qname << chCloseAngle;
+}
+
+
+void SAX2PrintHandlers::ignorableWhitespace( const   XMLCh* const chars
+                                            ,const  XMLSize_t length)
+{
+    fFormatter.formatBuf(chars, length, XMLFormatter::NoEscapes);
+}
+
+
+void SAX2PrintHandlers::processingInstruction(const  XMLCh* const target
+                                            , const XMLCh* const data)
+{
+    fFormatter << XMLFormatter::NoEscapes << gStartPI  << target;
+    if (data)
+        fFormatter << chSpace << data;
+    fFormatter << XMLFormatter::NoEscapes << gEndPI;
+}
+
+
+void SAX2PrintHandlers::startDocument()
+{
+}
+
+
+void SAX2PrintHandlers::startElement(const   XMLCh* const    uri,
+									const   XMLCh* const    localname,
+									const   XMLCh* const    qname,
+                                    const   Attributes&		attributes)
+{
+    // The name has to be representable without any escapes
+    fFormatter  << XMLFormatter::NoEscapes << chOpenAngle ;
+	if ( fExpandNS )
+	{
+		if (XMLString::compareIString(uri,XMLUni::fgZeroLenString) != 0)
+				fFormatter  << uri << chColon;
+		fFormatter << localname ;
+	}
+	else
+		fFormatter << qname ;
+
+    XMLSize_t len = attributes.getLength();
+    for (XMLSize_t index = 0; index < len; index++)
+    {
+        //
+        //  Again the name has to be completely representable. But the
+        //  attribute can have refs and requires the attribute style
+        //  escaping.
+        //
+        fFormatter  << XMLFormatter::NoEscapes << chSpace ;
+		if ( fExpandNS )
+		{
+			if (XMLString::compareIString(attributes.getURI(index),XMLUni::fgZeroLenString) != 0)
+				fFormatter  << attributes.getURI(index) << chColon;
+			fFormatter  << attributes.getLocalName(index) ;
+		}
+		else
+			fFormatter  << attributes.getQName(index) ;
+
+		fFormatter  << chEqual << chDoubleQuote
+                    << XMLFormatter::AttrEscapes
+		            << attributes.getValue(index)
+                    << XMLFormatter::NoEscapes
+                    << chDoubleQuote;
+    }
+    fFormatter << chCloseAngle;
+}

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAX2Print/SAX2PrintHandlers.hpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAX2Print/SAX2PrintHandlers.hpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAX2Print/SAX2PrintHandlers.hpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,128 @@
+/*
+ * 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.
+ */
+
+/*
+ * $Id: SAX2PrintHandlers.hpp 5336 2010-10-26 22:52:27Z brucedechant $
+ */
+
+#include    <xercesc/sax2/DefaultHandler.hpp>
+#include    <xercesc/framework/XMLFormatter.hpp>
+
+XERCES_CPP_NAMESPACE_USE
+
+class SAX2PrintHandlers : public DefaultHandler, private XMLFormatTarget
+{
+public:
+    // -----------------------------------------------------------------------
+    //  Constructors
+    // -----------------------------------------------------------------------
+    SAX2PrintHandlers
+    (
+        const   char* const                 encodingName
+        , const XMLFormatter::UnRepFlags    unRepFlags
+		, const bool						expandNamespaces
+    );
+    ~SAX2PrintHandlers();
+
+
+    // -----------------------------------------------------------------------
+    //  Implementations of the format target interface
+    // -----------------------------------------------------------------------
+    void writeChars
+    (
+        const   XMLByte* const  toWrite
+    );
+
+    virtual void writeChars
+    (
+        const   XMLByte* const  toWrite
+        , const XMLSize_t       count
+        , XMLFormatter* const   formatter
+    );
+
+
+    // -----------------------------------------------------------------------
+    //  Implementations of the SAX DocumentHandler interface
+    // -----------------------------------------------------------------------
+    void endDocument();
+
+    void endElement( const XMLCh* const uri,
+					 const XMLCh* const localname,
+					 const XMLCh* const qname);
+
+    void characters(const XMLCh* const chars, const XMLSize_t length);
+
+    void ignorableWhitespace
+    (
+        const   XMLCh* const    chars
+        , const XMLSize_t       length
+    );
+
+    void processingInstruction
+    (
+        const   XMLCh* const    target
+        , const XMLCh* const    data
+    );
+
+    void startDocument();
+
+    void startElement(	const   XMLCh* const    uri,
+						const   XMLCh* const    localname,
+						const   XMLCh* const    qname,
+					    const   Attributes&		attributes);
+
+
+
+    // -----------------------------------------------------------------------
+    //  Implementations of the SAX ErrorHandler interface
+    // -----------------------------------------------------------------------
+    void warning(const SAXParseException& exc);
+    void error(const SAXParseException& exc);
+    void fatalError(const SAXParseException& exc);
+
+
+
+    // -----------------------------------------------------------------------
+    //  Implementation of the SAX DTDHandler interface
+    // -----------------------------------------------------------------------
+    void notationDecl
+    (
+        const   XMLCh* const    name
+        , const XMLCh* const    publicId
+        , const XMLCh* const    systemId
+    );
+
+    void unparsedEntityDecl
+    (
+        const   XMLCh* const    name
+        , const XMLCh* const    publicId
+        , const XMLCh* const    systemId
+        , const XMLCh* const    notationName
+    );
+
+private :
+    // -----------------------------------------------------------------------
+    //  Private data members
+    //
+    //  fFormatter
+    //      This is the formatter object that is used to output the data
+    //      to the target. It is set up to format to the standard output
+    //      stream.
+    // -----------------------------------------------------------------------
+    XMLFormatter    fFormatter;
+	bool			fExpandNS ;
+};

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAXCount/SAXCount.cpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAXCount/SAXCount.cpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAXCount/SAXCount.cpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,316 @@
+/*
+ * 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.
+ */
+
+/*
+ * $Id: SAXCount.cpp 5336 2010-10-26 22:52:27Z brucedechant $
+ */
+
+
+// ---------------------------------------------------------------------------
+//  Includes
+// ---------------------------------------------------------------------------
+#include "SAXCount.hpp"
+#if defined(XERCES_NEW_IOSTREAMS)
+#include <fstream>
+#else
+#include <fstream.h>
+#endif
+#include <xercesc/util/OutOfMemoryException.hpp>
+
+// ---------------------------------------------------------------------------
+//  Local helper methods
+// ---------------------------------------------------------------------------
+void usage()
+{
+    XERCES_STD_QUALIFIER 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"
+            "in each XML file, using SAX API.\n\n"
+            "Options:\n"
+            "    -l          Indicate the input file is a List File that has a list of xml files.\n"
+            "                Default to off (Input file is an XML file).\n"
+            "    -v=xxx      Validation scheme [always | never | auto*].\n"
+            "    -n          Enable namespace processing. Defaults to off.\n"
+            "    -s          Enable schema processing. Defaults to off.\n"
+            "    -f          Enable full schema constraint checking. Defaults to off.\n"
+            "    -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;
+}
+
+
+// ---------------------------------------------------------------------------
+//  Program entry point
+// ---------------------------------------------------------------------------
+int main(int argC, char* argV[])
+{
+
+    // Check command line and extract arguments.
+    if (argC < 2)
+    {
+        usage();
+        return 1;
+    }
+
+    const char*              xmlFile = 0;
+    SAXParser::ValSchemes    valScheme = SAXParser::Val_Auto;
+    bool                     doNamespaces       = false;
+    bool                     doSchema           = false;
+    bool                     schemaFullChecking = false;
+    bool                     doList = false;
+    bool                     errorOccurred = false;
+    bool                     recognizeNEL = false;
+    char                     localeStr[64];
+    memset(localeStr, 0, sizeof localeStr);
+
+    int argInd;
+    for (argInd = 1; argInd < argC; argInd++)
+    {
+        // Break out on first parm not starting with a dash
+        if (argV[argInd][0] != '-')
+            break;
+
+        // Watch for special case help request
+        if (!strcmp(argV[argInd], "-?"))
+        {
+            usage();
+            return 2;
+        }
+         else if (!strncmp(argV[argInd], "-v=", 3)
+              ||  !strncmp(argV[argInd], "-V=", 3))
+        {
+            const char* const parm = &argV[argInd][3];
+
+            if (!strcmp(parm, "never"))
+                valScheme = SAXParser::Val_Never;
+            else if (!strcmp(parm, "auto"))
+                valScheme = SAXParser::Val_Auto;
+            else if (!strcmp(parm, "always"))
+                valScheme = SAXParser::Val_Always;
+            else
+            {
+                XERCES_STD_QUALIFIER cerr << "Unknown -v= value: " << parm << XERCES_STD_QUALIFIER endl;
+                return 2;
+            }
+        }
+         else if (!strcmp(argV[argInd], "-n")
+              ||  !strcmp(argV[argInd], "-N"))
+        {
+            doNamespaces = true;
+        }
+         else if (!strcmp(argV[argInd], "-s")
+              ||  !strcmp(argV[argInd], "-S"))
+        {
+            doSchema = true;
+        }
+         else if (!strcmp(argV[argInd], "-f")
+              ||  !strcmp(argV[argInd], "-F"))
+        {
+            schemaFullChecking = true;
+        }
+         else if (!strcmp(argV[argInd], "-l")
+              ||  !strcmp(argV[argInd], "-L"))
+        {
+            doList = true;
+        }
+         else if (!strcmp(argV[argInd], "-special:nel"))
+        {
+            // turning this on will lead to non-standard compliance behaviour
+            // it will recognize the unicode character 0x85 as new line character
+            // instead of regular character as specified in XML 1.0
+            // do not turn this on unless really necessary
+             recognizeNEL = true;
+        }
+         else if (!strncmp(argV[argInd], "-locale=", 8))
+        {
+             // Get out the end of line
+             strcpy(localeStr, &(argV[argInd][8]));
+        }
+        else
+        {
+            XERCES_STD_QUALIFIER cerr << "Unknown option '" << argV[argInd]
+                << "', ignoring it\n" << XERCES_STD_QUALIFIER endl;
+        }
+    }
+
+    //
+    //  There should at least one parameter left, and that
+    //  should be the file name(s).
+    //
+    if (argInd == argC)
+    {
+        usage();
+        return 1;
+    }
+
+    // Initialize the XML4C2 system
+    try
+    {
+        if (strlen(localeStr))
+        {
+            XMLPlatformUtils::Initialize(localeStr);
+        }
+        else
+        {
+            XMLPlatformUtils::Initialize();
+        }
+
+        if (recognizeNEL)
+        {
+            XMLPlatformUtils::recognizeNEL(recognizeNEL);
+        }
+    }
+
+    catch (const XMLException& toCatch)
+    {
+        XERCES_STD_QUALIFIER cerr << "Error during initialization! Message:\n"
+            << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl;
+        return 1;
+    }
+
+    //
+    //  Create a SAX parser object. Then, according to what we were told on
+    //  the command line, set it to validate or not.
+    //
+    SAXParser* parser = new SAXParser;
+
+    parser->setValidationScheme(valScheme);
+    parser->setDoNamespaces(doNamespaces);
+    parser->setDoSchema(doSchema);
+    parser->setHandleMultipleImports (true);
+    parser->setValidationSchemaFullChecking(schemaFullChecking);
+
+    //
+    //  Create our SAX handler object and install it on the parser, as the
+    //  document and error handler.
+    //
+    SAXCountHandlers handler;
+    parser->setDocumentHandler(&handler);
+    parser->setErrorHandler(&handler);
+
+
+    //
+    //  Get the starting time and kick off the parse of the indicated
+    //  file. Catch any exceptions that might propogate out of it.
+    //
+    unsigned long duration;
+
+    XERCES_STD_QUALIFIER 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;
+        return 2;
+    }
+
+    while (true)
+    {
+        char fURI[1000];
+        //initialize the array to zeros
+        memset(fURI,0,sizeof(fURI));
+
+        if (doList) {
+            if (! fin.eof() ) {
+                fin.getline (fURI, sizeof(fURI));
+                if (!*fURI)
+                    continue;
+                else {
+                    xmlFile = fURI;
+                    XERCES_STD_QUALIFIER cerr << "==Parsing== " << xmlFile << XERCES_STD_QUALIFIER endl;
+                }
+            }
+            else
+                break;
+        }
+        else {
+            if (argInd < argC)
+            {
+                 xmlFile = argV[argInd];
+                 argInd++;
+            }
+            else
+                break;
+        }
+
+        //reset error count first
+        handler.resetErrors();
+
+        try
+        {
+            const unsigned long startMillis = XMLPlatformUtils::getCurrentMillis();
+            parser->parse(xmlFile);
+            const unsigned long endMillis = XMLPlatformUtils::getCurrentMillis();
+            duration = endMillis - startMillis;
+        }
+        catch (const OutOfMemoryException&)
+        {
+            XERCES_STD_QUALIFIER cerr << "OutOfMemoryException" << XERCES_STD_QUALIFIER endl;
+            errorOccurred = true;
+            continue;
+        }
+        catch (const XMLException& e)
+        {
+            XERCES_STD_QUALIFIER cerr << "\nError during parsing: '" << xmlFile << "'\n"
+                << "Exception message is:  \n"
+                << StrX(e.getMessage()) << "\n" << XERCES_STD_QUALIFIER endl;
+            errorOccurred = true;
+            continue;
+        }
+
+        catch (...)
+        {
+            XERCES_STD_QUALIFIER cerr << "\nUnexpected exception during parsing: '" << xmlFile << "'\n";
+            errorOccurred = true;
+            continue;
+        }
+
+
+        // Print out the stats that we collected and time taken
+        if (!handler.getSawErrors())
+        {
+            XERCES_STD_QUALIFIER cout << xmlFile << ": " << duration << " ms ("
+                << handler.getElementCount() << " elems, "
+                << handler.getAttrCount() << " attrs, "
+                << handler.getSpaceCount() << " spaces, "
+                << handler.getCharacterCount() << " chars)" << XERCES_STD_QUALIFIER endl;
+        }
+        else
+            errorOccurred = true;
+    }
+
+    if (doList)
+        fin.close();
+
+    //
+    //  Delete the parser itself.  Must be done prior to calling Terminate, below.
+    //
+    delete parser;
+
+    // And call the termination method
+    XMLPlatformUtils::Terminate();
+
+    if (errorOccurred)
+        return 4;
+    else
+        return 0;
+
+}

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAXCount/SAXCount.hpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAXCount/SAXCount.hpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAXCount/SAXCount.hpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,81 @@
+/*
+ * 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.
+ */
+
+/*
+ * $Id: SAXCount.hpp 5336 2010-10-26 22:52:27Z brucedechant $
+ */
+
+
+// ---------------------------------------------------------------------------
+//  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 <iostream>
+#else
+#include <iostream.h>
+#endif
+#include <xercesc/parsers/SAXParser.hpp>
+#include "SAXCountHandlers.hpp"
+
+
+// ---------------------------------------------------------------------------
+//  This is a simple class that lets us do easy (though not terribly efficient)
+//  trancoding of XMLCh data to local code page for display.
+// ---------------------------------------------------------------------------
+class StrX
+{
+public :
+    // -----------------------------------------------------------------------
+    //  Constructors and Destructor
+    // -----------------------------------------------------------------------
+    StrX(const XMLCh* const toTranscode)
+    {
+        // Call the private transcoding method
+        fLocalForm = XMLString::transcode(toTranscode);
+    }
+
+    ~StrX()
+    {
+        XMLString::release(&fLocalForm);
+    }
+
+    // -----------------------------------------------------------------------
+    //  Getter methods
+    // -----------------------------------------------------------------------
+    const char* localForm() const
+    {
+        return fLocalForm;
+    }
+
+private :
+    // -----------------------------------------------------------------------
+    //  Private data members
+    //
+    //  fLocalForm
+    //      This is the local code page form of the string.
+    // -----------------------------------------------------------------------
+    char*   fLocalForm;
+};
+
+inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump)
+{
+    target << toDump.localForm();
+    return target;
+}

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAXCount/SAXCountHandlers.cpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAXCount/SAXCountHandlers.cpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAXCount/SAXCountHandlers.cpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,113 @@
+/*
+ * 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.
+ */
+
+/*
+ * $Id: SAXCountHandlers.cpp 5336 2010-10-26 22:52:27Z brucedechant $
+ */
+
+// ---------------------------------------------------------------------------
+//  Includes
+// ---------------------------------------------------------------------------
+#include "SAXCount.hpp"
+#include <xercesc/sax/AttributeList.hpp>
+#include <xercesc/sax/SAXParseException.hpp>
+#include <xercesc/sax/SAXException.hpp>
+
+
+
+// ---------------------------------------------------------------------------
+//  SAXCountHandlers: Constructors and Destructor
+// ---------------------------------------------------------------------------
+SAXCountHandlers::SAXCountHandlers() :
+
+    fAttrCount(0)
+    , fCharacterCount(0)
+    , fElementCount(0)
+    , fSpaceCount(0)
+    , fSawErrors(false)
+{
+}
+
+SAXCountHandlers::~SAXCountHandlers()
+{
+}
+
+
+// ---------------------------------------------------------------------------
+//  SAXCountHandlers: Implementation of the SAX DocumentHandler interface
+// ---------------------------------------------------------------------------
+void SAXCountHandlers::startElement(const   XMLCh* const    /* name */
+                                    ,       AttributeList&  attributes)
+{
+    fElementCount++;
+    fAttrCount += attributes.getLength();
+}
+
+void SAXCountHandlers::characters(  const   XMLCh* const    /* chars */
+								    , const XMLSize_t       length)
+{
+    fCharacterCount += length;
+}
+
+void SAXCountHandlers::ignorableWhitespace( const   XMLCh* const /* chars */
+										    , const XMLSize_t    length)
+{
+    fSpaceCount += length;
+}
+
+void SAXCountHandlers::resetDocument()
+{
+    fAttrCount = 0;
+    fCharacterCount = 0;
+    fElementCount = 0;
+    fSpaceCount = 0;
+}
+
+
+// ---------------------------------------------------------------------------
+//  SAXCountHandlers: Overrides of the SAX ErrorHandler interface
+// ---------------------------------------------------------------------------
+void SAXCountHandlers::error(const SAXParseException& e)
+{
+    fSawErrors = true;
+    XERCES_STD_QUALIFIER cerr << "\nError at file " << StrX(e.getSystemId())
+		 << ", line " << e.getLineNumber()
+		 << ", char " << e.getColumnNumber()
+         << "\n  Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+}
+
+void SAXCountHandlers::fatalError(const SAXParseException& e)
+{
+    fSawErrors = true;
+    XERCES_STD_QUALIFIER cerr << "\nFatal Error at file " << StrX(e.getSystemId())
+		 << ", line " << e.getLineNumber()
+		 << ", char " << e.getColumnNumber()
+         << "\n  Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+}
+
+void SAXCountHandlers::warning(const SAXParseException& e)
+{
+    XERCES_STD_QUALIFIER cerr << "\nWarning at file " << StrX(e.getSystemId())
+		 << ", line " << e.getLineNumber()
+		 << ", char " << e.getColumnNumber()
+         << "\n  Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+}
+
+void SAXCountHandlers::resetErrors()
+{
+    fSawErrors = false;
+}

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAXCount/SAXCountHandlers.hpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAXCount/SAXCountHandlers.hpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAXCount/SAXCountHandlers.hpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,111 @@
+/*
+ * 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.
+ */
+
+/*
+ * $Id: SAXCountHandlers.hpp 5336 2010-10-26 22:52:27Z brucedechant $
+ */
+
+
+// ---------------------------------------------------------------------------
+//  Includes
+// ---------------------------------------------------------------------------
+#include <xercesc/sax/HandlerBase.hpp>
+
+XERCES_CPP_NAMESPACE_USE
+
+XERCES_CPP_NAMESPACE_BEGIN
+class AttributeList;
+XERCES_CPP_NAMESPACE_END
+
+class SAXCountHandlers : public HandlerBase
+{
+public:
+    // -----------------------------------------------------------------------
+    //  Constructors and Destructor
+    // -----------------------------------------------------------------------
+    SAXCountHandlers();
+    ~SAXCountHandlers();
+
+
+    // -----------------------------------------------------------------------
+    //  Getter methods
+    // -----------------------------------------------------------------------
+    XMLSize_t getElementCount() const
+    {
+        return fElementCount;
+    }
+
+    XMLSize_t getAttrCount() const
+    {
+        return fAttrCount;
+    }
+
+    XMLSize_t getCharacterCount() const
+    {
+        return fCharacterCount;
+    }
+
+    bool getSawErrors() const
+    {
+        return fSawErrors;
+    }
+
+    XMLSize_t getSpaceCount() const
+    {
+        return fSpaceCount;
+    }
+
+
+    // -----------------------------------------------------------------------
+    //  Handlers for the SAX DocumentHandler interface
+    // -----------------------------------------------------------------------
+	void startElement(const XMLCh* const name, AttributeList& attributes);
+    void characters(const XMLCh* const chars, const XMLSize_t length);
+    void ignorableWhitespace(const XMLCh* const chars, const XMLSize_t length);
+    void resetDocument();
+
+
+    // -----------------------------------------------------------------------
+    //  Handlers for the SAX ErrorHandler interface
+    // -----------------------------------------------------------------------
+	void warning(const SAXParseException& exc);
+    void error(const SAXParseException& exc);
+    void fatalError(const SAXParseException& exc);
+    void resetErrors();
+
+
+private:
+    // -----------------------------------------------------------------------
+    //  Private data members
+    //
+    //  fAttrCount
+    //  fCharacterCount
+    //  fElementCount
+    //  fSpaceCount
+    //      These are just counters that are run upwards based on the input
+    //      from the document handlers.
+    //
+    //  fSawErrors
+    //      This is set by the error handlers, and is queryable later to
+    //      see if any errors occured.
+    // -----------------------------------------------------------------------
+    XMLSize_t       fAttrCount;
+    XMLSize_t       fCharacterCount;
+    XMLSize_t       fElementCount;
+    XMLSize_t       fSpaceCount;
+    bool            fSawErrors;
+};

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAXPrint/SAXPrint.cpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAXPrint/SAXPrint.cpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAXPrint/SAXPrint.cpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,266 @@
+/*
+ * 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.
+ */
+
+/*
+ * $Id: SAXPrint.cpp 5336 2010-10-26 22:52:27Z brucedechant $
+ */
+
+
+// ---------------------------------------------------------------------------
+//  Includes
+// ---------------------------------------------------------------------------
+#include <xercesc/util/PlatformUtils.hpp>
+#include <xercesc/util/TransService.hpp>
+#include <xercesc/parsers/SAXParser.hpp>
+#include "SAXPrint.hpp"
+#include <xercesc/util/OutOfMemoryException.hpp>
+
+// ---------------------------------------------------------------------------
+//  Local data
+//
+//  doNamespaces
+//      Indicates whether namespace processing should be enabled or not.
+//      Defaults to disabled.
+//
+//  doSchema
+//      Indicates whether schema processing should be enabled or not.
+//      Defaults to disabled.
+//
+//  schemaFullChecking
+//      Indicates whether full schema constraint checking should be enabled or not.
+//      Defaults to disabled.
+//
+//  encodingName
+//      The encoding we are to output in. If not set on the command line,
+//      then it is defaulted to LATIN1.
+//
+//  xmlFile
+//      The path to the file to parser. Set via command line.
+//
+//  valScheme
+//      Indicates what validation scheme to use. It defaults to 'auto', but
+//      can be set via the -v= command.
+// ---------------------------------------------------------------------------
+static bool                     doNamespaces        = false;
+static bool                     doSchema            = false;
+static bool                     schemaFullChecking  = false;
+static const char*              encodingName    = "LATIN1";
+static XMLFormatter::UnRepFlags unRepFlags      = XMLFormatter::UnRep_CharRef;
+static char*                    xmlFile         = 0;
+static SAXParser::ValSchemes    valScheme       = SAXParser::Val_Auto;
+
+
+
+// ---------------------------------------------------------------------------
+//  Local helper methods
+// ---------------------------------------------------------------------------
+static void usage()
+{
+    XERCES_STD_QUALIFIER 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"
+            "XML file.\n\n"
+            "Options:\n"
+             "    -u=xxx      Handle unrepresentable chars [fail | rep | ref*].\n"
+             "    -v=xxx      Validation scheme [always | never | auto*].\n"
+             "    -n          Enable namespace processing.\n"
+             "    -s          Enable schema processing.\n"
+             "    -f          Enable full schema constraint checking.\n"
+             "    -x=XXX      Use a particular encoding for output (LATIN1*).\n"
+             "    -?          Show this help.\n\n"
+             "  * = Default if not provided explicitly.\n\n"
+             "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;
+}
+
+
+
+// ---------------------------------------------------------------------------
+//  Program entry point
+// ---------------------------------------------------------------------------
+int main(int argC, char* argV[])
+{
+    // Initialize the XML4C2 system
+    try
+    {
+         XMLPlatformUtils::Initialize();
+    }
+
+    catch (const XMLException& toCatch)
+    {
+         XERCES_STD_QUALIFIER cerr << "Error during initialization! :\n"
+              << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl;
+         return 1;
+    }
+
+    // Check command line and extract arguments.
+    if (argC < 2)
+    {
+        usage();
+        XMLPlatformUtils::Terminate();
+        return 1;
+    }
+
+    int parmInd;
+    for (parmInd = 1; parmInd < argC; parmInd++)
+    {
+        // Break out on first parm not starting with a dash
+        if (argV[parmInd][0] != '-')
+            break;
+
+        // Watch for special case help request
+        if (!strcmp(argV[parmInd], "-?"))
+        {
+            usage();
+            XMLPlatformUtils::Terminate();
+            return 2;
+        }
+         else if (!strncmp(argV[parmInd], "-v=", 3)
+              ||  !strncmp(argV[parmInd], "-V=", 3))
+        {
+            const char* const parm = &argV[parmInd][3];
+
+            if (!strcmp(parm, "never"))
+                valScheme = SAXParser::Val_Never;
+            else if (!strcmp(parm, "auto"))
+                valScheme = SAXParser::Val_Auto;
+            else if (!strcmp(parm, "always"))
+                valScheme = SAXParser::Val_Always;
+            else
+            {
+                XERCES_STD_QUALIFIER cerr << "Unknown -v= value: " << parm << XERCES_STD_QUALIFIER endl;
+                XMLPlatformUtils::Terminate();
+                return 2;
+            }
+        }
+         else if (!strcmp(argV[parmInd], "-n")
+              ||  !strcmp(argV[parmInd], "-N"))
+        {
+            doNamespaces = true;
+        }
+         else if (!strcmp(argV[parmInd], "-s")
+              ||  !strcmp(argV[parmInd], "-S"))
+        {
+            doSchema = true;
+        }
+         else if (!strcmp(argV[parmInd], "-f")
+              ||  !strcmp(argV[parmInd], "-F"))
+        {
+            schemaFullChecking = true;
+        }
+         else if (!strncmp(argV[parmInd], "-x=", 3)
+              ||  !strncmp(argV[parmInd], "-X=", 3))
+        {
+            // Get out the encoding name
+            encodingName = &argV[parmInd][3];
+        }
+         else if (!strncmp(argV[parmInd], "-u=", 3)
+              ||  !strncmp(argV[parmInd], "-U=", 3))
+        {
+            const char* const parm = &argV[parmInd][3];
+
+            if (!strcmp(parm, "fail"))
+                unRepFlags = XMLFormatter::UnRep_Fail;
+            else if (!strcmp(parm, "rep"))
+                unRepFlags = XMLFormatter::UnRep_Replace;
+            else if (!strcmp(parm, "ref"))
+                unRepFlags = XMLFormatter::UnRep_CharRef;
+            else
+            {
+                XERCES_STD_QUALIFIER cerr << "Unknown -u= value: " << parm << XERCES_STD_QUALIFIER endl;
+                XMLPlatformUtils::Terminate();
+                return 2;
+            }
+        }
+         else
+        {
+            XERCES_STD_QUALIFIER cerr << "Unknown option '" << argV[parmInd]
+                 << "', ignoring it\n" << XERCES_STD_QUALIFIER endl;
+        }
+    }
+
+    //
+    //  And now we have to have only one parameter left and it must be
+    //  the file name.
+    //
+    if (parmInd + 1 != argC)
+    {
+        usage();
+        XMLPlatformUtils::Terminate();
+        return 1;
+    }
+    xmlFile = argV[parmInd];
+    int errorCount = 0;
+
+    //
+    //  Create a SAX parser object. Then, according to what we were told on
+    //  the command line, set it to validate or not.
+    //
+    SAXParser* parser = new SAXParser;
+    parser->setValidationScheme(valScheme);
+    parser->setDoNamespaces(doNamespaces);
+    parser->setDoSchema(doSchema);
+    parser->setHandleMultipleImports (true);
+    parser->setValidationSchemaFullChecking(schemaFullChecking);
+
+    //
+    //  Create the handler object and install it as the document and error
+    //  handler for the parser-> Then parse the file and catch any exceptions
+    //  that propogate out
+    //
+    int errorCode = 0;
+    try
+    {
+        SAXPrintHandlers handler(encodingName, unRepFlags);
+        parser->setDocumentHandler(&handler);
+        parser->setErrorHandler(&handler);
+        parser->parse(xmlFile);
+        errorCount = parser->getErrorCount();
+    }
+    catch (const OutOfMemoryException&)
+    {
+        XERCES_STD_QUALIFIER cerr << "OutOfMemoryException" << XERCES_STD_QUALIFIER endl;
+        errorCode = 5;
+    }
+    catch (const XMLException& toCatch)
+    {
+        XERCES_STD_QUALIFIER cerr << "\nAn error occurred\n  Error: "
+             << StrX(toCatch.getMessage())
+             << "\n" << XERCES_STD_QUALIFIER endl;
+        errorCode = 4;
+    }
+    if(errorCode) {
+        XMLPlatformUtils::Terminate();
+        return errorCode;
+    }
+
+    //
+    //  Delete the parser itself.  Must be done prior to calling Terminate, below.
+    //
+    delete parser;
+
+    // And call the termination method
+    XMLPlatformUtils::Terminate();
+
+    if (errorCount > 0)
+        return 4;
+    else
+        return 0;
+}

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAXPrint/SAXPrint.hpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAXPrint/SAXPrint.hpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAXPrint/SAXPrint.hpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,78 @@
+/*
+ * 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.
+ */
+
+/*
+ * $Id: SAXPrint.hpp 5336 2010-10-26 22:52:27Z brucedechant $
+ */
+
+// ---------------------------------------------------------------------------
+//  Includes for all the program files to see
+// ---------------------------------------------------------------------------
+#include <string.h>
+#if defined(XERCES_NEW_IOSTREAMS)
+#include <iostream>
+#else
+#include <iostream.h>
+#endif
+#include <stdlib.h>
+#include "SAXPrintHandlers.hpp"
+
+
+// ---------------------------------------------------------------------------
+//  This is a simple class that lets us do easy (though not terribly efficient)
+//  trancoding of XMLCh data to local code page for display.
+// ---------------------------------------------------------------------------
+class StrX
+{
+public :
+    // -----------------------------------------------------------------------
+    //  Constructors and Destructor
+    // -----------------------------------------------------------------------
+    StrX(const XMLCh* const toTranscode)
+    {
+        // Call the private transcoding method
+        fLocalForm = XMLString::transcode(toTranscode);
+    }
+
+    ~StrX()
+    {
+        XMLString::release(&fLocalForm);
+    }
+
+    // -----------------------------------------------------------------------
+    //  Getter methods
+    // -----------------------------------------------------------------------
+    const char* localForm() const
+    {
+        return fLocalForm;
+    }
+
+private :
+    // -----------------------------------------------------------------------
+    //  Private data members
+    //
+    //  fLocalForm
+    //      This is the local code page form of the string.
+    // -----------------------------------------------------------------------
+    char*   fLocalForm;
+};
+
+inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump)
+{
+    target << toDump.localForm();
+    return target;
+}

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAXPrint/SAXPrintHandlers.cpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAXPrint/SAXPrintHandlers.cpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAXPrint/SAXPrintHandlers.cpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,227 @@
+/*
+ * 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.
+ */
+
+/*
+ * $Id: SAXPrintHandlers.cpp 5336 2010-10-26 22:52:27Z brucedechant $
+ */
+
+
+
+// ---------------------------------------------------------------------------
+//  Includes
+// ---------------------------------------------------------------------------
+#include <xercesc/util/XMLUniDefs.hpp>
+#include <xercesc/sax/AttributeList.hpp>
+#include "SAXPrint.hpp"
+
+
+// ---------------------------------------------------------------------------
+//  Local const data
+//
+//  Note: This is the 'safe' way to do these strings. If you compiler supports
+//        L"" style strings, and portability is not a concern, you can use
+//        those types constants directly.
+// ---------------------------------------------------------------------------
+static const XMLCh  gEndElement[] = { chOpenAngle, chForwardSlash, chNull };
+static const XMLCh  gEndPI[] = { chQuestion, chCloseAngle, chNull };
+static const XMLCh  gStartPI[] = { chOpenAngle, chQuestion, chNull };
+static const XMLCh  gXMLDecl1[] =
+{
+        chOpenAngle, chQuestion, chLatin_x, chLatin_m, chLatin_l
+    ,   chSpace, chLatin_v, chLatin_e, chLatin_r, chLatin_s, chLatin_i
+    ,   chLatin_o, chLatin_n, chEqual, chDoubleQuote, chDigit_1, chPeriod
+    ,   chDigit_0, chDoubleQuote, chSpace, chLatin_e, chLatin_n, chLatin_c
+    ,   chLatin_o, chLatin_d, chLatin_i, chLatin_n, chLatin_g, chEqual
+    ,   chDoubleQuote, chNull
+};
+
+static const XMLCh  gXMLDecl2[] =
+{
+        chDoubleQuote, chQuestion, chCloseAngle
+    ,   chLF, chNull
+};
+
+
+
+
+// ---------------------------------------------------------------------------
+//  SAXPrintHandlers: Constructors and Destructor
+// ---------------------------------------------------------------------------
+SAXPrintHandlers::SAXPrintHandlers( const   char* const              encodingName
+                                    , const XMLFormatter::UnRepFlags unRepFlags) :
+
+    fFormatter
+    (
+        encodingName
+        , 0
+        , this
+        , XMLFormatter::NoEscapes
+        , unRepFlags
+    )
+{
+    //
+    //  Go ahead and output an XML Decl with our known encoding. This
+    //  is not the best answer, but its the best we can do until we
+    //  have SAX2 support.
+    //
+    fFormatter << gXMLDecl1 << fFormatter.getEncodingName() << gXMLDecl2;
+}
+
+SAXPrintHandlers::~SAXPrintHandlers()
+{
+}
+
+
+// ---------------------------------------------------------------------------
+//  SAXPrintHandlers: Overrides of the output formatter target interface
+// ---------------------------------------------------------------------------
+void SAXPrintHandlers::writeChars(const XMLByte* const /* toWrite */)
+{
+}
+
+void SAXPrintHandlers::writeChars(const XMLByte* const toWrite,
+                                  const XMLSize_t      count,
+                                  XMLFormatter* const /* formatter */)
+{
+    // For this one, just dump them to the standard output
+    // Surprisingly, Solaris was the only platform on which
+    // required the char* cast to print out the string correctly.
+    // 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();
+}
+
+
+// ---------------------------------------------------------------------------
+//  SAXPrintHandlers: Overrides of the SAX ErrorHandler interface
+// ---------------------------------------------------------------------------
+void SAXPrintHandlers::error(const SAXParseException& e)
+{
+    XERCES_STD_QUALIFIER cerr << "\nError at file " << StrX(e.getSystemId())
+		 << ", line " << e.getLineNumber()
+		 << ", char " << e.getColumnNumber()
+         << "\n  Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+}
+
+void SAXPrintHandlers::fatalError(const SAXParseException& e)
+{
+    XERCES_STD_QUALIFIER cerr << "\nFatal Error at file " << StrX(e.getSystemId())
+		 << ", line " << e.getLineNumber()
+		 << ", char " << e.getColumnNumber()
+         << "\n  Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+}
+
+void SAXPrintHandlers::warning(const SAXParseException& e)
+{
+    XERCES_STD_QUALIFIER cerr << "\nWarning at file " << StrX(e.getSystemId())
+		 << ", line " << e.getLineNumber()
+		 << ", char " << e.getColumnNumber()
+         << "\n  Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+}
+
+
+// ---------------------------------------------------------------------------
+//  SAXPrintHandlers: Overrides of the SAX DTDHandler interface
+// ---------------------------------------------------------------------------
+void SAXPrintHandlers::unparsedEntityDecl(const     XMLCh* const /* name */
+                                          , const   XMLCh* const /* publicId */
+                                          , const   XMLCh* const /* systemId */
+                                          , const   XMLCh* const /* notationName */)
+{
+    // Not used at this time
+}
+
+
+void SAXPrintHandlers::notationDecl(const   XMLCh* const /* name */
+                                    , const XMLCh* const /* publicId */
+                                    , const XMLCh* const /* systemId */)
+{
+    // Not used at this time
+}
+
+
+// ---------------------------------------------------------------------------
+//  SAXPrintHandlers: Overrides of the SAX DocumentHandler interface
+// ---------------------------------------------------------------------------
+void SAXPrintHandlers::characters(const     XMLCh* const    chars
+                                  , const   XMLSize_t       length)
+{
+    fFormatter.formatBuf(chars, length, XMLFormatter::CharEscapes);
+}
+
+
+void SAXPrintHandlers::endDocument()
+{
+}
+
+
+void SAXPrintHandlers::endElement(const XMLCh* const name)
+{
+    // No escapes are legal here
+    fFormatter << XMLFormatter::NoEscapes << gEndElement << name << chCloseAngle;
+}
+
+
+void SAXPrintHandlers::ignorableWhitespace( const   XMLCh* const chars
+                                            ,const  XMLSize_t    length)
+{
+    fFormatter.formatBuf(chars, length, XMLFormatter::NoEscapes);
+}
+
+
+void SAXPrintHandlers::processingInstruction(const  XMLCh* const target
+                                            , const XMLCh* const data)
+{
+    fFormatter << XMLFormatter::NoEscapes << gStartPI  << target;
+    if (data)
+        fFormatter << chSpace << data;
+    fFormatter << XMLFormatter::NoEscapes << gEndPI;
+}
+
+
+void SAXPrintHandlers::startDocument()
+{
+}
+
+
+void SAXPrintHandlers::startElement(const   XMLCh* const    name
+                                    ,       AttributeList&  attributes)
+{
+    // The name has to be representable without any escapes
+    fFormatter  << XMLFormatter::NoEscapes
+                << chOpenAngle << name;
+
+    XMLSize_t len = attributes.getLength();
+    for (XMLSize_t index = 0; index < len; index++)
+    {
+        //
+        //  Again the name has to be completely representable. But the
+        //  attribute can have refs and requires the attribute style
+        //  escaping.
+        //
+        fFormatter  << XMLFormatter::NoEscapes
+                    << chSpace << attributes.getName(index)
+                    << chEqual << chDoubleQuote
+                    << XMLFormatter::AttrEscapes
+		            << attributes.getValue(index)
+                    << XMLFormatter::NoEscapes
+                    << chDoubleQuote;
+    }
+    fFormatter << chCloseAngle;
+}

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAXPrint/SAXPrintHandlers.hpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAXPrint/SAXPrintHandlers.hpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SAXPrint/SAXPrintHandlers.hpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,123 @@
+/*
+ * 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.
+ */
+
+/*
+ * $Id: SAXPrintHandlers.hpp 5336 2010-10-26 22:52:27Z brucedechant $
+ */
+
+
+#include    <xercesc/sax/HandlerBase.hpp>
+#include    <xercesc/framework/XMLFormatter.hpp>
+
+XERCES_CPP_NAMESPACE_USE
+
+class SAXPrintHandlers : public HandlerBase, private XMLFormatTarget
+{
+public:
+    // -----------------------------------------------------------------------
+    //  Constructors
+    // -----------------------------------------------------------------------
+    SAXPrintHandlers
+    (
+        const   char* const                 encodingName
+        , const XMLFormatter::UnRepFlags    unRepFlags
+    );
+    ~SAXPrintHandlers();
+
+
+    // -----------------------------------------------------------------------
+    //  Implementations of the format target interface
+    // -----------------------------------------------------------------------
+    void writeChars
+    (
+        const   XMLByte* const  toWrite
+    );
+
+    virtual void writeChars
+    (
+        const   XMLByte* const  toWrite
+        , const XMLSize_t       count
+        , XMLFormatter* const   formatter
+    );
+
+
+    // -----------------------------------------------------------------------
+    //  Implementations of the SAX DocumentHandler interface
+    // -----------------------------------------------------------------------
+    void endDocument();
+
+    void endElement(const XMLCh* const name);
+
+    void characters(const XMLCh* const chars, const XMLSize_t length);
+
+    void ignorableWhitespace
+    (
+        const   XMLCh* const    chars
+        , const XMLSize_t       length
+    );
+
+    void processingInstruction
+    (
+        const   XMLCh* const    target
+        , const XMLCh* const    data
+    );
+
+    void startDocument();
+
+    void startElement(const XMLCh* const name, AttributeList& attributes);
+
+
+
+    // -----------------------------------------------------------------------
+    //  Implementations of the SAX ErrorHandler interface
+    // -----------------------------------------------------------------------
+    void warning(const SAXParseException& exc);
+    void error(const SAXParseException& exc);
+    void fatalError(const SAXParseException& exc);
+
+
+
+    // -----------------------------------------------------------------------
+    //  Implementation of the SAX DTDHandler interface
+    // -----------------------------------------------------------------------
+    void notationDecl
+    (
+        const   XMLCh* const    name
+        , const XMLCh* const    publicId
+        , const XMLCh* const    systemId
+    );
+
+    void unparsedEntityDecl
+    (
+        const   XMLCh* const    name
+        , const XMLCh* const    publicId
+        , const XMLCh* const    systemId
+        , const XMLCh* const    notationName
+    );
+
+
+private :
+    // -----------------------------------------------------------------------
+    //  Private data members
+    //
+    //  fFormatter
+    //      This is the formatter object that is used to output the data
+    //      to the target. It is set up to format to the standard output
+    //      stream.
+    // -----------------------------------------------------------------------
+    XMLFormatter    fFormatter;
+};

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SCMPrint/SCMPrint.cpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SCMPrint/SCMPrint.cpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SCMPrint/SCMPrint.cpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,565 @@
+/*
+ * 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.
+ */
+
+/*
+ * $Id: SCMPrint.cpp 5336 2010-10-26 22:52:27Z brucedechant $
+ */
+
+// ---------------------------------------------------------------------------
+//  Includes
+// ---------------------------------------------------------------------------
+#include <xercesc/util/PlatformUtils.hpp>
+#include <xercesc/sax2/SAX2XMLReader.hpp>
+#include <xercesc/sax2/XMLReaderFactory.hpp>
+#include <xercesc/framework/XMLGrammarPoolImpl.hpp>
+#include <xercesc/framework/psvi/XSModel.hpp>
+#include <xercesc/framework/psvi/XSElementDeclaration.hpp>
+#include <xercesc/framework/psvi/XSTypeDefinition.hpp>
+#include <xercesc/framework/psvi/XSSimpleTypeDefinition.hpp>
+#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 <xercesc/util/OutOfMemoryException.hpp>
+#include <xercesc/sax2/DefaultHandler.hpp>
+
+XERCES_CPP_NAMESPACE_USE
+
+// ---------------------------------------------------------------------------
+//  Forward references
+// ---------------------------------------------------------------------------
+static void usage();
+
+void processElements(XSNamedMap<XSObject> *xsElements);
+void processTypeDefinitions(XSNamedMap<XSObject> *xsTypeDefs);
+void printBasic(XSObject *xsObject, const char *type);
+void printCompositorTypeConnector(XSModelGroup::COMPOSITOR_TYPE type);
+void processSimpleTypeDefinition(XSSimpleTypeDefinition * xsSimpleTypeDef);
+void processComplexTypeDefinition(XSComplexTypeDefinition *xsComplexTypeDef);
+void processParticle(XSParticle *xsParticle);
+
+// ---------------------------------------------------------------------------
+//  This is a simple class that lets us do easy (though not terribly efficient)
+//  trancoding of XMLCh data to local code page for display.
+// ---------------------------------------------------------------------------
+class StrX
+{
+public :
+    // -----------------------------------------------------------------------
+    //  Constructors and Destructor
+    // -----------------------------------------------------------------------
+    StrX(const XMLCh* const toTranscode)
+{
+        // Call the private transcoding method
+        fLocalForm = XMLString::transcode(toTranscode);
+}
+
+~StrX()
+{
+    XMLString::release(&fLocalForm);
+}
+
+
+// -----------------------------------------------------------------------
+//  Getter methods
+// -----------------------------------------------------------------------
+const char* localForm() const
+{
+    return fLocalForm;
+}
+
+private :
+// -----------------------------------------------------------------------
+//  Private data members
+//
+//  fLocalForm
+//      This is the local code page form of the string.
+// -----------------------------------------------------------------------
+char*   fLocalForm;
+};
+
+inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump)
+{
+    target << toDump.localForm();
+    return target;
+}
+
+class SCMPrintHandler : public DefaultHandler
+{
+public:
+    // -----------------------------------------------------------------------
+    //  Constructors and Destructor
+    // -----------------------------------------------------------------------
+    SCMPrintHandler();
+    ~SCMPrintHandler();
+
+    bool getSawErrors() const
+    {
+        return fSawErrors;
+    }
+
+	void warning(const SAXParseException& exc);
+    void error(const SAXParseException& exc);
+    void fatalError(const SAXParseException& exc);
+    void resetErrors();
+
+
+private:
+    bool            fSawErrors;
+};
+
+SCMPrintHandler::SCMPrintHandler() :
+    fSawErrors(false)
+{
+}
+
+SCMPrintHandler::~SCMPrintHandler()
+{
+}
+
+// ---------------------------------------------------------------------------
+//  SCMPrintHandler: Overrides of the SAX ErrorHandler interface
+// ---------------------------------------------------------------------------
+void SCMPrintHandler::error(const SAXParseException& e)
+{
+    fSawErrors = true;
+    XERCES_STD_QUALIFIER cerr << "\nError at file " << StrX(e.getSystemId())
+		 << ", line " << e.getLineNumber()
+		 << ", char " << e.getColumnNumber()
+         << "\n  Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+}
+
+void SCMPrintHandler::fatalError(const SAXParseException& e)
+{
+    fSawErrors = true;
+    XERCES_STD_QUALIFIER cerr << "\nFatal Error at file " << StrX(e.getSystemId())
+		 << ", line " << e.getLineNumber()
+		 << ", char " << e.getColumnNumber()
+         << "\n  Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+}
+
+void SCMPrintHandler::warning(const SAXParseException& e)
+{
+    XERCES_STD_QUALIFIER cerr << "\nWarning at file " << StrX(e.getSystemId())
+		 << ", line " << e.getLineNumber()
+		 << ", char " << e.getColumnNumber()
+         << "\n  Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+}
+
+void SCMPrintHandler::resetErrors()
+{
+    fSawErrors = false;
+}
+
+// ---------------------------------------------------------------------------
+//  Local helper methods
+// ---------------------------------------------------------------------------
+static void usage()
+{
+    XERCES_STD_QUALIFIER 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"
+    "Options:\n"
+	"    -f     Enable full schema constraint checking processing. Defaults to off.\n"
+    "    -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;
+}
+
+// ---------------------------------------------------------------------------
+//  Program entry point
+// ---------------------------------------------------------------------------
+int main(int argC, char* argV[])
+{
+    // Check command line and extract arguments.
+    if (argC < 2)
+    {
+        usage();
+        return 1;
+    }
+
+    // cannot return out of catch-blocks lest exception-destruction
+    // result in calls to destroyed memory handler!
+    int errorCode = 0;
+    try
+    {
+        XMLPlatformUtils::Initialize();
+    }
+
+    catch (const XMLException& toCatch)
+    {
+        XERCES_STD_QUALIFIER cerr   << "Error during initialization! Message:\n"
+        << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl;
+        errorCode = 2;
+    }
+    if(errorCode) {
+        XMLPlatformUtils::Terminate();
+        return errorCode;
+    }
+
+    bool							doList				= false;
+    bool							schemaFullChecking	= false;
+    const char*                     xsdFile             = 0;
+    int argInd;
+
+    for (argInd = 1; argInd < argC; argInd++)
+    {
+        // Break out on first parm not starting with a dash
+        if (argV[argInd][0] != '-')
+            break;
+
+        // Watch for special case help request
+        if (!strcmp(argV[argInd], "-?"))
+        {
+            usage();
+            return 1;
+        }
+        else if (!strcmp(argV[argInd], "-l")
+              ||  !strcmp(argV[argInd], "-L"))
+        {
+            doList = true;
+        }
+        else if (!strcmp(argV[argInd], "-f")
+              ||  !strcmp(argV[argInd], "-F"))
+        {
+            schemaFullChecking = true;
+        }
+        else
+        {
+            XERCES_STD_QUALIFIER cerr << "Unknown option '" << argV[argInd]
+                << "', ignoring it\n" << XERCES_STD_QUALIFIER endl;
+        }
+    }
+
+    //
+    //  There should be only one and only one parameter left, and that
+    //  should be the file name.
+    //
+    if (argInd != argC - 1)
+    {
+        usage();
+        return 1;
+    }
+
+    XMLGrammarPool *grammarPool = 0;
+    SAX2XMLReader* parser = 0;
+    try
+    {
+        grammarPool = new XMLGrammarPoolImpl(XMLPlatformUtils::fgMemoryManager);
+
+        parser = XMLReaderFactory::createXMLReader(XMLPlatformUtils::fgMemoryManager, grammarPool);
+        parser->setFeature(XMLUni::fgSAX2CoreNameSpaces, true);
+        parser->setFeature(XMLUni::fgXercesSchema, true);
+        parser->setFeature(XMLUni::fgXercesHandleMultipleImports, true);
+        parser->setFeature(XMLUni::fgXercesSchemaFullChecking, schemaFullChecking);
+        parser->setFeature(XMLUni::fgSAX2CoreNameSpacePrefixes, false);
+        parser->setFeature(XMLUni::fgSAX2CoreValidation, true);
+        parser->setFeature(XMLUni::fgXercesDynamic, true);
+        parser->setProperty(XMLUni::fgXercesScannerName, (void *)XMLUni::fgSGXMLScanner);
+
+        SCMPrintHandler handler;
+        parser->setErrorHandler(&handler);
+
+        bool more = true;
+        bool parsedOneSchemaOkay = false;
+        XERCES_STD_QUALIFIER 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;
+            return 3;
+        }
+
+        while (more)
+        {
+            char fURI[1000];
+            //initialize the array to zeros
+            memset(fURI,0,sizeof(fURI));
+
+            if (doList) {
+                if (! fin.eof() ) {
+                    fin.getline (fURI, sizeof(fURI));
+                    if (!*fURI)
+                        continue;
+                    else {
+                        xsdFile = fURI;
+                        XERCES_STD_QUALIFIER cerr << "==Parsing== " << xsdFile << XERCES_STD_QUALIFIER endl;
+                    }
+                }
+                else
+                    break;
+            }
+            else {
+                xsdFile = argV[argInd];
+                more = false;
+            }
+
+            parser->loadGrammar(xsdFile, Grammar::SchemaGrammarType, true);
+            if (handler.getSawErrors())
+            {
+                handler.resetErrors();
+            }
+            else
+            {
+                parsedOneSchemaOkay = true;
+            }
+        }
+
+        if (parsedOneSchemaOkay)
+        {
+            XERCES_STD_QUALIFIER cout << "********** Printing out information from Schema **********" << "\n\n";
+            bool updatedXSModel;
+            XSModel *xsModel = grammarPool->getXSModel(updatedXSModel);
+            if (xsModel)
+            {
+                StringList *namespaces = xsModel->getNamespaces();
+                for (unsigned i = 0; i < namespaces->size(); i++) {
+
+                    XERCES_STD_QUALIFIER 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;
+
+                    processElements(xsModel->getComponentsByNamespace(XSConstants::ELEMENT_DECLARATION,
+                                                                  nameSpace));
+                    processTypeDefinitions(xsModel->getComponentsByNamespace(XSConstants::TYPE_DEFINITION,
+                                                                         nameSpace));
+                }
+            }
+            else
+            {
+                XERCES_STD_QUALIFIER 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";
+        }
+
+        XERCES_STD_QUALIFIER cout << XERCES_STD_QUALIFIER endl;
+    }
+    catch (const OutOfMemoryException&)
+    {
+        XERCES_STD_QUALIFIER cerr << "OutOfMemoryException during parsing: '" << xsdFile << "'\n" << XERCES_STD_QUALIFIER endl;
+        errorCode = 6;
+    }
+    catch (const XMLException& e)
+    {
+        XERCES_STD_QUALIFIER cerr << "\nError during parsing: '" << xsdFile << "'\n"
+        << "Exception message is:  \n"
+        << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+        errorCode = 4;
+    }
+    catch (...)
+    {
+        XERCES_STD_QUALIFIER cerr << "\nUnexpected exception during parsing: '" << xsdFile << "'\n" << XERCES_STD_QUALIFIER endl;
+        errorCode = 5;
+    }
+
+    delete parser;
+    delete grammarPool;
+    XMLPlatformUtils::Terminate();
+
+    return errorCode;
+}
+
+void printBasic(XSObject *xsObject, const char *type)
+{
+    XERCES_STD_QUALIFIER cout << "Name:\t\t\t";
+    const XMLCh *nameSpace = xsObject->getNamespace();
+    if (nameSpace && *nameSpace) {
+        XERCES_STD_QUALIFIER cout << StrX(nameSpace) << ", ";
+    }
+    XERCES_STD_QUALIFIER cout << StrX(xsObject->getName()) << "\n";
+    XERCES_STD_QUALIFIER cout << "Component Type:\t" << type << XERCES_STD_QUALIFIER endl;
+}
+
+void processElements(XSNamedMap<XSObject> *xsElements)
+{
+    if (!xsElements || xsElements->getLength() == 0) {
+        XERCES_STD_QUALIFIER cout << "no elements\n\n"  << XERCES_STD_QUALIFIER endl;
+        return;
+    }
+    for (XMLSize_t i=0; i < xsElements->getLength(); i++) {
+        XSElementDeclaration *xsElement = (XSElementDeclaration *)xsElements->item(i);
+        printBasic(xsElement, "Element");
+
+        // Content Model
+        XSTypeDefinition *xsTypeDef = xsElement->getTypeDefinition();
+        XERCES_STD_QUALIFIER cout << "Content Model" << "\n";
+        XERCES_STD_QUALIFIER cout << "\tType:\t";
+        if (xsTypeDef->getTypeCategory() == XSTypeDefinition::SIMPLE_TYPE) {
+            XERCES_STD_QUALIFIER cout << "Simple\n";
+        } else {
+            XERCES_STD_QUALIFIER cout << "Complex\n";
+        }
+        XERCES_STD_QUALIFIER cout << "\tName:\t"
+            << StrX(xsTypeDef->getName()) << "\n";
+
+        XERCES_STD_QUALIFIER cout << "\n--------------------------------------------" << XERCES_STD_QUALIFIER 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;
+
+    int facets = xsSimpleTypeDef->getDefinedFacets();
+    if (facets) {
+        XERCES_STD_QUALIFIER 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;
+        if (facets & XSSimpleTypeDefinition::FACET_MINLENGTH)
+                XERCES_STD_QUALIFIER cout << "\tMinLength:\t" << StrX(xsSimpleTypeDef->getLexicalFacetValue(XSSimpleTypeDefinition::FACET_MINLENGTH)) << XERCES_STD_QUALIFIER endl;
+        if (facets & XSSimpleTypeDefinition::FACET_MAXLENGTH)
+                XERCES_STD_QUALIFIER cout << "\tMaxLength:\t" << StrX(xsSimpleTypeDef->getLexicalFacetValue(XSSimpleTypeDefinition::FACET_MAXLENGTH)) << XERCES_STD_QUALIFIER endl;
+        if (facets & XSSimpleTypeDefinition::FACET_PATTERN) {
+            StringList *lexicalPatterns = xsSimpleTypeDef->getLexicalPattern();
+            if (lexicalPatterns && lexicalPatterns->size()) {
+                XERCES_STD_QUALIFIER cout << "\tPattern:\t\t";
+                for (unsigned i = 0; i < lexicalPatterns->size(); i++) {
+                    XERCES_STD_QUALIFIER cout << StrX(lexicalPatterns->elementAt(i));
+                }
+                XERCES_STD_QUALIFIER cout << XERCES_STD_QUALIFIER endl;
+            }
+        }
+        if (facets & XSSimpleTypeDefinition::FACET_WHITESPACE)
+                XERCES_STD_QUALIFIER cout << "\tWhitespace:\t\t" << StrX(xsSimpleTypeDef->getLexicalFacetValue(XSSimpleTypeDefinition::FACET_WHITESPACE)) << XERCES_STD_QUALIFIER endl;
+        if (facets & XSSimpleTypeDefinition::FACET_MAXINCLUSIVE)
+                XERCES_STD_QUALIFIER cout << "\tMaxInclusive:\t" << StrX(xsSimpleTypeDef->getLexicalFacetValue(XSSimpleTypeDefinition::FACET_MAXINCLUSIVE)) << XERCES_STD_QUALIFIER endl;
+        if (facets & XSSimpleTypeDefinition::FACET_MAXEXCLUSIVE)
+                XERCES_STD_QUALIFIER cout << "\tMaxExclusive:\t" << StrX(xsSimpleTypeDef->getLexicalFacetValue(XSSimpleTypeDefinition::FACET_MAXEXCLUSIVE)) << XERCES_STD_QUALIFIER endl;
+        if (facets & XSSimpleTypeDefinition::FACET_MINEXCLUSIVE)
+                XERCES_STD_QUALIFIER cout << "\tMinExclusive:\t" << StrX(xsSimpleTypeDef->getLexicalFacetValue(XSSimpleTypeDefinition::FACET_MINEXCLUSIVE)) << XERCES_STD_QUALIFIER endl;
+        if (facets & XSSimpleTypeDefinition::FACET_MININCLUSIVE)
+                XERCES_STD_QUALIFIER cout << "\tMinInclusive:\t" << StrX(xsSimpleTypeDef->getLexicalFacetValue(XSSimpleTypeDefinition::FACET_MININCLUSIVE)) << XERCES_STD_QUALIFIER endl;
+        if (facets & XSSimpleTypeDefinition::FACET_TOTALDIGITS)
+                XERCES_STD_QUALIFIER cout << "\tTotalDigits:\t" << StrX(xsSimpleTypeDef->getLexicalFacetValue(XSSimpleTypeDefinition::FACET_TOTALDIGITS)) << XERCES_STD_QUALIFIER endl;
+        if (facets & XSSimpleTypeDefinition::FACET_FRACTIONDIGITS)
+                XERCES_STD_QUALIFIER cout << "\tFractionDigits:\t" << StrX(xsSimpleTypeDef->getLexicalFacetValue(XSSimpleTypeDefinition::FACET_FRACTIONDIGITS)) << XERCES_STD_QUALIFIER endl;
+        if (facets & XSSimpleTypeDefinition::FACET_ENUMERATION) {
+            StringList *lexicalEnums = xsSimpleTypeDef->getLexicalEnumeration();
+            if (lexicalEnums && lexicalEnums->size()) {
+                XERCES_STD_QUALIFIER cout << "\tEnumeration:\n";
+                for (unsigned i = 0; i < lexicalEnums->size(); i++) {
+                    XERCES_STD_QUALIFIER cout << "\t\t\t" << StrX(lexicalEnums->elementAt(i)) << "\n";
+                }
+                XERCES_STD_QUALIFIER cout << XERCES_STD_QUALIFIER endl;
+            }
+        }
+    }
+}
+
+void printCompositorTypeConnector(XSModelGroup::COMPOSITOR_TYPE type)
+{
+    switch (type) {
+        case XSModelGroup::COMPOSITOR_SEQUENCE :
+            XERCES_STD_QUALIFIER cout << ",";
+            break;
+        case XSModelGroup::COMPOSITOR_CHOICE :
+            XERCES_STD_QUALIFIER cout << "|";
+            break;
+        case XSModelGroup::COMPOSITOR_ALL :
+            XERCES_STD_QUALIFIER cout << "*";
+            break;
+    }
+}
+
+void processParticle(XSParticle *xsParticle)
+{
+    if (!xsParticle) {
+        XERCES_STD_QUALIFIER 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());
+    } else if (termType == XSParticle::TERM_MODELGROUP) {
+        XERCES_STD_QUALIFIER cout << "(";
+
+        XSModelGroup *xsModelGroup = xsParticle->getModelGroupTerm();
+        XSModelGroup::COMPOSITOR_TYPE compositorType = xsModelGroup->getCompositor();
+        XSParticleList *xsParticleList = xsModelGroup->getParticles();
+        for (unsigned i = 0; i < xsParticleList->size()-1; i++) {
+            processParticle(xsParticleList->elementAt(i));
+            printCompositorTypeConnector(compositorType);
+        }
+        processParticle(xsParticleList->elementAt(xsParticleList->size()-1));
+
+        XERCES_STD_QUALIFIER cout << ")";
+    } else if (termType == XSParticle::TERM_WILDCARD) {
+        XERCES_STD_QUALIFIER cout << "* (wildcard)";
+    }
+}
+
+void processComplexTypeDefinition(XSComplexTypeDefinition *xsComplexTypeDef)
+{
+    XSTypeDefinition *xsBaseTypeDef = xsComplexTypeDef->getBaseType();
+    if (xsBaseTypeDef) {
+        XERCES_STD_QUALIFIER cout << "Base:\t\t\t";
+        XERCES_STD_QUALIFIER cout << StrX(xsBaseTypeDef->getName()) << "\n";
+    }
+
+    XERCES_STD_QUALIFIER 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;
+    }
+}
+
+void processTypeDefinitions(XSNamedMap<XSObject> *xsTypeDefs)
+{
+    if (!xsTypeDefs) return;
+
+    for (XMLSize_t i=0; i < xsTypeDefs->getLength(); i++) {
+        XSTypeDefinition *xsTypeDef = (XSTypeDefinition *)xsTypeDefs->item(i);
+
+        printBasic(xsTypeDef, "Type Definition");
+
+        // Content Model
+        XERCES_STD_QUALIFIER cout << "Category:\t";
+        if (xsTypeDef->getTypeCategory() == XSTypeDefinition::SIMPLE_TYPE) {
+            XERCES_STD_QUALIFIER cout << "\tSimple\n";
+            processSimpleTypeDefinition((XSSimpleTypeDefinition *)xsTypeDef);
+        } else {
+            XERCES_STD_QUALIFIER cout << "\tComplex\n";
+            processComplexTypeDefinition((XSComplexTypeDefinition *)xsTypeDef);
+        }
+
+        XERCES_STD_QUALIFIER cout << "\n--------------------------------------------" << XERCES_STD_QUALIFIER endl;
+    }
+}

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SEnumVal/SEnumVal.cpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SEnumVal/SEnumVal.cpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/SEnumVal/SEnumVal.cpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,519 @@
+/*
+ * 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.
+ */
+
+/*
+ * $Id: SEnumVal.cpp 5336 2010-10-26 22:52:27Z brucedechant $
+ */
+// ---------------------------------------------------------------------------
+//  Includes
+// ---------------------------------------------------------------------------
+#include <xercesc/util/NameIdPool.hpp>
+#include <xercesc/util/PlatformUtils.hpp>
+#include <xercesc/framework/XMLValidator.hpp>
+#include <xercesc/framework/psvi/XSAnnotation.hpp>
+#include <xercesc/parsers/SAXParser.hpp>
+#include <xercesc/validators/schema/SchemaValidator.hpp>
+#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>
+
+
+XERCES_CPP_NAMESPACE_USE
+
+// ---------------------------------------------------------------------------
+//  Forward references
+// ---------------------------------------------------------------------------
+static void usage();
+
+void process(char* const);
+void processAttributes( XMLAttDefList& attList, bool margin = false );
+void processDatatypeValidator( const DatatypeValidator*, bool margin = false
+);
+void processContentSpecNode( const ContentSpecNode* specNode, bool margin =
+false );
+
+// ---------------------------------------------------------------------------
+//  This is a simple class that lets us do easy (though not terribly efficient)
+//  trancoding of XMLCh data to local code page for display.
+// ---------------------------------------------------------------------------
+class StrX
+{
+public :
+    // -----------------------------------------------------------------------
+    //  Constructors and Destructor
+    // -----------------------------------------------------------------------
+    StrX(const XMLCh* const toTranscode)
+    {
+        // Call the private transcoding method
+        fLocalForm = XMLString::transcode(toTranscode);
+    }
+
+    ~StrX()
+    {
+        XMLString::release(&fLocalForm);
+    }
+
+
+    // -----------------------------------------------------------------------
+    //  Getter methods
+    // -----------------------------------------------------------------------
+    const char* localForm() const
+    {
+        return fLocalForm;
+    }
+
+private :
+    // -----------------------------------------------------------------------
+    //  Private data members
+    //
+    //  fLocalForm
+    //      This is the local code page form of the string.
+    // -----------------------------------------------------------------------
+    char*   fLocalForm;
+};
+
+inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump)
+{
+    target << toDump.localForm();
+    return target;
+}
+
+// ---------------------------------------------------------------------------
+//  Local helper methods
+// ---------------------------------------------------------------------------
+static void usage()
+{
+    XERCES_STD_QUALIFIER 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;
+}
+
+// ---------------------------------------------------------------------------
+//  Program entry point
+// ---------------------------------------------------------------------------
+int main(int argC, char* argV[])
+{
+    // cannot return out of catch-blocks lest exception-destruction
+    // result in calls to destroyed memory handler!
+    int errorCode = 0;
+    // Initialize the XML4C system
+    try
+    {
+         XMLPlatformUtils::Initialize();
+    }
+
+    catch (const XMLException& toCatch)
+    {
+         XERCES_STD_QUALIFIER cerr   << "Error during initialization! Message:\n"
+                << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl;
+         errorCode = 1;
+    }
+    if(errorCode) {
+        XMLPlatformUtils::Terminate();
+        return errorCode;
+    } 
+
+    // Check command line and extract arguments.
+    // We only have one required parameter, which is the file to process
+    if ((argC != 2) ||
+        (*(argV[1]) == '-'))
+    {
+        usage();
+        XMLPlatformUtils::Terminate();
+        return 2;
+    }
+
+    try
+    {
+		process(argV[1]);
+    }
+    catch (const OutOfMemoryException&)
+    {
+        XERCES_STD_QUALIFIER cerr << "OutOfMemoryException" << XERCES_STD_QUALIFIER endl;
+        errorCode = 5;
+    }
+    catch (const XMLException& e)
+    {
+        XERCES_STD_QUALIFIER cerr << "\nError during parsing: '" << argV[1] << "'\n"
+             << "Exception message is:  \n"
+             << StrX(e.getMessage()) << "\n" << XERCES_STD_QUALIFIER endl;
+        errorCode = 3;
+    }
+
+    XMLPlatformUtils::Terminate();
+
+	return errorCode;
+}
+
+void process(char* const xmlFile)
+{
+    //
+    //  Create a Schema validator to be used for our validation work. Then create
+    //  a SAX parser object and pass it our validator. Then, according to what
+    //  we were told on the command line, set it to validate or not. He owns
+    //  the validator, so we have to allocate it.
+    //
+    SAXParser parser;
+    parser.setValidationScheme(SAXParser::Val_Always);
+    parser.setDoNamespaces(true);
+    parser.setDoSchema(true);
+
+	parser.parse(xmlFile);
+
+    if (parser.getErrorCount())
+	{
+        XERCES_STD_QUALIFIER cout << "\nErrors occurred, no output available\n" << XERCES_STD_QUALIFIER endl;
+		return;
+	}
+
+	if (!parser.getValidator().handlesSchema())
+	{
+		XERCES_STD_QUALIFIER cout << "\n Non schema document, no output available\n" << XERCES_STD_QUALIFIER 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;
+		return;
+	}
+
+	//
+	//  Now we will get an enumerator for the element pool from the validator
+	//  and enumerate the elements, printing them as we go. For each element
+	//  we get an enumerator for its attributes and print them also.
+	//
+
+	SchemaGrammar* grammar = (SchemaGrammar*) rootGrammar;
+	RefHash3KeysIdPoolEnumerator<SchemaElementDecl> elemEnum = grammar->getElemEnumerator();
+
+	if (!elemEnum.hasMoreElements())
+	{
+		XERCES_STD_QUALIFIER cout << "\nThe validator has no elements to display\n" << XERCES_STD_QUALIFIER endl;
+		return;
+	}
+
+	while(elemEnum.hasMoreElements())
+	{
+		const SchemaElementDecl& curElem = elemEnum.nextElement();
+
+		// Name
+		XERCES_STD_QUALIFIER cout << "Name:\t\t\t" << StrX(curElem.getFullName()) << "\n";
+
+		// Model Type
+		XERCES_STD_QUALIFIER 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;
+
+		default:                                XERCES_STD_QUALIFIER cout << "Unknown";       break;
+		}
+
+		XERCES_STD_QUALIFIER cout << "\n";
+
+		// Create Reason
+		XERCES_STD_QUALIFIER 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;
+
+		default:                            XERCES_STD_QUALIFIER cout << "Unknown";  break;
+		}
+
+		XERCES_STD_QUALIFIER cout << "\n";
+
+		// Content Spec Node
+		processContentSpecNode( curElem.getContentSpec() );
+
+		// Misc Flags
+		int mflags = curElem.getMiscFlags();
+		if( mflags !=0 )
+		{
+			XERCES_STD_QUALIFIER cout << "Misc. Flags:\t";
+		}
+
+        if ( mflags & SchemaSymbols::XSD_NILLABLE )
+			XERCES_STD_QUALIFIER cout << "Nillable ";
+
+		if ( mflags & SchemaSymbols::XSD_ABSTRACT )
+			XERCES_STD_QUALIFIER cout << "Abstract ";
+
+		if ( mflags & SchemaSymbols::XSD_FIXED )
+			XERCES_STD_QUALIFIER cout << "Fixed ";
+
+		if( mflags !=0 )
+		{
+			XERCES_STD_QUALIFIER cout << "\n";
+		}
+
+		// Substitution Name
+		SchemaElementDecl* subsGroup = curElem.getSubstitutionGroupElem();
+		if( subsGroup )
+		{
+			const XMLCh* uriText = parser.getURIText(subsGroup->getURI());
+			XERCES_STD_QUALIFIER cout << "Substitution Name:\t" << StrX(uriText)
+			     << "," << StrX(subsGroup->getBaseName()) << "\n";
+		}
+
+		// Content Model
+		const XMLCh* fmtCntModel = curElem.getFormattedContentModel();
+		if( fmtCntModel != NULL )
+		{
+			XERCES_STD_QUALIFIER 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";
+
+			ContentSpecNode* cSpecNode = ctype->getContentSpec();
+			processContentSpecNode(cSpecNode, true );
+		}
+
+		// Datatype
+		DatatypeValidator* dtValidator = curElem.getDatatypeValidator();
+		processDatatypeValidator( dtValidator );
+
+		// Get an enumerator for this guy's attributes if any
+		if ( curElem.hasAttDefs() )
+		{
+			processAttributes( curElem.getAttDefList() );
+		}
+
+		XERCES_STD_QUALIFIER cout << "--------------------------------------------";
+		XERCES_STD_QUALIFIER cout << XERCES_STD_QUALIFIER endl;
+
+    }
+
+    return;
+}
+
+
+//---------------------------------------------------------------------
+//  Prints the Attribute's properties
+//---------------------------------------------------------------------
+void processAttributes( XMLAttDefList& attList, bool margin )
+{
+    if ( attList.isEmpty() )
+    {
+        return;
+    }
+
+    if ( margin )
+    {
+        XERCES_STD_QUALIFIER cout << "\t";
+    }
+
+    XERCES_STD_QUALIFIER 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";
+
+        // Type
+        XERCES_STD_QUALIFIER cout << "\tType:\t\t\t";
+		XERCES_STD_QUALIFIER cout << StrX(XMLAttDef::getAttTypeString(curAttDef.getType()));
+        XERCES_STD_QUALIFIER 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";
+
+        // Value
+        if( curAttDef.getValue() )
+        {
+            XERCES_STD_QUALIFIER cout << "\tValue:\t\t\t";
+            XERCES_STD_QUALIFIER cout << StrX(curAttDef.getValue());
+            XERCES_STD_QUALIFIER 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";
+        }
+
+         const DatatypeValidator* dv = curAttDef.getDatatypeValidator();
+         processDatatypeValidator( dv, true );
+
+        XERCES_STD_QUALIFIER cout << "\n";
+    }
+}
+
+void processDatatypeValidator( const DatatypeValidator* dtValidator, bool margin )
+{
+    if( !dtValidator )
+    {
+        return;
+    }
+
+    if( margin )
+    {
+        XERCES_STD_QUALIFIER cout << "\t";
+    }
+
+    XERCES_STD_QUALIFIER 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;
+    }
+
+    XERCES_STD_QUALIFIER cout << "\n";
+
+    // Facets
+	RefHashTableOf<KVStringPair>* facets = dtValidator->getFacets();
+    if( facets && facets->getCount()>0)
+    {
+        XMLSize_t i;
+        // Element's properties
+        XERCES_STD_QUALIFIER 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);
+        while( enumFacets.hasMoreElements() )
+        {
+            const KVStringPair& curPair = enumFacets.nextElement();
+            const XMLCh* key=curPair.getKey();
+            XMLSize_t len=sortedList.size();
+            for(i=0;i<len;i++)
+                if(XMLString::compareString(key, sortedList.elementAt(i))<0)
+                {
+                    sortedList.insertElementAt((XMLCh*)key,i);
+                    break;
+                }
+            if(i==len)
+                sortedList.addElement((XMLCh*)key);
+        }
+
+        XMLSize_t len=sortedList.size();
+        for(i=0;i<len;i++)
+        {
+            const XMLCh* key = sortedList.elementAt(i);
+            XERCES_STD_QUALIFIER cout << "\t" << StrX( key )    << "="
+                         << StrX( facets->get(key)->getValue() )  << "\n";
+        }
+    }
+
+	// Enumerations
+	RefVectorOf<XMLCh>* enums = (RefVectorOf<XMLCh>*) dtValidator->getEnumString();
+	if (enums)
+	{
+		XERCES_STD_QUALIFIER cout << "Enumeration:\t\t\n";
+
+        int enumLength = enums->size();
+        for ( int i = 0; i < enumLength; i++)
+        {
+            XERCES_STD_QUALIFIER cout << "\t" << StrX( enums->elementAt(i)) << "\n";
+        }
+
+	}
+}
+
+void processContentSpecNode( const ContentSpecNode* cSpecNode, bool margin )
+{
+    if( !cSpecNode )
+    {
+        return;
+    }
+
+    if( margin )
+    {
+        XERCES_STD_QUALIFIER cout << "\t";
+    }
+
+    XERCES_STD_QUALIFIER 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::ModelGroupChoice:    
+        case ContentSpecNode::Choice:              XERCES_STD_QUALIFIER 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::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;
+    }
+    XERCES_STD_QUALIFIER cout << "\n";
+}
+

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/StdInParse/StdInParse.cpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/StdInParse/StdInParse.cpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/StdInParse/StdInParse.cpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,227 @@
+/*
+ * 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.
+ */
+
+/*
+ * $Id: StdInParse.cpp 5336 2010-10-26 22:52:27Z brucedechant $
+ */
+
+
+// ---------------------------------------------------------------------------
+//  Includes
+// ---------------------------------------------------------------------------
+#include <xercesc/framework/StdInInputSource.hpp>
+#include <xercesc/parsers/SAXParser.hpp>
+#include "StdInParse.hpp"
+#include <xercesc/util/OutOfMemoryException.hpp>
+
+// ---------------------------------------------------------------------------
+//  Local data
+//
+//  doNamespaces
+//      Indicates whether namespace processing should be enabled or not.
+//      The default is no, but -n overrides that.
+//
+//  doSchema
+//      Indicates whether schema processing should be enabled or not.
+//      The default is no, but -s overrides that.
+//
+//  schemaFullChecking
+//      Indicates whether full schema constraint checking should be enabled or not.
+//      The default is no, but -s overrides that.
+//
+//  valScheme
+//      Indicates what validation scheme to use. It defaults to 'auto', but
+//      can be set via the -v= command.
+// ---------------------------------------------------------------------------
+static bool     doNamespaces       = false;
+static bool     doSchema           = false;
+static bool     schemaFullChecking = false;
+static SAXParser::ValSchemes    valScheme       = SAXParser::Val_Auto;
+
+
+
+// ---------------------------------------------------------------------------
+//  Local helper methods
+// ---------------------------------------------------------------------------
+void usage()
+{
+    XERCES_STD_QUALIFIER 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"
+            "number of elements, attributes, spaces and characters found\n"
+            "in the input, using SAX API.\n\n"
+            "Options:\n"
+            "    -v=xxx      Validation scheme [always | never | auto*].\n"
+            "    -n          Enable namespace processing. Defaults to off.\n"
+            "    -s          Enable schema processing. Defaults to off.\n"
+            "    -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;
+}
+
+
+// ---------------------------------------------------------------------------
+//  Program entry point
+// ---------------------------------------------------------------------------
+int main(int argC, char* argV[])
+{
+    // Initialize the XML4C system
+    try
+    {
+         XMLPlatformUtils::Initialize();
+    }
+
+    catch (const XMLException& toCatch)
+    {
+         XERCES_STD_QUALIFIER cerr << "Error during initialization! Message:\n"
+              << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl;
+         return 1;
+    }
+
+    int parmInd;
+    for (parmInd = 1; parmInd < argC; parmInd++)
+    {
+        // Break out on first parm not starting with a dash
+        if (argV[parmInd][0] != '-')
+            break;
+
+        // Watch for special case help request
+        if (!strcmp(argV[parmInd], "-?"))
+        {
+            usage();
+            XMLPlatformUtils::Terminate();
+            return 2;
+        }
+         else if (!strncmp(argV[parmInd], "-v=", 3)
+              ||  !strncmp(argV[parmInd], "-V=", 3))
+        {
+            const char* const parm = &argV[parmInd][3];
+
+            if (!strcmp(parm, "never"))
+                valScheme = SAXParser::Val_Never;
+            else if (!strcmp(parm, "auto"))
+                valScheme = SAXParser::Val_Auto;
+            else if (!strcmp(parm, "always"))
+                valScheme = SAXParser::Val_Always;
+            else
+            {
+                XERCES_STD_QUALIFIER cerr << "Unknown -v= value: " << parm << XERCES_STD_QUALIFIER endl;
+                XMLPlatformUtils::Terminate();
+                return 2;
+            }
+        }
+         else if (!strcmp(argV[parmInd], "-n")
+              ||  !strcmp(argV[parmInd], "-N"))
+        {
+            doNamespaces = true;
+        }
+         else if (!strcmp(argV[parmInd], "-s")
+              ||  !strcmp(argV[parmInd], "-S"))
+        {
+            doSchema = true;
+        }
+         else if (!strcmp(argV[parmInd], "-f")
+              ||  !strcmp(argV[parmInd], "-F"))
+        {
+            schemaFullChecking = true;
+        }
+         else
+        {
+            XERCES_STD_QUALIFIER cerr << "Unknown option '" << argV[parmInd]
+                 << "', ignoring it\n" << XERCES_STD_QUALIFIER endl;
+        }
+    }
+
+    //
+    //  Create a SAX parser object. Then, according to what we were told on
+    //  the command line, set the options.
+    //
+    SAXParser* parser = new SAXParser;
+    parser->setValidationScheme(valScheme);
+    parser->setDoNamespaces(doNamespaces);
+    parser->setDoSchema(doSchema);
+    parser->setHandleMultipleImports (true);
+    parser->setValidationSchemaFullChecking(schemaFullChecking);
+
+
+    //
+    //  Create our SAX handler object and install it on the parser, as the
+    //  document and error handler. We are responsible for cleaning them
+    //  up, but since its just stack based here, there's nothing special
+    //  to do.
+    //
+    StdInParseHandlers handler;
+    parser->setDocumentHandler(&handler);
+    parser->setErrorHandler(&handler);
+
+    unsigned long duration;
+    int errorCount = 0;
+    // create a faux scope so that 'src' destructor is called before
+    // XMLPlatformUtils::Terminate
+    {
+        //
+        //  Kick off the parse and catch any exceptions. Create a standard
+        //  input input source and tell the parser to parse from that.
+        //
+        StdInInputSource src;
+        try
+        {
+            const unsigned long startMillis = XMLPlatformUtils::getCurrentMillis();
+            parser->parse(src);
+            const unsigned long endMillis = XMLPlatformUtils::getCurrentMillis();
+            duration = endMillis - startMillis;
+            errorCount = parser->getErrorCount();
+        }
+        catch (const OutOfMemoryException&)
+        {
+            XERCES_STD_QUALIFIER cerr << "OutOfMemoryException" << XERCES_STD_QUALIFIER endl;
+            errorCount = 2;
+            return 4;
+        }
+        catch (const XMLException& e)
+        {
+            XERCES_STD_QUALIFIER cerr << "\nError during parsing: \n"
+                 << StrX(e.getMessage())
+                 << "\n" << XERCES_STD_QUALIFIER 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 ("
+                 << handler.getElementCount() << " elems, "
+                 << handler.getAttrCount() << " attrs, "
+                 << handler.getSpaceCount() << " spaces, "
+                 << handler.getCharacterCount() << " chars)" << XERCES_STD_QUALIFIER endl;
+        }
+    }
+
+    //
+    //  Delete the parser itself.  Must be done prior to calling Terminate, below.
+    //
+    delete parser;
+
+    XMLPlatformUtils::Terminate();
+
+    if (errorCount > 0)
+        return 4;
+    else
+        return 0;
+}

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/StdInParse/StdInParse.hpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/StdInParse/StdInParse.hpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/StdInParse/StdInParse.hpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,80 @@
+/*
+ * 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.
+ */
+
+/*
+ * $Id: StdInParse.hpp 5336 2010-10-26 22:52:27Z brucedechant $
+ */
+
+
+// ---------------------------------------------------------------------------
+//  Includes for all the program files to see
+// ---------------------------------------------------------------------------
+#include <string.h>
+#include <stdlib.h>
+#if defined(XERCES_NEW_IOSTREAMS)
+#include <iostream>
+#else
+#include <iostream.h>
+#endif
+#include <xercesc/util/PlatformUtils.hpp>
+#include "StdInParseHandlers.hpp"
+
+
+// ---------------------------------------------------------------------------
+//  This is a simple class that lets us do easy (though not terribly efficient)
+//  trancoding of XMLCh data to local code page for display.
+// ---------------------------------------------------------------------------
+class StrX
+{
+public :
+    // -----------------------------------------------------------------------
+    //  Constructors and Destructor
+    // -----------------------------------------------------------------------
+    StrX(const XMLCh* const toTranscode)
+    {
+        // Call the private transcoding method
+        fLocalForm = XMLString::transcode(toTranscode);
+    }
+
+    ~StrX()
+    {
+        XMLString::release(&fLocalForm);
+    }
+
+    // -----------------------------------------------------------------------
+    //  Getter methods
+    // -----------------------------------------------------------------------
+    const char* localForm() const
+    {
+        return fLocalForm;
+    }
+
+private :
+    // -----------------------------------------------------------------------
+    //  Private data members
+    //
+    //  fLocalForm
+    //      This is the local code page form of the string.
+    // -----------------------------------------------------------------------
+    char*   fLocalForm;
+};
+
+inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump)
+{
+    target << toDump.localForm();
+    return target;
+}

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/StdInParse/StdInParseHandlers.cpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/StdInParse/StdInParseHandlers.cpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/StdInParse/StdInParseHandlers.cpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,112 @@
+/*
+ * 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.
+ */
+
+/*
+ * $Id: StdInParseHandlers.cpp 5336 2010-10-26 22:52:27Z brucedechant $
+ */
+
+
+
+// ---------------------------------------------------------------------------
+//  Includes
+// ---------------------------------------------------------------------------
+#include <xercesc/sax/AttributeList.hpp>
+#include <xercesc/sax/SAXParseException.hpp>
+#include <xercesc/sax/SAXException.hpp>
+#include "StdInParse.hpp"
+
+
+// ---------------------------------------------------------------------------
+//  StdInParseHandlers: Constructors and Destructor
+// ---------------------------------------------------------------------------
+StdInParseHandlers::StdInParseHandlers() :
+
+    fAttrCount(0)
+    , fCharacterCount(0)
+    , fElementCount(0)
+    , fSpaceCount(0)
+{
+}
+
+StdInParseHandlers::~StdInParseHandlers()
+{
+}
+
+
+// ---------------------------------------------------------------------------
+//  StdInParseHandlers: Implementation of the SAX DocumentHandler interface
+// ---------------------------------------------------------------------------
+void StdInParseHandlers::endElement(const XMLCh* const /* name */)
+{
+}
+
+void
+StdInParseHandlers::startElement(   const   XMLCh* const    /* name */
+                                    ,       AttributeList&  attributes)
+{
+    fElementCount++;
+    fAttrCount += attributes.getLength();
+}
+
+void StdInParseHandlers::characters(const   XMLCh* const    /* chars */
+								    , const XMLSize_t      length)
+{
+    fCharacterCount += length;
+}
+
+void StdInParseHandlers::ignorableWhitespace(const  XMLCh* const /* chars */
+										    , const XMLSize_t    length)
+{
+    fSpaceCount += length;
+}
+
+void StdInParseHandlers::resetDocument()
+{
+    fAttrCount = 0;
+    fCharacterCount = 0;
+    fElementCount = 0;
+    fSpaceCount = 0;
+}
+
+
+
+// ---------------------------------------------------------------------------
+//  StdInParseHandlers: Overrides of the SAX ErrorHandler interface
+// ---------------------------------------------------------------------------
+void StdInParseHandlers::error(const SAXParseException& e)
+{
+    XERCES_STD_QUALIFIER cerr << "\nError at (file " << StrX(e.getSystemId())
+		 << ", line " << e.getLineNumber()
+		 << ", char " << e.getColumnNumber()
+         << "): " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+}
+
+void StdInParseHandlers::fatalError(const SAXParseException& e)
+{
+    XERCES_STD_QUALIFIER cerr << "\nFatal Error at (file " << StrX(e.getSystemId())
+		 << ", line " << e.getLineNumber()
+		 << ", char " << e.getColumnNumber()
+         << "): " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+}
+
+void StdInParseHandlers::warning(const SAXParseException& e)
+{
+    XERCES_STD_QUALIFIER cerr << "\nWarning at (file " << StrX(e.getSystemId())
+		 << ", line " << e.getLineNumber()
+		 << ", char " << e.getColumnNumber()
+         << "): " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl;
+}

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/StdInParse/StdInParseHandlers.hpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/StdInParse/StdInParseHandlers.hpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/StdInParse/StdInParseHandlers.hpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,101 @@
+/*
+ * 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.
+ */
+
+/*
+ * $Id: StdInParseHandlers.hpp 5336 2010-10-26 22:52:27Z brucedechant $
+ */
+
+
+// ---------------------------------------------------------------------------
+//  Includes
+// ---------------------------------------------------------------------------
+#include <xercesc/sax/HandlerBase.hpp>
+
+XERCES_CPP_NAMESPACE_USE
+
+XERCES_CPP_NAMESPACE_BEGIN
+class AttributeList;
+XERCES_CPP_NAMESPACE_END
+
+class StdInParseHandlers : public HandlerBase
+{
+public:
+    // -----------------------------------------------------------------------
+    //  Constructors and Destructor
+    // -----------------------------------------------------------------------
+    StdInParseHandlers();
+    ~StdInParseHandlers();
+
+
+    // -----------------------------------------------------------------------
+    //  Getter methods
+    // -----------------------------------------------------------------------
+    XMLSize_t getElementCount()
+    {
+        return fElementCount;
+    }
+
+    XMLSize_t getAttrCount()
+    {
+        return fAttrCount;
+    }
+
+    XMLSize_t getCharacterCount()
+    {
+        return fCharacterCount;
+    }
+
+    XMLSize_t getSpaceCount()
+    {
+        return fSpaceCount;
+    }
+
+
+    // -----------------------------------------------------------------------
+    //  Handlers for the SAX DocumentHandler interface
+    // -----------------------------------------------------------------------
+    void endElement(const XMLCh* const name);
+	void startElement(const XMLCh* const name, AttributeList& attributes);
+    void characters(const XMLCh* const chars, const XMLSize_t length);
+    void ignorableWhitespace(const XMLCh* const chars, const XMLSize_t length);
+    void resetDocument();
+
+
+    // -----------------------------------------------------------------------
+    //  Handlers for the SAX ErrorHandler interface
+    // -----------------------------------------------------------------------
+	void warning(const SAXParseException& exc);
+    void error(const SAXParseException& exc);
+    void fatalError(const SAXParseException& exc);
+
+
+private:
+    // -----------------------------------------------------------------------
+    //  Private data members
+    //
+    //  fAttrCount
+    //  fCharacterCount
+    //  fElementCount
+    //  fSpaceCount
+    //      These are just counters that are run upwards based on the input
+    //      from the document handlers.
+    // -----------------------------------------------------------------------
+    XMLSize_t       fAttrCount;
+    XMLSize_t       fCharacterCount;
+    XMLSize_t       fElementCount;
+    XMLSize_t       fSpaceCount;
+};

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/XInclude/XInclude.cpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/XInclude/XInclude.cpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/XInclude/XInclude.cpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,234 @@
+/*
+ * 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.
+ */
+
+/*
+ * $Id: XInclude.cpp 5336 2010-10-26 22:52:27Z brucedechant $
+ */
+
+// ---------------------------------------------------------------------------
+//  Includes
+// ---------------------------------------------------------------------------
+#include <xercesc/util/PlatformUtils.hpp>
+#include <xercesc/parsers/AbstractDOMParser.hpp>
+#include <xercesc/framework/LocalFileFormatTarget.hpp>
+#include <xercesc/dom/DOMDocument.hpp>
+#include <xercesc/dom/DOM.hpp>
+#include <xercesc/util/XMLString.hpp>
+
+#include "XInclude.hpp"
+
+// ---------------------------------------------------------------------------
+//  This is a simple program which tests the different XInclude mechanisms prototyped
+//  for my dissertation. Based largely on the DOMCount example provided with the
+//  Xerces C++ project.
+//  Simon Rowland 2006
+// ---------------------------------------------------------------------------
+static void usage()
+{
+    XERCES_STD_QUALIFIER cout << "\nUsage:\n"
+			"    XInclude [-h] InputFile OutputFile\n"
+			"  -h :             Prints this help message and exits.\n"
+         << XERCES_STD_QUALIFIER endl;
+}
+
+// ---------------------------------------------------------------------------
+//
+//   main
+//
+// ---------------------------------------------------------------------------
+int main(int argC, char* argV[])
+{
+	char						*testFileName;
+	char						*outputFileName;
+
+    for (int argInd = 1; argInd < argC; argInd++)
+	{
+        if (!strcmp(argV[argInd], "-?") || !strcmp(argV[argInd], "-h"))
+        {
+			/* print help and exit */
+            usage();
+            return 2;
+        }
+    }
+
+	if (argC < 3){
+		usage();
+		return 2;
+	}
+
+	testFileName = argV[argC-2];
+	outputFileName = argV[argC-1];
+
+    // Initialize the XML4C system
+    try
+    {
+        XMLPlatformUtils::Initialize();
+    }
+
+    catch (const XMLException& toCatch)
+    {
+         XERCES_STD_QUALIFIER cerr << "Error during initialization! :\n"
+              << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl;
+         return 1;
+    }
+
+	//============================================================================
+	// Instantiate the DOM parser to use for the source documents
+	//============================================================================
+    static const XMLCh gLS[] = { chLatin_L, chLatin_S, chNull };
+    DOMImplementation *impl = DOMImplementationRegistry::getDOMImplementation(gLS);
+    DOMLSParser       *parser = ((DOMImplementationLS*)impl)->createLSParser(DOMImplementationLS::MODE_SYNCHRONOUS, 0);
+    DOMConfiguration  *config = parser->getDomConfig();
+
+    config->setParameter(XMLUni::fgDOMNamespaces, true);
+    config->setParameter(XMLUni::fgXercesSchema, true);
+    config->setParameter(XMLUni::fgXercesHandleMultipleImports, true);
+    config->setParameter(XMLUni::fgXercesSchemaFullChecking, true);
+
+    if(config->canSetParameter(XMLUni::fgXercesDoXInclude, true)){
+      config->setParameter(XMLUni::fgXercesDoXInclude, true);
+    }
+
+    // enable datatype normalization - default is off
+    //config->setParameter(XMLUni::fgDOMDatatypeNormalization, true);
+
+    // And create our error handler and install it
+    XIncludeErrorHandler errorHandler;
+    config->setParameter(XMLUni::fgDOMErrorHandler, &errorHandler);
+
+    XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *doc = 0;
+
+    try
+    {
+        // load up the test source document
+		XERCES_STD_QUALIFIER cerr << "Parse " << testFileName << " in progress ...";
+        parser->resetDocumentPool();
+		doc = parser->parseURI(testFileName);
+		XERCES_STD_QUALIFIER cerr << " finished." << XERCES_STD_QUALIFIER endl;
+    }
+    catch (const XMLException& toCatch)
+    {
+        XERCES_STD_QUALIFIER cerr << "\nError during parsing: '" << testFileName << "'\n"
+                << "Exception message is:  \n"
+                << StrX(toCatch.getMessage()) << "\n" << XERCES_STD_QUALIFIER 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;
+
+        if (DOMImplementation::loadDOMExceptionMsg(toCatch.code, errText, maxChars))
+                XERCES_STD_QUALIFIER cerr << "Message is: " << StrX(errText) << XERCES_STD_QUALIFIER endl;
+
+    }
+    catch (...)
+    {
+        XERCES_STD_QUALIFIER cerr << "\nUnexpected exception during parsing: '" << testFileName << "'\n";
+    }
+
+    if (!errorHandler.getSawErrors() && doc) {
+	    DOMLSSerializer	*writer = ((DOMImplementationLS*)impl)->createLSSerializer();
+	    DOMLSOutput     *theOutputDesc = ((DOMImplementationLS*)impl)->createLSOutput();
+
+		try {
+			// write out the results
+			XERCES_STD_QUALIFIER cerr << "Writing result to: " << outputFileName << XERCES_STD_QUALIFIER endl;
+
+			XMLFormatTarget *myFormTarget = new LocalFileFormatTarget(outputFileName);
+			theOutputDesc->setByteStream(myFormTarget);
+			writer->write(doc, theOutputDesc);
+            delete myFormTarget;
+		}
+		catch (const XMLException& toCatch)
+		{
+		    XERCES_STD_QUALIFIER cerr << "\nXMLException during writing: '" << testFileName << "'\n"
+				<< "Exception message is:  \n"
+				<< StrX(toCatch.getMessage()) << "\n" << XERCES_STD_QUALIFIER 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;
+
+			if (DOMImplementation::loadDOMExceptionMsg(toCatch.code, errText, maxChars))
+				XERCES_STD_QUALIFIER cerr << "Message is: " << StrX(errText) << XERCES_STD_QUALIFIER endl;
+		}
+		catch (...)
+		{
+			XERCES_STD_QUALIFIER cerr << "\nUnexpected exception during writing: '" << testFileName << "'\n";
+		}
+        writer->release();
+        theOutputDesc->release();
+    }
+
+    //
+    //  Delete the parser itself.  Must be done prior to calling Terminate, below.
+    //
+    parser->release();
+	// And call the termination method
+    XMLPlatformUtils::Terminate();
+
+    return 0;
+}
+
+XIncludeErrorHandler::XIncludeErrorHandler() :
+    fSawErrors(false)
+{
+}
+
+XIncludeErrorHandler::~XIncludeErrorHandler()
+{
+}
+
+
+// ---------------------------------------------------------------------------
+//  XIncludeHandlers: Overrides of the DOM ErrorHandler interface
+// ---------------------------------------------------------------------------
+bool XIncludeErrorHandler::handleError(const DOMError& domError)
+{
+	bool continueParsing = true;
+    if (domError.getSeverity() == DOMError::DOM_SEVERITY_WARNING)
+        XERCES_STD_QUALIFIER cerr << "\nWarning at file ";
+    else if (domError.getSeverity() == DOMError::DOM_SEVERITY_ERROR)
+    {
+        XERCES_STD_QUALIFIER cerr << "\nError at file ";
+        fSawErrors = true;
+    }
+	else {
+        XERCES_STD_QUALIFIER cerr << "\nFatal Error at file ";
+		continueParsing = false;
+        fSawErrors = true;
+	}
+
+    XERCES_STD_QUALIFIER cerr << StrX(domError.getLocation()->getURI())
+         << ", line " << domError.getLocation()->getLineNumber()
+         << ", char " << domError.getLocation()->getColumnNumber()
+         << "\n  Message: " << StrX(domError.getMessage()) << XERCES_STD_QUALIFIER endl;
+
+    return continueParsing;
+}
+
+void XIncludeErrorHandler::resetErrors()
+{
+    fSawErrors = false;
+}

Added: sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/XInclude/XInclude.hpp
===================================================================
--- sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/XInclude/XInclude.hpp	                        (rev 0)
+++ sandbox/jng/diet_vs2015/Oem/dbxml/xerces-c-src/samples/src/XInclude/XInclude.hpp	2015-10-29 15:19:16 UTC (rev 8803)
@@ -0,0 +1,131 @@
+/*
+ * 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.
+ */
+
+/*
+ * $Id: XInclude.hpp 5336 2010-10-26 22:52:27Z brucedechant $
+ */
+
+// ---------------------------------------------------------------------------
+//  Includes
+// ---------------------------------------------------------------------------
+#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
+
+// ---------------------------------------------------------------------------
+//  Simple error handler deriviative to install on parser
+// ---------------------------------------------------------------------------
+class XIncludeErrorHandler : public DOMErrorHandler
+{
+public:
+    // -----------------------------------------------------------------------
+    //  Constructors and Destructor
+    // -----------------------------------------------------------------------
+    XIncludeErrorHandler();
+    ~XIncludeErrorHandler();
+
+
+    // -----------------------------------------------------------------------
+    //  Getter methods
+    // -----------------------------------------------------------------------
+    bool getSawErrors() const;
+
+
+    // -----------------------------------------------------------------------
+    //  Implementation of the DOM ErrorHandler interface
+    // -----------------------------------------------------------------------
+    bool handleError(const DOMError& domError);
+    void resetErrors();
+
+
+private :
+    // -----------------------------------------------------------------------
+    //  Unimplemented constructors and operators
+    // -----------------------------------------------------------------------
+    XIncludeErrorHandler(const XIncludeErrorHandler&);
+    void operator=(const XIncludeErrorHandler&);
+
+
+    // -----------------------------------------------------------------------
+    //  Private data members
+    //
+    //  fSawErrors
+    //      This is set if we get any errors, and is queryable via a getter
+    //      method. Its used by the main code to suppress output if there are
+    //      errors.
+    // -----------------------------------------------------------------------
+    bool    fSawErrors;
+};
+
+
+// ---------------------------------------------------------------------------
+//  This is a simple class that lets us do easy (though not terribly efficient)
+//  trancoding of XMLCh data to local code page for display.
+// ---------------------------------------------------------------------------
+class StrX
+{
+public :
+    // -----------------------------------------------------------------------
+    //  Constructors and Destructor
+    // -----------------------------------------------------------------------
+    StrX(const XMLCh* const toTranscode)
+    {
+        // Call the private transcoding method
+        fLocalForm = XMLString::transcode(toTranscode);
+    }
+
+    ~StrX()
+    {
+        XMLString::release(&fLocalForm);
+    } 
+
+
+    // -----------------------------------------------------------------------
+    //  Getter methods
+    // -----------------------------------------------------------------------
+    const char* localForm() const
+    {
+        return fLocalForm;
+    }
+
+private :
+    // -----------------------------------------------------------------------
+    //  Private data members
+    //
+    //  fLocalForm
+    //      This is the local code page form of the string.
+    // -----------------------------------------------------------------------
+    char*   fLocalForm;
+};
+
+inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump)
+{
+    target << toDump.localForm();
+    return target;
+}
+
+inline bool XIncludeErrorHandler::getSawErrors() const
+{
+    return fSawErrors;
+}



More information about the mapguide-commits mailing list