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> <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 © 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>, 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
};