http://xml.apache.org/http://www.apache.org/http://www.w3.org/

Home

Readme
Download
Installation
Build Instructions

API Docs
Samples
Schema

FAQs
Programming
Migration

Releases
Bug-Reporting
Feedback

Y2K Compliance
PDF Document

CVS Repository
Mail Archive

Migrating from Xerces-C++ 1.6.0 to Xerces-C++ 1.7.0
 

This document is a discussion of the technical differences between Xerces-C++ 1.6.0 code base and the Xerces-C++ 1.7.0.

Topics discussed are:


New features in Xerces-C++ 1.7.0
 
  • Support SAX2-ext's DeclHandler.
  • Directory sane_include reorganization: add sub-directory 'xercesc' to src / include folder. See "Directory change in Xerces-C++ 1.7.0" below for detail.
  • More IDOM test cases - port IDOMMemTest, and merge ThreadTest and IThreadTest.
  • Support IconvFBSD in multi-threading environment.
  • Use IDOM in schema processing for faster performance.
  • Add Project files for BCB6.
  • Port to Caldera (SCO) OpenServer.
  • Support building with new MacOSURLAccessCF NetAccessor that doesn't require Carbon but can allow Xerces to live solely within CoreServices layer.

Directory change in Xerces-C++ 1.7.0
 
  • A new directory, src/xercesc is created to be the new parent directory of all src's direct subdirectories.
  • And in the binary package, all the headers are distributed in include/xercesc directory.
  • Migration considerations:
    • Windows application,
      either change the include directories setting to "..\..\..\..\..\src\xercesc" (Projects->settings->C/C++->Preprocessor),
      or
      change the relevant #include instances in the source/header files, accordingly, eg
      #include <util/XMLString.hpp> be changed to
      #include <xercesc/util/XMLString.hpp>
    • Unix application,
      either change the include search path in the Makefile to " -I <installroot>/include/xercesc",
      or
      change the relevant #include instances in the source/header files as shown above.

Public API Changes in Xerces-C++ 1.7.0
 

The following lists the public API changes between the Xerces-C++ 1.7.0 and the Xerces-C++ 1.7.0 releases of the parser.

New Public API
 
  • Added SAX2-ext's DeclHandler class. See the API documentation page for details.
  • To support SAX2-ext's DeclHandler, the following new methods are added in classes DefaultHandler and SAX2XMLReader:
    • void DefaultHandler::elementDecl(const XMLCh* const name, const XMLCh* const model)
    • void DefaultHandler::attributeDecl(const XMLCh* const eName, const XMLCh* const aName, const XMLCh* const type, const XMLCh* const mode, const XMLCh* const value)
    • void DefaultHandler::internalEntityDecl(const XMLCh* const name, const XMLCh* const value)
    • void DefaultHandler::externalEntityDecl(const XMLCh* const name, const XMLCh* const publicId, const XMLCh* const systemId)
    • DeclHandler* SAX2XMLReader::getDeclarationHandler() const
    • void SAX2XMLReader::setDeclarationHandler(DeclHandler* const handler)
  • To conform to DOM Level 2 specification, the following methods are added:
    • DOM_Node DOM_NodeIterator::getRoot()
    • DOM_Node DOM_TreeWalker::getRoot()
    • bool DOM_Node::hasAttributes() const
    • bool DOM_Element::hasAttribute(const DOMString &name) const
    • bool DOM_Element::hasAttributeNS(const DOMString &namespaceURI, const DOMString &localName) const
    • IDOM_Node* IDOM_NodeIterator::getRoot()
    • IDOM_Node* IDOM_TreeWalker::getRoot()
    • bool IDOM_Node::hasAttributes() const
    • bool IDOM_Element::hasAttribute(const XMLCh* name) const
    • bool IDOM_Element::hasAttributeNS(const XMLCh* namespaceURI, const XMLCh* localName) const
  • To fix [Bug 5570], a copy constructor is added to DOM_Range

Modified Public API
 
  • To conform to the SAX2 specification, the namespace-prefixes feature in SAX2 is set to off as default.
  • To fix [Bug 6330], the Base64::encode and Base64::decode have been modified as follows
    • static XMLByte* Base64::encode(const XMLByte* const inputData, const unsigned int inputLength, unsigned int* outputLength);
    • static XMLByte* Base64::decode(const XMLByte* const inputData, unsigned int* outputLength);
    • static XMLCh* decode(const XMLCh* const inputData, unsigned int* outputLength);
  • To conform to DOM Level 2 specification, the DOM_Node::supports and IDOM_Node::supports are modified to
    • bool DOM_Node::isSupported(const DOMString &feature, const DOMString &version) const
    • bool IDOM_Node::isSupported(const XMLCh* feature, const XMLCh* version) const

Deprecated Public API
 
  • No Deprecated Public API in this release.


Migration Archive
 

For migration information to Xerces-C++ 1.6.0 or earlier, please refer to Migration Archive.



Copyright © 2001 The Apache Software Foundation. All Rights Reserved.