2003-02-21  Eric Bourque

	* Added spec.in, for creating RPMs.

2003-02-20  Murray Cumming  <murrayc@usa.net>

	* libxml++/nodes/node.[h|cc]: Moved get_child_content(),
	set_child_content(), add_content(), and has_content() from Node to 
	derived Element class instead of just throwing an exception if it 
	isn't an Element. This means you can't use set_child_content() on a
	TextNode - you should be using TextNode::set_content() anyway, which
	makes a lot more sense. Corrected set_child_content() to create a 
	TextNode instead of creating a node with the content as the name, 
	fixing the output of the dom_build example.

2003-02-20  Murray Cumming  <murrayc@usa.net>

	* libxml++/parsers/parser.[h|cc]:
	initialize_contex(): Request iniitialization and connect callbacks
	check_exception(): Throw exception if any validation problems have 
	been found - the messages are built up gradually by repeated
	callbacks.
	set_validate(): Enables validation before calling parse_*().
	Alternatively, use 2nd bool parameter to the DomParser constructor.
	* libxml++/exceptions/: Added validation_error class.
	* examples/dom_parser: Added a DTD and changed example.xml to 
	something that uses it. Also added example_invalid.xml to test
	the exceptions.

2003-02-12  Ole Laursen  <olau@hardworking.dk>

	* examples/sax_parser/main.cc: Added chunk-wise parsing to the
	example.

	* libxml++/parsers/saxparser.[h,cc]: Added functionality for
	parsing chunks of data.

