This commit was manufactured by cvs2svn to create tag 'Xalan_0_30_0'.
diff --git a/BUGS b/BUGS
deleted file mode 100644
index 1064570..0000000
--- a/BUGS
+++ /dev/null
@@ -1,4 +0,0 @@
-<s3 title="Known bugs">
-  <p>We are aware of the following bugs (SPR ID# and description):</p>
-  <p>&nbsp;&nbsp;<ref>Bugs not yet recorded</ref></p>
- </s3>    
diff --git a/CREDITS b/CREDITS
deleted file mode 100644
index 80059b1..0000000
--- a/CREDITS
+++ /dev/null
@@ -1,10 +0,0 @@
-David N Bertoni
-Scott Boag
-Shane Curcuru
-Jack Donohue
-Paul Dick
-Emily Farmer
-Donald Leslie
-David Marston
-Myriam Midy
-Robert Weir
diff --git a/DONE b/DONE
deleted file mode 100644
index eb632a2..0000000
--- a/DONE
+++ /dev/null
@@ -1,4 +0,0 @@
-<s3 title="Things completed since the last version">
-<p><ref>does not apply</ref></p>
-</s3>    
-
diff --git a/KEYS b/KEYS
deleted file mode 100644
index 05e842b..0000000
--- a/KEYS
+++ /dev/null
@@ -1,44 +0,0 @@
-This file contains the PGP keys of various Xalan developers.
-Please don't use them for email unless you have to. Their main
-purpose is code signing.
-
-Xalan users: pgp < KEYS
-Xalan developers: pgp -kxa <your name> and append it to this file.
-
-
-Robert Weir <robert_weir@lotus.com>
-
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: PGPfreeware 6.5.1 for non-commercial use <http://www.pgp.com>
-
-mQGiBDgkhusRBADPjF2sbjCOC9A6CSwukoXCWMOaSLT1WPo2HH+xYOofXpMUxNNc
-bpNsgsV8PDhptd4bPfTCDtKl4/9oJQr36fgM6FuIoq+i3VCtyxwTvzaVClteh6bo
-y8I3OrYow1e+adFmjpWc3bX5kj8X1vAP+Kq61KEQwk4BU7BVzt5ROJyYBwCg/678
-cy/aq7P/ToxSFNOPxqEBsyED/i8oOYzVXo0w9rC4khsJ9ST0qfvu9a1NMW7djlCn
-QarFjrOcA8OpKjQNxkcgMrRHgPQM0diAKAKDCfIQeM8cmfw+tTb7znOrlrhIas6Y
-2f13UiKOoeT1NlMsojVWQ/LCGCF7sYIZrbmeOgA+6tCazxpHl+ggZ5/fNPM/Ct52
-zNnxA/9Wr3MzzH/JuYFwyFXFn9pDL/hYtbZKGJhT3hzp4R50J+UBDTZ+6ff6/g6a
-6MRTNqdgk9O/V9yrSZpMuQEna/fwjm5OcG9DsgpD23KuUl0l7VoDS6/3brPdMg2G
-16gh+nW78S2Ctx5G/LiTKZ06dmZ5pVaTxG9op9Vd5jCZF2i7P7QmUm9iZXJ0IEMu
-IFdlaXIgPHJvYmVydF93ZWlyQGxvdHVzLmNvbT6JAE4EEBECAA4FAjgkhusECwMC
-AQIZAQAKCRBR6z7xV3Za8g+SAKDl8D33vCcGP8M1asMRkMdvLlyrEgCg3izyhGfJ
-iaDay5TTmzsiWKiP3je0I1JvYmVydCBDLiBXZWlyIDxyd2VpckBjeWJlcmNvbS5u
-ZXQ+iQBLBBARAgALBQI4JIffBAsDAgEACgkQUes+8Vd2WvJu/gCeJFgUuR+wcdan
-oJx4wpf9NHvXv+MAoP28cqLzv15cZPC5RvbtXymsNol+tCRSb2JlcnQgQy4gV2Vp
-ciA8cm9id2VpckBob3RtYWlsLmNvbT6JAEsEEBECAAsFAjgkiCMECwMCAQAKCRBR
-6z7xV3Za8uk1AJ9I7PcEkKcRuKuwzuShKyHblJAKPwCgxO4ZaV0h/VQ4Rmu26Zyr
-6/bHZA65Ag0EOCSG6xAIAPZCV7cIfwgXcqK61qlC8wXo+VMROU+28W65Szgg2gGn
-VqMU6Y9AVfPQB8bLQ6mUrfdMZIZJ+AyDvWXpF9Sh01D49Vlf3HZSTz09jdvOmeFX
-klnN/biudE/F/Ha8g8VHMGHOfMlm/xX5u/2RXscBqtNbno2gpXI61Brwv0YAWCvl
-9Ij9WE5J280gtJ3kkQc2azNsOA1FHQ98iLMcfFstjvbzySPAQ/ClWxiNjrtVjLhd
-ONM0/XwXV0OjHRhs3jMhLLUq/zzhsSlAGBGNfISnCnLWhsQDGcgHKXrKlQzZlp+r
-0ApQmwJG0wg9ZqRdQZ+cfL2JSyIZJrqrol7DVekyCzsAAgIIALZiDVEp4qPLEi4X
-5cJVcNvqmsft2qvfxiesiOJc1a7IbECXXUjYbSFG4GkOAd3LFqgznakus4BqNxyL
-PZPZ5qDpimFEAspELAwNaVFwYHnu8YLaf1V2R22WImDXjssSKaDY0iJT68v+69FU
-BlMbHpKmK4uVCflBdfGEmVBoZaNMqWjcr4KfvwRTwPa06GcF11Ol5ld/ZBdVCrQb
-lRpnMpriiRqdY81uWAvc3zONwjoU5InTryQp7RVe8uCDdDskJbSXUgAOiE8w8jXf
-cDFq482nSu5maqE7Qhr4sv5CMb5LjiZeAyVxNdYg2VMd2afef+TnkiBM91ITbOCA
-AquWEJ+JAEYEGBECAAYFAjgkhusACgkQUes+8Vd2WvLlLACg/LAuccXl5181u2vP
-8j2yaW7cdyYAoOYLdsQGtHv+5DYuqCTjVjJtevqb
-=fA+F
------END PGP PUBLIC KEY BLOCK-----
diff --git a/License b/License
deleted file mode 100644
index b6f8711..0000000
--- a/License
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- *    if any, must include the following acknowledgment:  
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowledgment may appear in the software itself,
- *    if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Xalan" and "Apache Software Foundation" must
- *    not be used to endorse or promote products derived from this
- *    software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache",
- *    nor may "Apache" appear in their name, without prior written
- *    permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation and was
- * originally based on software copyright (c) 1999, Lotus
- * Development Corporation., http://www.lotus.com.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
diff --git a/Projects/Win32/VC6/XSLT/XSLT.dsp b/Projects/Win32/VC6/XSLT/XSLT.dsp
index 49ec44a..65163ca 100644
--- a/Projects/Win32/VC6/XSLT/XSLT.dsp
+++ b/Projects/Win32/VC6/XSLT/XSLT.dsp
@@ -80,7 +80,7 @@
 # ADD BSC32 /nologo
 LINK32=link.exe
 # ADD BASE LINK32 /nologo /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 ..\..\..\..\..\..\xml-xerces\c\Build\Win32\VC6\Debug\xerces-c_1.lib ..\..\..\..\Build\Win32\VC6\Debug\PlatformSupport.lib ..\..\..\..\Build\Win32\VC6\Debug\XercesPlatformSupport.lib ..\..\..\..\Build\Win32\VC6\Debug\XPath.lib ..\..\..\..\Build\Win32\VC6\Debug\XMLSupport.lib ..\..\..\..\Build\Win32\VC6\Debug\DOMSupport.lib ..\..\..\..\Build\Win32\VC6\Debug\XercesParserLiaison.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 ..\..\..\..\..\..\xml-xerces\c\Build\Win32\VC6\Debug\xerces-c_1.lib ..\..\..\..\Build\Win32\VC6\Debug\PlatformSupport.lib ..\..\..\..\Build\Win32\VC6\Debug\XercesPlatformSupport.lib ..\..\..\..\Build\Win32\VC6\Debug\XPath.lib ..\..\..\..\Build\Win32\VC6\Debug\XMLSupport.lib ..\..\..\..\Build\Win32\VC6\Debug\DOMSupport.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
 # SUBTRACT LINK32 /pdb:none
 
 !ENDIF 
diff --git a/README b/README
deleted file mode 100644
index e29372f..0000000
--- a/README
+++ /dev/null
@@ -1,13 +0,0 @@
-README for xml-xalan/C++ project at apache.org
-
-
-Basic Build Instructions for xml-xalan/c:
-
-- We currently have checked in project files for MSVC++ 6.0.  Load and build the "TestXSLT" subproject from
-Projects\Win32\VC6\Xalan.dsw.  Note that the STL headers are very noisy in MSVC with hundreds of warnings that 
-can be safely ignored.  Once you're built, copy the DLL's (8 of them) and the testXSLT.exe executable into a directory
-containing the xerces-c_1_0 DLL from Xerces.  Then run.  The command line is the same as Xalan/J.
-
-
-
-
diff --git a/STATUS b/STATUS
deleted file mode 100644
index 3faec94..0000000
--- a/STATUS
+++ /dev/null
@@ -1,10 +0,0 @@
-<s3 title="Things still to be done">
-  <p>We still need to do the following:</p>
-    <ul>
-      <li>Work on number formatting<br/><br/></li>
-      <li>Fix up our implementation of XPath node-set objects<br/><br/></li>
-      <li>Support for Linux builds<br/><br/></li>
-      <li>Verify conformance to <resource-ref idref="xsl-draft-used"/><br/><br/></li>
-      <li>Work on stability and performance<br/><br/></li>
-    </ul>
-</s3>    
diff --git a/docs/tail.html b/docs/tail.html
deleted file mode 100644
index 4b0cd94..0000000
--- a/docs/tail.html
+++ /dev/null
@@ -1,12 +0,0 @@
-<CENTER>
-<P>
-<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" WIDTH="80%">
-	<TR>
-		<TD WIDTH="50%" VALIGN="TOP"><B>Xalan XSL Transformer for C++</B><BR>
-			Copyright &copy; 1999 The Apache Software Foundation</TD>
-		<TD WIDTH="50%">
-			<P ALIGN="RIGHT"><IMG SRC="apacheL.jpg" ALIGN="BOTTOM" ALT="Apache Logo" BORDER="0">
-		</TD>
-	</TR>
-</TABLE>
-</CENTER>
diff --git a/docs/xslt4c.xml b/docs/xslt4c.xml
deleted file mode 100644
index ca640ce..0000000
--- a/docs/xslt4c.xml
+++ /dev/null
@@ -1,123 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE s1 SYSTEM "sbk:/style/dtd/document.dtd"[
-<!ENTITY done-c SYSTEM "sbk:/sources/xalan/c/DONE">
-<!ENTITY status-c SYSTEM "sbk:/sources/xalan/c/STATUS">
-<!ENTITY bugs-c SYSTEM "sbk:/sources/xalan/c/BUGS">]>
-
-<!--
- * The Apache Software License, Version 1.1
- *
- *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- *    if any, must include the following acknowledgment:  
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowledgment may appear in the software itself,
- *    if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Xalan" and "Apache Software Foundation" must
- *    not be used to endorse or promote products derived from this
- *    software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache",
- *    nor may "Apache" appear in their name, without prior written
- *    permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation and was
- * originally based on software copyright (c) 1999, Lotus
- * Development Corporation., http://www.lotus.com.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- -->
- 
-<s1 title="Xalan C++ XSL Transformer">
-
-  <s2 title="Xalan C++">
-     <p>Like Xalan-Java, Xalan-C++ implements <resource-ref idref="xsl-draft-used"/>. Version 0.19.0 is our first release, 
-     including a build for Win32. We plan to add a build for Linux in the near future, other builds to follow.</p>
-     <p>The build includes 8 DLLs and an executable (TestXSLT.exe, a command-line utility). To use this utility 
-     to perform transformations, place these files in a directory with the Xerces dynamic link library, xerces-c_1_0.dll.</p>
-  </s2>
-  <s2 title="Command-line utility">  
-    <p>&xslt4c; implements a subset of the same interface provided by &xslt4j;. This version accepts the following switches
-    and arguments:</p> 
-      <source>
-        -IN inputXMLURL
-        -XSL XSLTransformationURL
-        -OUT outputFileName
-        -E (Keep--do not expand -- entity refs)
-        -V (Version info)
-        -QC (Quiet Pattern Conflicts Warnings)
-        -Q  (Quiet Mode)
-        -INDENT (Number of spaces to indent each level in output tree --default is 0)
-        -VALIDATE (Validate the XML and XSL input -- validation is off by default)
-        -XML (Use XML formatter and add XML header)
-        -TEXT (Use simple Text formatter)
-        -HTML (Use HTML formatter)
-        -PARAM name expression (Set a stylesheet parameter)
-      </source>
-      <p>Use -IN to specify the XML source document, -XSL to specify the XSL stylesheet, and -OUT to specify the
-      output file.</p>
-      <p>Use -TEXT if you want the output to include only element values (not element tags with element names and
-      attributes). Use -HTML to write 4.0 transitional HTML (some elements, such as ltxxbr&gt;, are
-      not well formed.</p>
-      <p>To set stylesheet parameters from the command line, use -PARAM name expression. If 
-      you want to set the parameter to a string value, enclose the string in single quotes (') to
-      make it an expression.</p>
-  </s2>
-  <s2 title="API">
-    <p>The API documentation, generated using Doc++ from comments in the header files, is still in very preliminary form. For example,
-    it lists public classes, class members, and functions, but does not yet identify which of these are exported. 
-    With this in mind, see <jump href="c-apidocs/aindex.html">Xalan C++ API: Table of Contents</jump>.</p>
-  </s2>
-  <s2 title="&xslt4c; Features">
-	    <ul> 
-		    <li>Implements the <resource-ref idref="xsl-draft-used"/>.</li> 
-    	  <li>Uses the &xml4c; XML parser></li>
-    	  <li>Can output to SAX or DOM</li>
-	    </ul> 
-	  </s2>
-    <s2 title="Version Notes">
-     &done-c;
-     &status-c;
-     &bugs-c;
-   </s2>
- 
-	 <s2 title="Contact Info and Bug Reports"> 
-          <p>Contact information for &xslt4c;: <human-resource-ref idref="dnbertoni"/>, 
-          <human-resource-ref idref="pweir"/>.</p>
-	 </s2> 
- 
-
-</s1>
\ No newline at end of file
diff --git a/samples/XPathWrapper/DLL.dsp b/samples/XPathWrapper/DLL.dsp
deleted file mode 100644
index dee1a63..0000000
--- a/samples/XPathWrapper/DLL.dsp
+++ /dev/null
@@ -1,111 +0,0 @@
-# Microsoft Developer Studio Project File - Name="DLL" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-
-CFG=DLL - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE 
-!MESSAGE NMAKE /f "DLL.mak".
-!MESSAGE 
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f "DLL.mak" CFG="DLL - Win32 Debug"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "DLL - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "DLL - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE 
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
-!IF  "$(CFG)" == "DLL - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "DLL_EXPORTS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "DLL_EXPORTS" /D "_XPathWrapper" /YX /FD /c
-# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
-# ADD LINK32 ..\..\..\..\xml-xerces\c\Build\Win32\VC6\Release\xerces-c_1.lib ..\..\Build\Win32\VC6\Release\PlatformSupport.lib ..\..\Build\Win32\VC6\Release\XercesPlatformSupport.lib ..\..\Build\Win32\VC6\Release\XPath.lib ..\..\Build\Win32\VC6\Release\DOMSupport.lib ..\..\Build\Win32\VC6\Release\XercesParserLiaison.lib /nologo /dll /machine:I386
-
-!ELSEIF  "$(CFG)" == "DLL - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "DLL_EXPORTS" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "DLL_EXPORTS" /D "_XPathWrapper" /YX /FD /GZ /c
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 ..\..\..\..\xml-xerces\c\Build\Win32\VC6\Debug\xerces-c_1.lib ..\..\Build\Win32\VC6\Debug\PlatformSupport.lib ..\..\Build\Win32\VC6\Debug\XercesPlatformSupport.lib ..\..\Build\Win32\VC6\Debug\XPath.lib ..\..\Build\Win32\VC6\Debug\DOMSupport.lib ..\..\Build\Win32\VC6\Debug\XercesParserLiaison.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
-
-!ENDIF 
-
-# Begin Target
-
-# Name "DLL - Win32 Release"
-# Name "DLL - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=.\XPathWrapper.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=.\XPathWrapper.hpp
-# End Source File
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/samples/XPathWrapper/TestDriver.cpp b/samples/XPathWrapper/TestDriver.cpp
deleted file mode 100644
index 3f024b5..0000000
--- a/samples/XPathWrapper/TestDriver.cpp
+++ /dev/null
@@ -1,41 +0,0 @@
-#include <iostream>
-#include <fstream>
-
-#include "XPathWrapper.hpp"
-
-int main(int argc, const char* argv[])
-{
-	if (argc<4)
-	{
-		std::cerr << "Syntax: TestDriver XMLFilePath Context XPathExpression\n";
-		return -1;
-	}
-
-	std::string theXML;
-
-	std::ifstream in(argv[1]);
-
-	// slow and dirty dump of the xml file into a buffer
-	char c;
-	while(in.get(c))
-		theXML += c;
-
-	///////////////////////////////////////////..
-
-	// create your XPath helper object
-	XPathWrapper helper;
-
-	// call evaluate, passing in the XML string, the context string and the xpath string
-	std::vector<std::string> result = helper.evaluate(theXML, argv[2], argv[3]);
-
-	// take the resulting string vector	and do whatever you want with it:
-	size_t len = result.size();
-
-	std::cout<< "the result set has " << len << " strings\n";
-
-	for (size_t i=0; i<len; i++)
-		std::cout<< "item " << (i+1) << "= \"" << result[i] << "\"" << std::endl;
-
-
-	return 0;
-}
\ No newline at end of file
diff --git a/samples/XPathWrapper/TestDriver.dsp b/samples/XPathWrapper/TestDriver.dsp
deleted file mode 100644
index 56d2916..0000000
--- a/samples/XPathWrapper/TestDriver.dsp
+++ /dev/null
@@ -1,102 +0,0 @@
-# Microsoft Developer Studio Project File - Name="TestDriver" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=TestDriver - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE 
-!MESSAGE NMAKE /f "TestDriver.mak".
-!MESSAGE 
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f "TestDriver.mak" CFG="TestDriver - Win32 Debug"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "TestDriver - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "TestDriver - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE 
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF  "$(CFG)" == "TestDriver - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-
-!ELSEIF  "$(CFG)" == "TestDriver - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\..\..\xml-xerces\c\src" /I "..\..\src" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ENDIF 
-
-# Begin Target
-
-# Name "TestDriver - Win32 Release"
-# Name "TestDriver - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=.\TestDriver.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/samples/XPathWrapper/XPathWrapper.cpp b/samples/XPathWrapper/XPathWrapper.cpp
deleted file mode 100644
index c19535c..0000000
--- a/samples/XPathWrapper/XPathWrapper.cpp
+++ /dev/null
@@ -1,199 +0,0 @@
-#include <string>
-#include <vector>
-#include <cassert>
-#include <iostream>
-
-#include <parsers/DOMParser.hpp>
-#include <util/PlatformUtils.hpp>
-#include <dom/DOM_Node.hpp>
-#include <dom/DOM_Document.hpp>
-#include <dom/DOM_Element.hpp>
-#include <dom/DOM_NodeList.hpp>
-#include <framework/URLInputSource.hpp>
-#include <PlatformSupport/DirectoryEnumerator.hpp>
-#include <PlatformSupport/DOMStringHelper.hpp>
-#include <DOMSupport/DOMSupportDefault.hpp>
-#include <XPath/XObjectFactoryDefault.hpp>
-#include <XPath/XPathEnvSupportDefault.hpp>
-#include <XPath/XPathExecutionContextDefault.hpp>
-#include <XPath/XPathSupportDefault.hpp>
-#include <XPath/XPath.hpp>
-#include <XPath/XPathProcessorImpl.hpp>
-#include <XPath/XPathFactoryDefault.hpp>
-#include <XPath/ElementPrefixResolverProxy.hpp>
-#include <XMLSupport/FormatterTreeWalker.hpp>
-#include <XMLSupport/FormatterToXML.hpp>
-#include <XercesParserLiaison/XercesParserLiaison.hpp>
-
-#include <framework/MemBufInputSource.hpp>
-
-#include "XPathWrapper.hpp"
-
-
-////////////////////////////////////////////////////
-
-// the implementation class, that does all calls to XPath and Xerces
-class XPathWrapperImpl
-{
-private:
-	std::string DOMStringToStdString(const DOMString& domString)
-	{
-		std::string ret;
-
-		for (int i=0; i< domString.length(); i++)
-		{
-			ret += (char)domString.charAt(i);
-		}
-
-		return ret;
-	}
-
-public:
-	std::vector<std::string> evaluate(
-		const std::string& xml, 
-		const std::string& context, 
-		const std::string& expr)
-	{
-		//initialize XML4C
-		try
-		{
-			XMLPlatformUtils::Initialize();
-		}
-
-		catch(const XMLException& e)
-		{
-			throw;
-		}
-
-		// parse the XML file
-		DOM_Element rootNode;
-		DOMParser parser;
-
-		try
-		{
-			// parse XML and get root element
-			MemBufInputSource inStream((const XMLByte*)xml.c_str(), 
-				xml.length(), "foo", false);
-
-			parser.parse(inStream);
-
-			DOM_Document doc = parser.getDocument();
-			rootNode = doc.getDocumentElement();
-		}
-
-		catch(const XMLException& e)
-		{
-			throw;
-		}
-
-
-		// configure the objects needed for XPath to work with the Xerces DOM
-		XPathEnvSupportDefault			theEnvSupport;
-		DOMSupportDefault				theDOMSupport;
-		XPathSupportDefault				theSupport(theDOMSupport);
-		XObjectFactoryDefault			theXObjectFactory(theEnvSupport, theSupport);
-		XPathExecutionContextDefault	theExecutionContext(theEnvSupport, theSupport, theXObjectFactory);
-		XPathFactoryDefault				theXPathFactory;
-		XPathProcessorImpl				theXPathProcessor;
-		XercesParserLiaison				theLiaison(theDOMSupport);
-
-		std::vector<std::string> theResultList;
-
-		try
-		{
-			// first get the context nodeset
-			XPath *contextXPath = theXPathFactory.create();
-			theXPathProcessor.initXPath(*contextXPath,
-										DOMString(context.c_str()),
-										ElementPrefixResolverProxy(rootNode,theSupport),
-										theXObjectFactory,
-										theEnvSupport);
-
-			MutableNodeRefList contextNodeList;		//default empty context
-	   		XObject* xObj = contextXPath->execute(rootNode,
-												  ElementPrefixResolverProxy(rootNode,theSupport),
-												  contextNodeList,
-												  theExecutionContext);
-
-			contextNodeList = xObj->mutableNodeset();
-
-
-			// and now get the result of the primary xpath expression
-			XPath *xpath = theXPathFactory.create();
-			theXPathProcessor.initXPath(*xpath,
-										DOMString(expr.c_str()),
-										ElementPrefixResolverProxy(rootNode, theSupport),
-										theXObjectFactory,
-										theEnvSupport);
-
-			xObj = xpath->execute(rootNode,
-								  ElementPrefixResolverProxy(rootNode,theSupport),
-								  contextNodeList,
-								  theExecutionContext);
-
-			// now encode the results.  For all types but nodelist, we'll just convert it to a string
-			// but, for nodelist, we'll convert each node to a string and return a list of them
-			switch (xObj->getType())
-			{
-				case XObject::eTypeNodeSet:
-				{
-					const NodeRefListBase& nodeset = xObj->nodeset();
-					size_t len = nodeset.getLength();
-
-					for (size_t i=0; i<len; i++)
-					{
-						DOM_Node node = nodeset.item(i);
-						DOMString str;
-						
-						const int theType = node.getNodeType();
-
-						if (theType==DOM_Node::COMMENT_NODE || theType==DOM_Node::PROCESSING_INSTRUCTION_NODE)
-							str = node.getNodeValue();
-						else
-							str = theSupport.getNodeData(node);
-
-						theResultList.push_back(DOMStringToStdString(str));
-					}
-
-					break;
-				}
-
-				default:
-				{
-					theResultList.push_back(DOMStringToStdString(xObj->str()));
-					break;
-				}
-			}
-		}
-
-		catch(const XMLException& e)
-		{
-			throw;
-		}
-
-		return theResultList;
-	}
-};
-
-
-////////////////////////////////////////////////////
-
-// The public XPathWrapper methods just delegate to our impl class
-
-XPathWrapper::XPathWrapper()
-{
-	pImpl = new XPathWrapperImpl();
-}
-
-XPathWrapper::~XPathWrapper()
-{
-	delete pImpl;
-}
-
-std::vector<std::string> XPathWrapper::evaluate(
-	const std::string& xml, 
-	const std::string& context, 
-	const std::string& path)
-{
-	return pImpl->evaluate(xml,context,path);
-}
diff --git a/samples/XPathWrapper/XPathWrapper.dsw b/samples/XPathWrapper/XPathWrapper.dsw
deleted file mode 100644
index 233d955..0000000
--- a/samples/XPathWrapper/XPathWrapper.dsw
+++ /dev/null
@@ -1,44 +0,0 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "DLL"=".\DLL.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "TestDriver"=".\TestDriver.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-    Begin Project Dependency
-    Project_Dep_Name DLL
-    End Project Dependency
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
diff --git a/samples/XPathWrapper/XPathWrapper.hpp b/samples/XPathWrapper/XPathWrapper.hpp
deleted file mode 100644
index 43b3cd8..0000000
--- a/samples/XPathWrapper/XPathWrapper.hpp
+++ /dev/null
@@ -1,37 +0,0 @@
-#include <string>
-#include <vector>
-
-#ifdef _XPathWrapper
-#define XPathWrapperDecl __declspec(dllexport)
-#else
-#define XPathWrapperDecl __declspec(dllimport)
-#endif
-
-class XPathWrapperImpl;
-
-class XPathWrapperDecl XPathWrapper
-{
-
-public:
-	XPathWrapper();
-	virtual ~XPathWrapper();
-
-	// Given an xml document and an xpath context and expression in the form of (ascii) string objects,
-	// this function parses the XML document, evaluates the xpath and returns the result, as a list of 
-	// string objects
-
-	std::vector<std::string> evaluate(
-		const std::string& xml, 
-		const std::string& context, 
-		const std::string& path);
-
-private:
-	// not implemented
-	XPathWrapper(const XPathWrapper&);
-	XPathWrapper& operator=(const XPathWrapper&);
-	bool operator==(const XPathWrapper&) const;
-
-	XPathWrapperImpl* pImpl;
-};
-
-
diff --git a/src/Makefile.in b/src/Makefile.in
index bf3c7cd..e2665c7 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -55,6 +55,9 @@
 # 
 #
 # $Log$
+# Revision 1.4  2000/04/10 20:25:06  dbertoni
+# Changes to remove absolute path to shared library when linking executable.
+#
 # Revision 1.3  2000/02/10 13:08:55  jdonohue
 # Added make for dependencies
 #
@@ -171,9 +174,10 @@
 ALL_OBJECTS_DIR = ${XALANCROOT}/obj
 LIB_DIR = ${XALANCROOT}/lib
 
-LIBNAME = libxalan-c
+PROJECT_NAME = xalan-c
+LIBNAME = lib${PROJECT_NAME}
 THISLIB = ${LIB_DIR}/${LIBNAME}
-VER = 1_0
+VER = 0_30_0
 
 PRODUCTNAME=xalan
 PRODUCTVERSION=${VER}
@@ -210,7 +214,7 @@
 	-${MKDIR} -p ${LIB_DIR}
 	-${MKDIR} -p $(BINTARGETDIR)
 
-# Create header dependendies file -- this must be run before any objects are
+# Create header dependencies file -- this must be run before any objects are
 # built
 depend:
 	$(MAKE) -f makedepends DEPFILE=$(DEPFILE)
@@ -223,14 +227,14 @@
 
 testXPath: $(BINTARGETDIR)/testXPath
 
-$(BINTARGETDIR)/testXSLT: $(TESTXSLT_DIR)/process.cpp $(THISLIB)$(VER)$(SHLIBSUFFIX)
+$(BINTARGETDIR)/testXSLT: $(TESTXSLT_DIR)/process.cpp
 	  ${LINK} ${PLATFORM_LIB_LINK_OPTIONS} $^ -o $@ $(XSL_INCL) \
-	  ${LIBRARY_SEARCH_PATHS} ${EXTRA_LINK_OPTIONS} $(ALLLIBS) $(CXXFLAGS)
+	  ${LIBRARY_SEARCH_PATHS} ${EXTRA_LINK_OPTIONS} -L$(LIB_DIR) -l$(PROJECT_NAME)$(VER) $(ALLLIBS) $(CXXFLAGS)
 
 $(BINTARGETDIR)/testXPath: $(TESTXPATH_DIR)/TestXPath.cpp \
-	$(TESTXPATH_DIR)/NodeNameTreeWalker.cpp $(THISLIB)$(VER)$(SHLIBSUFFIX)
+	$(TESTXPATH_DIR)/NodeNameTreeWalker.cpp
 	${LINK} ${PLATFORM_LIB_LINK_OPTIONS} $^ -o $@ $(XSL_INCL) \
-	${LIBRARY_SEARCH_PATHS} ${EXTRA_LINK_OPTIONS} $(ALLLIBS) $(CXXFLAGS)
+	${LIBRARY_SEARCH_PATHS} ${EXTRA_LINK_OPTIONS} -L$(LIB_DIR) -l$(PROJECT_NAME)$(VER) $(ALLLIBS) $(CXXFLAGS)
 
 
 lib:	$(THISLIB)$(VER)$(SHLIBSUFFIX)
@@ -243,3 +247,10 @@
 	rm $(THISLIB)$(VER)$(SHLIBSUFFIX)
 	rm  $(BINTARGETDIR)/testXSLT
 	rm  $(BINTARGETDIR)/testXPath
+
+
+
+
+
+
+
diff --git a/src/PlatformSupport/DOMStringHelper.hpp b/src/PlatformSupport/DOMStringHelper.hpp
index 62527ab..451784c 100644
--- a/src/PlatformSupport/DOMStringHelper.hpp
+++ b/src/PlatformSupport/DOMStringHelper.hpp
@@ -506,6 +506,22 @@
 													theEndIndex - theStartIndex;
 		assert(theStartIndex + theLength <= theStringLength);
 
+		// @@ JMD:
+		// If this is the case, the DOMString class doesn't create a new string,
+		// and in any case, does not null terminate the string, just points to
+		// the beginning, so we have to manually extract 'theLength' characters
+		// and create a new buffer
+		if (0 == theStartIndex)
+		{
+			const XMLCh *ptr = theString.rawBuffer();
+			XMLCh *newStr = new XMLCh[theLength+1];
+			for (size_t u = 0; u < theLength; u++)
+				newStr[u] = ptr[u];
+			newStr[u] = 0;
+			DOMString domStr = newStr;
+			delete []newStr;
+			return domStr;
+		}
 		return theString.substringData(theStartIndex, theLength);
 	}
 }
diff --git a/src/XMLSupport/FormatterToHTML.cpp b/src/XMLSupport/FormatterToHTML.cpp
index e998cc7..ebeee2d 100644
--- a/src/XMLSupport/FormatterToHTML.cpp
+++ b/src/XMLSupport/FormatterToHTML.cpp
@@ -130,40 +130,6 @@
 }
 
 
-void
-FormatterToHTML::startDocument()
-{
-    m_needToOutputDocTypeDecl = true;
-    m_startNewLine = false;
-    
-    if(true == m_needToOutputDocTypeDecl)
-    {
-		// Output the header if either the System or Public attributes are
-		// specified
-		if((! isEmpty(m_doctypeSystem)) || (! isEmpty(m_doctypePublic)))
-		{
-			m_writer.write("<!DOCTYPE HTML");          
-			if(! isEmpty(m_doctypePublic))
-			{
-				m_writer.write(" PUBLIC \"");
-				m_writer.write(m_doctypePublic);
-				m_writer.write("\"");
-			}
-			if(! isEmpty(m_doctypeSystem))
-			{
-				if(isEmpty(m_doctypePublic))
-					m_writer.write(" SYSTEM \"");
-				else
-					m_writer.write(" \"");
-				m_writer.write(m_doctypeSystem);
-				m_writer.write("\"");
-			}
-			m_writer.write(">");
-			m_writer.write(m_lineSep);
-      }              
-    }
-    m_needToOutputDocTypeDecl = false;
-}
 
 void
 FormatterToHTML::endDocument()
@@ -214,6 +180,25 @@
 				m_writer.write(">");
 				m_writer.write(m_lineSep);
 			}