2003-02-17  Murray Cumming  <murrayc@usa.net>

	* libxml++/parsers/*.[h|cc]: All parsing is now done via contexts, 
	which required a little duplication of the implementation of functions
	such as xmlParseFile(), most of which is now in 
	DomParser::parse_context(). This avoids use of global functions such
	as xmlKeepBlanksDefault() by setting these booleans directly in the 
	context, in Parser::initialize_context().
	However, xmlCreateFileParserCtxt() does seem to be affected by 
	xmlKeepBlanksDefault so we still have to use it temporarily, restoring
	the old value afterwards - see the comments in DomParser::parse_file().
	This should allow us to add validation to the API.

0.20:
	
2003-02-15  Murray Cumming  <murrayc@usa.net>

	* libxml++/nodes/node.cc: (remove_child): Implemented it with 
	xmlUnlinkNode and xmlFreeNode, so that it's actually removed.

2003-02-15  Murray Cumming  <murrayc@usa.net>

	* Added examples/dom_xpath, with code from Stefan Seefeld's dom
	example.

2003-02-15  Murray Cumming  <murrayc@usa.net>

	* Reverted the Node::child_iterator API change because it was 
	undiscussed and is unfinished. The BRANCH_1_0 and HEAD branches are now
	merged. BRANCH_1_0 should no longer be used. This was never in 0.19.

0.19:
	
2003-02-07  Murray Cumming  <murrayc@usa.net>

 	* Moved method implementations such as get_attributes() into derived
 	classes instead of using "using methodname();". That seems clearer.
 	However it shows that we should probably create a shared base class for
 	Content and Comment, as in the DOM.

2003-02-06  Murray Cumming  <murrayc@usa.net>

	* libxml++/parsers/saxparser.[h|cc]: Corrected some coding style.

2003-02-06  Murray Cumming  <murrayc@usa.net>

	* Changed c_obj() to cobj() because it's more like gobj() used in 
	gtkmm, gnomemm, etc.

2003-02-06  Murray Cumming  <murrayc@usa.net>

	* libxml++/nodes/node.*: Corrected code style. 

2003-02-06  Murray Cumming  <murrayc@usa.net>
 
 	* libxml++/nodes/node.[h|cc], libxml++/attribute.[h|cc]: Made c_obj()
 	accessors public so people can use them. Provided const and non-const 
 	versions of them. Put implementation in .cc file.
 	* Reverted some of Stefan's coding style changes and corrected the 
 	coding style in libxml++/nodes/document.[h|cc].
 	* libxml++/document.h: Made the destructor virtual, because there are
 	virtual methods.
	
2002-02-04  Stefan Seefeld <seefeld@sympatico.ca>

	* libxml++/node.[h,cc]: add new insert_child and append_child methods
	(using new iterators), add get_path and find methods for xpath lookup

	* examples/dom: new example code to illustrate the new features
	
2002-02-03  Stefan Seefeld <seefeld@sympatico.ca>

	* libxml++/node.h, libxml++/parsers/saxparser.[h,cc],
	examples/sax_parser/*.[h,cc], examples/sax_exception/*.[h,cc]:
	SaxParser::AttributeMap is now a map<string, string>.

2002-02-03  Stefan Seefeld <seefeld@sympatico.ca>

	* libxml++/node.h: add child_iterators for simple C++ style
	iteration (to get eventually rid of NodeList)

2002-02-03  Stefan Seefeld <seefeld@sympatico.ca>

	* libxml++/attribute.[h,cc], libxml++/nodes/node.[h,cc],
	libxml++/document.cc: derive Attribute from Node, and make
	get_value() use libxml2 accessor instead of raw pointer

2002-02-03  Stefan Seefeld <seefeld@sympatico.ca>

	* libxml++/document.[h,cc], libxml++/parsers/domparser.[h,cc],
	libxml++/libxml++.h, libxml++/Makefile.am: introduce new Document type.
	* examples/dom_build/main.cc: make dom_build example use new
	Document type

2002-02-03  Stefan Seefeld <seefeld@sympatico.ca>

	* acinclude.m4: The AM_LIBXML macro now checks for a libxml2
	version >= 2.5.1.
	* libxml++/nodes/node.cc: compare strings, not pointers, in
	get_attribute()

2003-01-31  Stefan Seefeld  <seefeld@sympatico.ca>

	* various: overall change to use libxml2 as implementation,
	  not only as I/O backend. With corrections by Murray Cumming.
    Further explanation by murrayc: Instead of maintaining its own
    C++ data structures and then creating libxml data structures from them,
    it now manipulates the libxml data structures directly, so the C++ and C
    APIs are always in sync.

2003-01-21  Valentin Rusu <sourceforge@valentinrusu.net>
 
 	* added CDATA section handler to SaxParser
 
2003-01-05  Valentin Rusu <sourceforge@valentinrusu.net>
 
 	* fixed a potential buffer overflow problem into saxparser.cc
	
0.18:

2003-01-31  Stefan Seefeld  <seefeld@sympatico.ca>

	* various: overall change to use libxml2 as implementation,
	  not only as I/O backend.

2003-01-05  Murray Cumming  <murrayc@usa.net>

	* examples/dom_build/main.cc: Removed some useless test C code.

2002-12-24  Morten Brix Pedersen  <morten@wtf.dk>
 
        * Include <iostream> instead of <istream> to compile on gcc 2.95.4.
	
2002-12-26  Murray Cumming  <murrayc@usa.net>

	* libxml++/nodes/element.c (write): Add back the code to write the
	attributes to the C libxml structure. This code got lost during the
	refactoring.

2002-12-25  Murray Cumming  <murrayc@usa.net>

	* Removed unused constructors, to simplify things. Made Node's 
	destructor virtual, because we delete them polymorphically, and
	because it has virtual methods.

2002-12-25  Murray Cumming  <murrayc@usa.net>

	* libxml++/nodes/node.[h|cc]: Removed the initialized member 
	variable and its accessor, because it's not used.

2002-12-19  Murray Cumming  <murrayc@usa.net>

	* libxml++/parsers/domparser.[h|cc]: get/set_root_node() now returns
	an Element instead of a Node.

2002-12-19  Murray Cumming  <murrayc@usa.net>

	* Changed const & accessors to get_*() methods. For instance,
	Node::name -> Node::get_name
	Node::children() -> Node::get_children()
	Element::attributes() -> Element::get_attributes()
	Attribute::value -> Attribute::get_value()

2002-12-18  Murray Cumming <murrayc@usa.net>

	* Added libxml++/nodes/commentnode.[h|cc] and used it in Node so that
	comments don't just show up as name=comment Nodes.
	* examples/dom_parser/example.xml: Added a comment.
	* examples/dom_parser/main.cc: Do a dynamic_cast<> check for comments
	too.

2002-12-18  Christophe de Vienne  <cdevienne@alphacent.com>

	* libxml++/parser/saxparser.cc: Fixed a bug in exception handling in
	parse_stream. Thanks to Fredrik Arnerup <e97_far@e.kth.se> for reporting
	the bug.
	
2002-12-17  Murray Cumming  <murrayc@usa.net>

	* Added libxml++/nodes/textnode.[h|cc]. This should remove the 
	confusion about whether content()/set_content() should be used on
	a text node or the parent of a text node.
	* libxml++/nodes/node.[h|cc]: 
	- Node::write() is now virtual, and 
	different in TextNode.
	- content() replaced by get_child_content, which returns a TextNode* 
	instead of a string.
	- set_content() replaced by set_child_content(). 
	* Added libxml++/nodes/element.[h|cc] so that TextNode can inherit
	from a Node class without the attributes API. As per the Java DOM API,
	Node still has the children API - I guess there's some reason for that,
	though I don't see how a TextNode could have children.

2002-12-17  Murray Cumming  <murrayc@usa.net>

	* Moved node.[h|cc] into nodes sub directory, in preparation for the
	multiple-node-types API change.

2002-12-12  Jonathan Wakely <redi@kayari.org>
	
	* libxml++/parsers/saxparser.cc, saxparser.h (on_get_entity): New
	virtual function to allow derived classes to override entity handling
	
2002-12-16  Murray Cumming  <murrayc@usa.net>

	* libxml++/node.cc: write():
	- Don't set the node->type directly. Let
	xmlNodeSetContent take care of adding a suitable child node. This
	was leading to segfaults when write() later tried to add a child node
	to a text node.
	- Throw internal_error exception when xmlNewChild returns NULL.
	

0.17:.

2002-12-10  Christophe de Vienne <cdevienne@alphacent>

	* configure.in: updated version numbers for next release. Generic
	version is now 0.17, library version is 3:0:0
	* NEWS: updated with changes since 0.16 version.
	
2002-12-10  Christophe de Vienne <cdevienne@alphacent.com>

	* libxml++/node.cc: fixed write() which was using the accessors content()
	and has_content(). Since they return something for both the text
	node and the parent node, the output was weird.

2002-12-09  Murray Cumming  <murrayc@usa.net>

	* libxml++/node.cc: content(): If the cached content string is empty, 
	try to get the content of a child "text" node. This makes content()
	work as expected after creating a document with set_content() and 
	later reparsing it.

2002-12-09  Murray Cumming  <murrayc@usa.net>

	* libxml++/parsers/dom_parser.cc (release_underlying): Set pointers
	to 0 so that the get_*() methods generate new instances instead of
	returning invalid pointers.

2002-12-09  Murray Cumming  <murrayc@usa.net>

	* libxml++/node.cc: Node::remove_child() and Node::remove_attribute:
	delete the objects when forgetting about them.
	* libxml++/node.h: Added reference docs explaining the above.

2002-12-07  Murray Cumming  <murrayc@usa.net>

	* libxml++/parsers/domparser.cc, saxparser.cc: Added comments about 
	the use of xmlKeepBlanksDefault() and xmlLineNumbersDefault().
	* libxml++/parsers/saxparser.[h|cc]: Change exception & to exception&.

2002-12-06  Christophe de Vienne <cdevienne@alphacent.com>

	* libxml++/parsers/domparser.cc: Enabled xml option LineNumbers
	and disabled KeepBlanks before each parsing.
	* libxml++/parsers/sax_parser.cc: Enabled xml option KeepBlanks
	before each parsing.
	* example/dom_parser/main.cc: Added line number display for each
	non-content node. Changed a bit content display
	* Note: in a near future I may change these options settings to
	let the user choose which options he wants/wants not.
	

2002-12-03  Jone Marius Vignes <jmvignes@broadpark.no>

	* libxml++/parsers/domparser.cc: Changed the exception in
	write_to_string() to "write_to_string() failed."
	* libxml++/parsers/domparser.h: Corrected documentation of
	write_to_string() and write_to_file() to clarify that these methods
	doesn't return booleans

2002-12-02  Christophe de Vienne <cdevienne@alphacent.com>

	* libxml++/exceptions/*.[h|cc]: Added and implemented virtual 
	methods Raise() and	Clone.
	* libxml++/parser/sax_parser.[h|cc]: Each callback method can now
	throw some exceptions as long as they herit from xmlpp::exception
	AND implement Raise() and Clone().
	* libxml++/examples/sax_exception/: Added an example which demonstrate
	the use of exceptions inside a SaxParser.

2002-11-29  Murray Cumming  <murrayc@usa.net>

	* autogen.sh: Added libtoolize to generate files such as ltmain.sh.

2002-11-28  Christophe de Vienne <cdevienne@alphacent.com>

	* acinclude.m4: The AM_LIBXML macro now checks for a libxml2
	version >= 2.4.1.

2002-11-21  Christophe de Vienne <cdevienne@alphacent.com>

	* libxml++/parsers/*.[h|cc]: added Parser::parse_stream method
	and implemented it in both DomParser and SaxParser. Tests based
	on the examples (not commited in the cvs) worked perfectly.

2002-11-20  Christophe de Vienne <cdevienne@alphacent.com>

	* libxml++/parsers/saxparser.cc: fixed a memory leak (thanks
	to Chris Leishman <masklin@debian.org> who reported it.
	
2002-11-20  Murray Cumming  <murrayc@usa.net>

	* Changed use of the term properties to attributes in the API,
	because that is the correct terminology.

0.16:
	
2002-11-19  Christophe de Vienne <cdevienne@alphacent.com>

	* configure.in: updated version numbers for next release.
	version is set to 0.16, library version to 2:0:0

2002-11-19  Murray Cumming  <murrayc@usa.net>

	* docs: Added index.html, which can be a main website page.
	* docs/Makefile.am: Added rsync command to upload the html,
	including the reference documentation.

2002-11-19  Murray Cumming  <murrayc@usa.net>

	* Added Dtd class, which is just a collection of std::strings.
	* libxml++/parsers/domparser.[h|cc]: Added set_internal_subset() and
	get_internal_subset() to set the DTD declaration. This is set in the 
	underlying C xmlDoc during write_to_file() and write_to_disk().

2002-11-18  Murray Cumming  <murrayc@usa.net>

	* libxml++/node.[h|cc]:
	- Rename is_content() to has_content(), because that's what it tells 
	us. Removed _is_content member bool - we can check _content.empty() 
	instead.
	- write(): Do not manually set the xmlNode's type field to TEXT. This
	corrupted the tree. Tested content nodes in example/dom_build.

2002-11-18  Murray Cumming <murrayc@usa.net>

	* libxml++/parsers/domparser.cc (write_to_*): Corrected no-root-node
	check.

2002-11-18  Murray Cumming  <murrayc@usa.net>

	* libxml++/exceptions/exception.[h|cc]: Corrected signature of what()
	method, adding const throw().

2002-11-18  Murray Cumming  <murrayc@usa.net>

	* libxml++/parsers/domparser.[h|cc]: Added DomParser::set_root_node().
	* examples: Added dom_build, to show runtime construction of an XML 
	tree.

2002-11-18  Murray Cumming  <murrayc@usa.net>

	* Parser, DomParser, SaxParser: parse_file() and parse_memory() now 
	throw exceptions.
	* DomParser::write_to_file(): throws exception instead of using a bool
	return value.
	* examples/domparser/: Catches exceptions.

2002-11-18  Christophe de Vienne <cdevienne@alphacent.com>
	* libxml++/exceptions: splitted exception.[h|cc] in this directory.
	The libxml_error has been removed for now, and a parse_error added.

2002-11-17  Christophe de Vienne <cdevienne@alphacent.com>
	* libxml++/attribute.h: Changed macro __LIBXMLPP_PROPERTY_H to __LIBXMLPP_ATTRIBUTE_H
	* libxml++/exception.[h|cc]: Added xmlpp::exception, xmlpp::libxml_error and
   	xmlpp::internal_error classes. It's very basic for now.
	
2002-11-17  Murray Cumming  <murrayc@usa.net>

	* Node, Attribute: set_*() method now have void return types.
	* DomParser: Now has an empty underlying in-memory document when the
	default constructor is used. This means that get_root_node() should
	always return something, so we can build XML documents in memory 
	without loading any XML first.

2002-11-16  Murray Cumming  <murrayc@usa.net>

	* libxml++/attribute.h: Added explicit to constructor.

2002-11-16  Murray CUmming  <murrayc@usa.net>

	* libxml++/parsers/domparser: Renamed write() method to write_to_file()
	and added write_to_string().

2002-11-16  Murray Cumming  <murrayc@usa.net>

	* libxml++-1.0.pc.in: More corrections. This was hopelessly broken
	before.
	
2002-11-16  Murray Cumming  <murrayc@usa.net>

	* libxml++-1.0.pc.in: Corrected typo.

2002-11-16  Murray Cumming  <murrayc@usa.net>

	* docs/reference/Doxyfile: Used doxywizard to mark the Recursive
	option, so it reads the libxml++/parsers directory too.

2002-11-16  Murray Cumming  <murrayc@usa.net>

	* Attribute, Node: Added Doxygen class comment block. Changed some 
	something * to something*.

2002-11-16  Murray Cumming  <murrayc@usa.net>

	* libxml++/node.[h|cc]: Added parameter names. Made const and non-const
	overloads of children() method.
	* libxml++/parsers/domparser.[h|cc]: Added const get_root_node() const
	overload.

2002-11-16  Christophe de Vienne <cdevienne@alphacent>
	* libxml++/parsers/*: renamed method Parser::parse to 
	Parser::parse_file

2002-11-16  Christophe de Vienne <cdevienne@alphacent>
	* libxml++/parsers/saxparser.[h|cc]: rewritten 
	SaxParser::parse(filename) and SaxParser::parse_memory(string). 
	They both use a SaxParser::parse()
	method. The parse_chunk and finish methods has been removed.
	* example/sax_parser/parser.cc: minor bugfix: the Attribute pointer
	was printed instead of the value.
	
2002-11-16  Christophe de Vienne <cdevienne@alphacent.com>
	* Property: has been renamed to Attribute. However, the "properties"
	token has been kept when speaking of all the attributes of a node,
	as in the libxml library.
	* node.cc: rewritten a few loops so they have a more 'c++' looking.
	rewritten some portions of code where an attribute is searched by name.

2002-11-15  Murray Cumming  <murrayc@usa.net>
	* Changed e.g. std::string &something to std::string& something,
	using regexxer.

2002-11-15  Christophe de Vienne <cdevienne@alphacent>
	* example/sax_parser/parser.cc: #included <iostream>

2002-11-15  Christophe de Vienne <cdevienne@alphacent>
	* libxml++/parsers/saxparser.cc: #included cstdarg instead of stdarg.h
	to follow the c++ standard. #included <iostream> to have std::cerr - it's
	needed on strict c++ compiler (g++ 3.2 for instance).
	* example/dom_parser/main.cc: #included <iostream>

2002-11-15  Murray Cumming  <murrayc@usa.net>

	* libxml++/parsers/saxparser.cc: #included stdarg.h - it seems to 
	be necessary with some compilers.

2002-11-15  Murray Cumming  <murrayc@usa.net>

	* DomParser:: Added get_encoding() and write() methods.
	* Removed Tree - Use DomParser instead.

2002-11-15  Murray Cumming  <murrayc@usa.net>

	* SaxParser now inherits from Parser, with parse() and parse_memory()
	methods.
	* Added example/sax_parser example, but the start_element callback 
	doesn't seem to be called.

2002-11-15  Murray Cumming  <murrayc@usa.net>

	* Parser, DomParser: Added parse_memory() method.
	* Node::children(): Removed bad early-optimisation hack - it returned
	a static function variable instead of returning by value. This meant 
	that >1 results of children() could not be used simultaneously. 
	For instance, this meant that it could not be called recursively. 

2002-11-12  Murray Cumming  <murrayc@usa.net>

	* Node, Property: Used explicit keyword on constructors.

2002-11-12  Murray Cumming  <murrayc@usa.net>

	* Added parsers directory.
	* Renamed Parser to SaxParser.
	* Added DomParser, intended as a replacement for Tree, but that has
	not yet been removed. I don't intend to implement the libxml-1 
	compatibility stuff.
	* Added examples directory structure, with one tiny dom_parser example.

2002-11-12  Christophe de Vienne <cdevienne@alphacent.com>
	* node.[h|cc]: name() method now return a reference.
	* Tree/Node: The readnode and writenode functions have been removed 
	and transfered somehow into Node as a new constructor and write(). 
	The libxml++-private.[h|cc] has been removed.

2002-11-12  Murray Cumming  <murrayc@usa.net>

	* Parser: It's no longer a templated type - to provide your own 
	callback implementations you can now just derive your own parser and 
	override the on_*() methods.
	
2002-11-12  Murray Cumming  <murrayc@usa.net>

	* Moved implementation into the .cc files.
        * Changed n, v and p parameter names to name, value and properties.

2002-11-12  Murray Cumming  <murrayc@usa.net>

	* Split the single xml.[h|cc] files into node, property, tree and 
	parser files, with a libxml++.h header file that includes them all.
	* Removed the XML prefixes from type names - we don't need it because
	we use a namespace now.
	* Placed typedefed lists and map inside their classes. For instance,
	XMLNodeList is now xmlpp::Node::NodeList.
	* Node::children(): Use !(n.empty()) instead of (n.length() == 0), for
	perfomance.
	* Tree: changed fn parameter names to filename.

2002-11-12  Christophe de Vienne <cdevienne@alphacent.com>
	* AUTHORS: Added Murray Cumming to the contributors

2002-11-08  Christophe de Vienne <cdevienne@alphacent.com>
	* libxml++/xml.cc: corrected _line initialisation in XMLNode::XMLNode(const XMLNode *from)

2002-11-08  Christophe de Vienne <cdevienne@alphacent.com>
	
	* libxml++/xml.cc: Test if doc encoding is not null before
	reading it (thanks to Marcel Bosc).
	
2002-11-05  Murray Cumming  <murrayc@usa.net>

	* Added docs/reference/. Run make in this directory to generate 
	reference documentation with doxygen.
	* libxml++/xml.h: Removed macros around namespace - all compilers 
	must now support namespaces.
	* libxml++/xml.[h|cc]: Replaced (void) with () - it's not necessary
	in C++.

2002-11-05  Murray Cumming  <murrayc@usa.net>

	* libxml++/Makefile.am and configure.in: Implemented shared library
	interface versioning.

2002-11-05  Murray Cumming  <murrayc@usa.net>

	* Put source code in libxml++ directory, ready for it to be split up
	into separate files. Client code should now include
	libxml++/xml++.h rather than just xml++.h.

2002-11-05  Murray Cumming  <murrayc@usa.net>

	* Headers are now installed in a versioned directory, to allow 
	coexistence with future major versions of libxml++. You may need to
	remove the previously installed xml++.h file.
	* Library name changed to libxml++-0.1, to be changed to libxml++-1.0 
	when libxml++ stabilizes its API. This is also to allow future versions
	to be parallel installed.
	* Added pkg-config file as a simpler and more maintainable alternative
	to the -config file and m4 script.

Version 0.14
	* Ported to g++ 3.2. The code should now also compile on compilers which are a bit more strict about c++ than previous versions of g++ 
	* Added method XMLNode::line() wich returns the line number of a non content node in the source file. 
	* Added encoding file support through XMLTree::encoding() and XMLTree::set_encoding() methods 
	* Replacement of hash_map by map for node properties lists, since it has been reported to be faster, and to simplify porting to other plarfoms. 
	* libxml++ classes has been put in a separated namespace, libxmlpp. If you don't want namespace, just undefine the LIBXMLPP_USE_NAMESPACE
	* encoding and compression settings are now loaded at parsing of file/buffer.


Version O.12 to 0.13
	No Changelog.

Version O.11
	* Modified interface to allow for more complete coverage of possible uses of XML files.

Version O.10
	* Added SAX parser.

Version O.2 to 0.9
	No Changelog.

Version O.1
	* Original release.