+			else
+			{
+				m_writer.write("<!DOCTYPE ");
+				if(equals(theName, "HTML"))
+					m_writer.write("html");  // match Clark
+				else
+					m_writer.write(name);
+				if(! isEmpty(m_version))
+				{
+					// Not totally sure about this.
+					m_writer.write(" PUBLIC \"-//W3C//DTD "+m_version+" //EN\">");
+					m_writer.write(m_lineSep);
+				}
+				else
+				{
+					m_writer.write(" PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">");
+					m_writer.write(m_lineSep);
+				}
+			}
 		}
 		// java: catch(IOException ioe)
 		catch(...)
@@ -228,9 +213,8 @@
 	// element is a non-block element, then do not indent.
 	m_doIndent =
 	((s_nonblockelems.end() != s_nonblockelems.find(toUpperCase(theName))) ||
-	((! isEmpty(m_currentElementName) &&
-		(s_nonblockelems.end() !=
-		 s_nonblockelems.find(toUpperCase(m_currentElementName))))))
+	((! isEmpty(m_currentElementName)) &&
+		(s_nonblockelems.end() != s_nonblockelems.find(toUpperCase(m_currentElementName)))))
 			? false : true;
 
 	m_currentElementName = name;
@@ -275,13 +259,15 @@
 {
 	try
 	{
- 		m_currentIndent -= m_indent;
+		m_currentIndent -= m_indent;
 		// name = name.toUpperCase();
 		const bool	hasChildNodes = childNodesWereAdded();
+      bool isWhitespaceSensitive 
+        = (s_nonblockelems.end() != s_nonblockelems.find(toUpperCase(name)));
 
 		if (hasChildNodes == true) 
 		{
-			if (shouldIndent() == true)
+			if (shouldIndent() == true && ! isWhitespaceSensitive)
 				indent(m_writer, m_currentIndent);
 			m_writer.write("</");
 			m_writer.write(name);
@@ -364,6 +350,13 @@
 			int chNum = ch;
 			if ('\n' == ch) 
 			{
+			/*
+				java:
+				for(int k = 0; k < m_lineSepLen; k++)
+				{
+					m_charBuf[pos++] = m_lineSep.charAt(k);
+				}
+			*/
 				m_charBuf[pos++] = m_lineSep;
 			}
 			else if ('<' == ch) 
diff --git a/src/XMLSupport/FormatterToHTML.hpp b/src/XMLSupport/FormatterToHTML.hpp
index 13b0ddf..3bf9e54 100644
--- a/src/XMLSupport/FormatterToHTML.hpp
+++ b/src/XMLSupport/FormatterToHTML.hpp
@@ -133,9 +133,6 @@
 	// These methods are inherited from DocumentHandler ...
 
 	virtual void
-	startDocument();
-
-	virtual void
 	endDocument();
 
 	virtual void
diff --git a/src/XMLSupport/FormatterToXML.cpp b/src/XMLSupport/FormatterToXML.cpp
index 3cee72c..eb6d00f 100644
--- a/src/XMLSupport/FormatterToXML.cpp
+++ b/src/XMLSupport/FormatterToXML.cpp
@@ -359,6 +359,13 @@
 			const int chNum = ch;
 			if ('\n' == ch) 
 			{
+			/*
+				java:
+				for(int k = 0; k < m_lineSepLen; k++)
+				{
+					m_charBuf[pos++] = m_lineSep.charAt(k);
+				}
+			*/
 				m_charBuf[pos++] = m_lineSep;
 			}
 			else if ('<' == ch) 
@@ -595,45 +602,31 @@
 			const XMLCh* const	target,
 			const XMLCh* const	data)
 {
-// @@ Need to add this --
-//    if(m_inEntityRef)
-//      return;
-
-	// Use a fairly nasty hack to tell if the next node is supposed to be 
-	// unescaped text.
-	if(equals(target, DOMString("xslt-next-is-raw"))
-		&& equals(data, DOMString("formatter-to-dom")))
+	try
 	{
-		m_nextIsRaw = true;
+		writeParentTagEnd();
+
+		if (shouldIndent() == true)  
+		{
+			indent(m_writer, m_currentIndent);
+		}
+
+		m_writer.write("<?");
+		m_writer.write(target);
+
+		if (length(data) > 0 && !isSpace(data[0]))
+		{
+			m_writer.write(" ");
+		}
+
+		m_writer.write(data);
+		m_writer.write("?>");
+
+		m_startNewLine = true;
 	}
-	else	
+	catch(...)
 	{
-		try
-		{
-			writeParentTagEnd();
-
-			if (shouldIndent() == true)  
-			{
-				indent(m_writer, m_currentIndent);
-			}
-
-			m_writer.write("<?");
-			m_writer.write(target);
-
-			if (length(data) > 0 && !isSpace(data[0]))
-			{
-				m_writer.write(" ");
-			}
-
-			m_writer.write(data);
-			m_writer.write("?>");
-
-			m_startNewLine = true;
-		}
-		catch(...)
-		{
-			throw SAXException();
-		}
+	  throw SAXException();
 	}
 }
 
diff --git a/src/XPath/XPath.cpp b/src/XPath/XPath.cpp
index 01f3f7b..c4253f7 100644
--- a/src/XPath/XPath.cpp
+++ b/src/XPath/XPath.cpp
@@ -1420,6 +1420,7 @@
 	assert(m_expression.getToken(funcID) != 0);
 
 	const DOMString		theFunctionName(m_expression.getToken(funcID)->str());
+	assert(!isEmpty(theFunctionName));
 
 	return s_functions[theFunctionName].execute(executionContext, context, opPos, argVec);
 }
diff --git a/src/XPath/XPathEnvSupportDefault.cpp b/src/XPath/XPathEnvSupportDefault.cpp
index c0c64cc..0150f89 100644
--- a/src/XPath/XPathEnvSupportDefault.cpp
+++ b/src/XPath/XPathEnvSupportDefault.cpp
@@ -74,7 +74,11 @@
 #include "XObjectFactory.hpp"
 #include "XPathExecutionContext.hpp"
 
-
+#if !defined(XALAN_NO_NAMESPACES)
+	using std::cerr;
+	using std::endl;
+#endif
+		
 
 XPathEnvSupportDefault::XPathEnvSupportDefault() :
 	XPathEnvSupport(),
@@ -291,7 +295,7 @@
 			XPathExecutionContext&			executionContext,
 			const DOMString&				theNamespace,
 			const DOMString&				extensionName,
-			const std::vector<XObject*>&	argVec) const
+			const XObjectPtrVectorType&	argVec) const
 {
 	if (m_extendedSupport != 0)
 	{
@@ -374,12 +378,12 @@
 	}
 	else
 	{
-		std::cerr << msg
+		cerr << msg
 				  << ", at line number "
 				  << static_cast<long>(lineNo)
 				  << " at offset "
 				  << static_cast<long>(charOffset)
-				  << std::endl;
+				  << endl;
 
 		return classification == XPathEnvSupport::eError ? true : false;
 	}
diff --git a/src/XPath/XPathEnvSupportDefault.hpp b/src/XPath/XPathEnvSupportDefault.hpp
index 5c47b59..0a67b3b 100644
--- a/src/XPath/XPathEnvSupportDefault.hpp
+++ b/src/XPath/XPathEnvSupportDefault.hpp
@@ -80,6 +80,15 @@
 {
 public:
 
+#if defined(XALAN_NO_NAMESPACES)
+	typedef vector<XObject*> XObjectPtrVectorType;
+	typedef map<DOMString, DOM_Document>	SourceDocsTableType;
+#else
+	typedef std::vector<XObject*> XObjectPtrVectorType;
+	typedef std::map<DOMString, DOM_Document>	SourceDocsTableType;
+#endif
+
+
 	XPathEnvSupportDefault();
 
 	virtual
@@ -199,8 +208,6 @@
 
 	// Table for storing source tree documents, which are keyed by
 	// URL.
-	typedef std::map<DOMString, DOM_Document, DOMStringEqualsFunction>	SourceDocsTableType;
-
 	SourceDocsTableType		m_sourceDocs;
 };
 
diff --git a/src/XSLT/ElemNumber.cpp b/src/XSLT/ElemNumber.cpp
index a88e247..b5483a5 100644
--- a/src/XSLT/ElemNumber.cpp
+++ b/src/XSLT/ElemNumber.cpp
@@ -245,9 +245,9 @@
 		if(0 != fromMatchPattern)
 		{
 			if(fromMatchPattern->getMatchScore(contextCopy,
-											   executionContext.getXPathExecutionContext()) != XPath::s_MatchScoreNone)
+						executionContext.getXPathExecutionContext()) !=
+							XPath::s_MatchScoreNone)
 			{
-				contextCopy = 0;
 				break;
 			}
 		}
@@ -255,7 +255,8 @@
 		if(0 != countMatchPattern)
 		{
 			if(countMatchPattern->getMatchScore(context,
-												executionContext.getXPathExecutionContext()) != XPath::s_MatchScoreNone)
+						executionContext.getXPathExecutionContext()) !=
+							XPath::s_MatchScoreNone)
 			{
 				break;
 			}
@@ -380,7 +381,7 @@
 			const DOM_Node&					/* sourceTree */, 
 			const DOM_Node&					sourceNode) const
 {
-	IntArrayType	list;
+	IntArrayType	numberList;
 
 	if(0 != m_valueExpr)
 	{
@@ -389,7 +390,7 @@
 								 *this,
 								 executionContext.getXPathExecutionContext());
 
-		list.push_back(static_cast<int>(countObj->num()));
+		numberList.push_back(static_cast<int>(countObj->num()));
 	}
 	else
 	{      
@@ -399,8 +400,6 @@
 		if((Constants::NUMBERLEVEL_ANY == m_level) || 
 			(Constants::NUMBERLEVEL_SINGLE == m_level))
 		{
-			list.push_back(0);
-
 			if(Constants::NUMBERLEVEL_SINGLE == m_level)
 			{
 				DOM_Node target = findAncestor(executionContext, m_fromMatchPattern, 
@@ -411,7 +410,7 @@
 
 				if(target != 0)
 				{
-					list[0] = getSiblingNumber(executionContext, countMatchPattern, target);
+					numberList.push_back(getSiblingNumber(executionContext, countMatchPattern, target));
 				}
 				else
 				{
@@ -427,7 +426,11 @@
 
 				if(0 != m_fromMatchPattern)
 				{
-					from = findPrecedingOrAncestorOrSelf(executionContext, 0, m_fromMatchPattern, 
+// @@ JMD: was as below, which looked wrong to me based on java code and the
+// meaning of the arguments. The sad fact is that the number of tests we
+// passed went DOWN after this change
+// 					from = findPrecedingOrAncestorOrSelf(executionContext, 0, m_fromMatchPattern, 
+					from = findPrecedingOrAncestorOrSelf(executionContext, m_fromMatchPattern, countMatchPattern,
 						sourceNode, DOM_UnimplementedElement(const_cast<ElemNumber*>(this)));
 
 					if(from == 0)
@@ -442,17 +445,17 @@
 
 				DOM_Node fromPos = (from != sourceNode) ? getNextInTree(from, from) : from;
 
-				list[0] = getNumberInTree(executionContext.getXPathExecutionContext(), countMatchPattern, fromPos, from, sourceNode, 0);
+				numberList.push_back(getNumberInTree(executionContext.getXPathExecutionContext(), countMatchPattern, fromPos, from, sourceNode, 0));
 			}
 		}
 		else // if NUMBERLEVEL_MULTI
 		{
-			list = getAncestorNumbers(executionContext, m_fromMatchPattern,
-				countMatchPattern, sourceNode);
+			 numberList = getAncestorNumbers(executionContext, m_fromMatchPattern,
+			 	countMatchPattern, sourceNode);
 		}
 	}
 
-	return list.size() > 0 ? formatNumberList(executionContext, list, sourceNode) : DOMString();
+	return numberList.size() > 0 ? formatNumberList(executionContext, numberList, sourceNode) : DOMString();
 }
 
 
diff --git a/src/XSLT/ElemTemplateElement.cpp b/src/XSLT/ElemTemplateElement.cpp
index 2aead03..e09d1d2 100644
--- a/src/XSLT/ElemTemplateElement.cpp
+++ b/src/XSLT/ElemTemplateElement.cpp
@@ -676,7 +676,7 @@
 			const Stylesheet&			stylesheet_tree, 
 			const ElemTemplateElement*	xslInstruction, // xsl:apply-templates or xsl:for-each
 			const ElemTemplateElement*	theTemplate, // may be null
-			const DOM_Node&				sourceTree, 
+			const DOM_Node&				/*sourceTree*/, 
 			const DOM_Node&				selectContext,
 			const DOM_Node&				child,
 			const QName&				mode,
@@ -686,6 +686,9 @@
 	bool shouldStrip = false;
 
 	const int nodeType = child.getNodeType();
+	const DOM_Node	sourceTree = (DOM_Node::DOCUMENT_NODE == nodeType) ? child :
+		 child.getOwnerDocument();
+
 	const Stylesheet* stylesheetTree = &stylesheet_tree;
 
 	bool isApplyImports = xslToken == Constants::ELEMNAME_APPLY_IMPORTS;
diff --git a/src/XSLT/FunctionDocument.cpp b/src/XSLT/FunctionDocument.cpp
index f9158af..78bdfcb 100644
--- a/src/XSLT/FunctionDocument.cpp
+++ b/src/XSLT/FunctionDocument.cpp
@@ -93,10 +93,10 @@
 {
 	DOMString		localURI(uri);
 
-    DOM_Document	newDoc = executionContext.getSourceDocument(localURI);
+	DOM_Document	newDoc = executionContext.getSourceDocument(localURI);
 
-    if(newDoc == 0)
-    {
+	if(newDoc == 0)
+	{
 		if(length(localURI) == 0)
 		{
 			assert(executionContext.getPrefixResolver() != 0);
@@ -106,7 +106,7 @@
 
 		try
 		{
-			newDoc = executionContext.parseXML(base, localURI);
+			newDoc = executionContext.parseXML(localURI, base);
 
 		}
 		catch(...)
@@ -187,6 +187,19 @@
 			base = executionContext.getPrefixResolver()->getURI();
 		}
 
+		// Chop off the file name part of the URI, this includes the
+		// trailing separator
+		DOMString newBase;
+		{
+			int indexOfSlash = lastIndexOf(base, '/');
+#if defined(WIN32)				
+			const int indexOfBackSlash = lastIndexOf(base, '\\');
+			if(indexOfBackSlash > indexOfSlash)
+				indexOfSlash = indexOfBackSlash;
+#endif				
+				newBase = substring(base, 0, indexOfSlash+1);
+		}
+
 		MutableNodeRefList		mnl(executionContext.createMutableNodeRefList());
 
 		const int				nRefs = XObject::eTypeNodeSet == arg->getType() ?
@@ -213,15 +226,20 @@
 				// unencoded slashes in their naming schemes.  If they do, absolute URIs
 				// will still work, but confusion may result.
 				const int indexOfColon = indexOf(ref, ':');
-				const int indexOfSlash = indexOf(ref, '/');
+				int indexOfSlash = indexOf(ref, '/');
+#if defined(WIN32)				
+				const int indexOfBackSlash = indexOf(ref, '\\');
+				if(indexOfBackSlash > indexOfSlash)
+					indexOfSlash = indexOfBackSlash;
+#endif				
 
 				if(indexOfColon != -1 && indexOfSlash != -1 && indexOfColon < indexOfSlash)
 				{
 					// The url (or filename, for that matter) is absolute.
-					base = DOMString();
+					newBase = DOMString();
 				}
 
-				const DOM_Document	newDoc = getDoc(executionContext, ref, base);
+				const DOM_Document	newDoc = getDoc(executionContext, ref, newBase);
 
 				if(newDoc != 0)
 				{
diff --git a/src/XSLT/XSLTProcessorEnvSupportDefault.cpp b/src/XSLT/XSLTProcessorEnvSupportDefault.cpp
index 81401b3..781520e 100644
--- a/src/XSLT/XSLTProcessorEnvSupportDefault.cpp
+++ b/src/XSLT/XSLTProcessorEnvSupportDefault.cpp
@@ -61,12 +61,13 @@
 #include <iostream>
 
 
-
+#include <util/XMLURL.hpp>
 #include <PlatformSupport/DOMStringHelper.hpp>
+#include <XMLSupport/XMLParserLiaison.hpp>
 
 #include "StylesheetRoot.hpp"
 #include "XSLTProcessor.hpp"
-
+#include "XSLTInputSource.hpp"
 
 
 XSLTProcessorEnvSupportDefault::XSLTProcessorEnvSupportDefault(XSLTProcessor*	theProcessor) :
@@ -109,6 +110,24 @@
 	}
 }
 
+DOM_Document
+XSLTProcessorEnvSupportDefault::parseXML(
+		const DOMString&	urlString,
+		const DOMString&	base) const
+{
+	if (m_processor == 0)
+	{
+		return XPathEnvSupportDefault::parseXML(urlString, base);
+	}
+	else
+	{
+		XMLParserLiaison& parserLiaison = m_processor->getXMLParserLiaison();
+		XMLURL xslURL(c_wstr(base), c_wstr(urlString));
+		XSLTInputSource		inputSource(xslURL.getURLText());
+		return parserLiaison.parseXMLStream(inputSource);
+	}
+}
+
 
 
 XObject*
diff --git a/src/XSLT/XSLTProcessorEnvSupportDefault.hpp b/src/XSLT/XSLTProcessorEnvSupportDefault.hpp
index 2f45850..2650832 100644
--- a/src/XSLT/XSLTProcessorEnvSupportDefault.hpp
+++ b/src/XSLT/XSLTProcessorEnvSupportDefault.hpp
@@ -105,6 +105,11 @@
 			const PrefixResolver&	resolver,
 			XPathExecutionContext&	executionContext) const;
 
+	virtual DOM_Document
+	parseXML(
+			const DOMString&	urlString,
+			const DOMString&	base) const;
+
 	XObject*
 	getVariable(
 			XObjectFactory&		factory,
diff --git a/src/XercesPlatformSupport/TextFileOutputStream.cpp b/src/XercesPlatformSupport/TextFileOutputStream.cpp
index 193e9a5..69bf71d 100644
--- a/src/XercesPlatformSupport/TextFileOutputStream.cpp
+++ b/src/XercesPlatformSupport/TextFileOutputStream.cpp
@@ -59,18 +59,8 @@
 
 
 
-#include <strstream>
-
-
-
-#if defined(_MSC_VER)
-#include "windows.h"
-#else
-#define INVALID_HANDLE_VALUE 0
-
 #include <cerrno>
-
-#endif
+#include <strstream>
 
 
 
@@ -80,60 +70,22 @@
 
 
 #include <PlatformSupport/DOMStringHelper.hpp>
+#include <PlatformSupport/STLHelper.hpp>
 
 
 
 TextFileOutputStream::TextFileOutputStream(const DOMString&		theFileName) :
 	XercesTextOutputStream(),
 	m_fileName(theFileName),
-#if defined(_MSC_VER)
-	m_handle(INVALID_HANDLE_VALUE)
-#else
 	m_handle(0)
-#endif
 {
-#if defined(_MSC_VER)
-
-	// check the version.  Only NT allows  
-	// wide character file paths
-	OSVERSIONINFO verInfo;
-	verInfo.dwOSVersionInfoSize=sizeof(verInfo);
-	::GetVersionEx(&verInfo);
-
-    if (verInfo.dwPlatformId == VER_PLATFORM_WIN32_NT)
-    {
-        m_handle = ::CreateFileW(toCharArray(theFileName),
-								 GENERIC_WRITE,
-								 FILE_SHARE_WRITE,
-								 0,
-								 CREATE_ALWAYS,
-								 FILE_FLAG_SEQUENTIAL_SCAN,
-								 0);
-    }
-    else
-    {
-        char* const	tmpName = XMLString::transcode(toCharArray(theFileName));
-
-		ArrayJanitor<char> janTmp(tmpName);
-
-        m_handle = ::CreateFileA(tmpName,
-								 GENERIC_WRITE,
-								 FILE_SHARE_WRITE,
-								 0,
-								 CREATE_ALWAYS,
-								 FILE_FLAG_SEQUENTIAL_SCAN,
-								 0);
-    }
-
-#else
 	char* const	tmpName = XMLString::transcode(toCharArray(theFileName));
 
-	ArrayJanitor<char> janTmp(tmpName);
+	ArrayJanitor<char>	janTmp(tmpName);
 
 	m_handle = fopen(tmpName, "wt");
-#endif
 
-    if (m_handle == INVALID_HANDLE_VALUE)
+    if (m_handle == 0)
 	{
 		throw TextFileOutputStreamOpenException(theFileName,
 												errno);
@@ -144,13 +96,9 @@
 
 TextFileOutputStream::~TextFileOutputStream()
 {
-    if (m_handle != INVALID_HANDLE_VALUE)
+    if (m_handle != 0)
 	{
-#if defined(_MSC_VER)
-		CloseHandle(m_handle);
-#else
 		fclose(m_handle);
-#endif
 	}
 }
 
@@ -159,11 +107,7 @@
 void
 TextFileOutputStream::doFlush()
 {
-#if defined(_MSC_VER)
-	FlushFileBuffers(m_handle);
-#else
 	fflush(m_handle);
-#endif
 }
 
 
@@ -173,22 +117,11 @@
 			const char*		theBuffer,
 			unsigned long	theBufferLength)
 {
-#if defined(_MSC_VER)
-	DWORD	theBytesWritten;
-
-	WriteFile(m_handle,
-			  theBuffer,
-			  theBufferLength,
-			  &theBytesWritten,
-			  0);
-
-#else
 	const size_t	theBytesWritten =
 		fwrite(theBuffer,
 			   1,
 			   theBufferLength,
 			   m_handle);
-#endif
 
 	if(theBytesWritten != theBufferLength)
 	{
diff --git a/src/XercesPlatformSupport/TextFileOutputStream.hpp b/src/XercesPlatformSupport/TextFileOutputStream.hpp
index 48f9e4f..bc518b8 100644
--- a/src/XercesPlatformSupport/TextFileOutputStream.hpp
+++ b/src/XercesPlatformSupport/TextFileOutputStream.hpp
@@ -63,9 +63,7 @@
 #include <XercesPlatformSupport/XercesPlatformSupportDefinitions.hpp>
 
 
-#if !defined(_MSC_VER)
 #include <cstdio>
-#endif
 #include <vector>
 
 
@@ -123,11 +121,7 @@
 	// Data members...
 	const DOMString		m_fileName;
 
-#if defined(_MSC_VER)
-	FileHandle			m_handle;
-#else
 	FILE*				m_handle;
-#endif
 };