DeltaXML Core README ( .NET platform)

1. Introduction

Welcome to the DeltaXML Core product! DeltaXML enables you to compare any XML documents or data and either view the changes in a browser or process the changes to integrate change control into your own systems. The Core product provides a toolkit for general purpose, extensible comparison and recombination for XML data.

This release contains:

  • The DeltaXML.CoreS9Api namespace: our latest API providing a high performance and feature rich comparison pipeline using pre-compiled or XSLT filters and providing support for Saxon's s9api interfaces.
  • The deltaxml.exe command-line interface/driver (no programming required)

For support information (such as how to compare large files) and further technical details, please refer to the following URLs on the DeltaXML web site:

2. What can DeltaXML Core do?

DeltaXML Core compares two input XML documents and generates an output delta document. This delta has been designed to be concise, easy to understand and easy to process. You can choose between a full context delta showing the changes in the context of the original document and a minimal delta showing just the changes. The delta may be used simply to display changes to the user, or may be fed through for downstream processing. Configuration is through the use of pipelines, giving Java and XSLT programmers a simple and powerful way to adapt DeltaXML processing for specific needs. You'll find more details in the DeltaXML Tour.

3. Microsoft .NET APIs

The .NET platform releases are more recent than the corresponding Java platform releases, we have therefore chosen to include only the more recent API developments when converting and porting. The primary API for the .NET platform is provided in the DeltaXML.CoreS9Api namespace. The classes here are an approximate match for the classes contained in the com.deltaxml.cores9api java package.

The classes in DeltaXML.CoreS9Api are specific to the .NET platform and are designed to be compatible with the various types provided in the .NET runtime. However, they make use of underlying code which has been converted using IKVM.NET to convert Java classes into .NET CLR assemblies. This converted code uses various com.deltaxml.* packages/namespaces and is provided in deltaxml.dll. The API documentation we have provided documents the DeltaXML.CoreS9Api namespace and some aspects of the com.deltaxml.* namespaces which may be needed on .NET. These aspects include documentation of the exceptions which may be thrown and details of the pre-compiled filters that can be used in pipelines.

4. Command-line interface

The release also includes a command line processor which can be used to perform comparison and recombination operations on local files through a simple command line interface. This command line interface is contained in deltaxml.exe and is used like this:

deltaxml status
deltaxml compare diffreport file1.xml file2.xml diffs.html
deltaxml ...

Further details are in the file docs/command-processor.html

5. Samples

The samples directory contains a number of sample programs, their data and .bat files to run the samples in a command window. The samples directory also contains a number of XSLT filters (samples/xsl-filters), described in further detail here: http://www.deltaxml.com/library/filters-and-pipelines.html

The samples/dxp directory contains the DXP configuration files included, by default, in the GUI and Command-line processors and also a DTD file used for DXP validity checking. These should be useful starting points for developing custom pipelines.

Please see the samples ReadMe for further information.

6. DLL Files

The release contains a number of '.dll' files. This section lists them and also explains why they are required; we currently recommend you include then all when deploying or redistributing your applications. When deploying you may either keep/copy all of the DLL files in a local directory or insert them into the Global Assembly Cache.

deltaxml.dll
This file contains the main DeltaXML Core code and associated resources (such as Java filters) which have been converted from Java classes using IVKM.NET. It is possible to write .NET CLR code using this dll if you are familiar with the JAVA platform runtime libraries, however we do not document or support such use and recommend users use our .NET specific namespace.
DeltaXML.CoreS9Api.dll
This DLL contains our .NET namespace and is our recommended API for the .NET platform.
IKVM.*.dll
These files either support the IKVM converted code or the (OpenJDK) java runtime libraries on which the Java code depends. This collection of DLLs is a subset of those included with IKVM.NET, but should be sufficient for runtime use of our code.
deltaxml-xercesImpl.dll
This file provides parsing and catalog resolving support in our pipelined architecture. The parser used is Apache Xerces and the catalog resolver is from Apache XML Commons. Please see Catalog Resolver Customizations for further details of the modifications we have made to the resolver.
deltaxml-saxon9pe.dll
This file provides support for XSLT processing within our pipelined architecture. It has been IVKM converted from the corresponding saxon9pe.jar file.
deltaxml-saxon9he-dotnet.dll
This file is provides conversion code between Java and .NET libraries, it was compiled from Saxon HE source code, and then IVKM converted into a DLL.

7. Feedback

We are always keen to improve our products - please make use of our Support Forums if you have any comments or suggestions while working with DeltaXML. We hope you enjoy it!

The DeltaXML Team.

8. Licence Information

8.1. DeltaXML Licensing

The DeltaXML software is licenced under the terms described in the file Licence.html. The licence terms in this file differ depending upon whether this is an evaluation release of the software or a purchased release.

8.2. Saxon Licensing

Included in the distribution is saxon9pe.dll, which is a dotnet IKVM translation of the - otherwise unmodified - saxon9pe.jar, a binary component of the professional edition of Saxon ('The SAXON XSLT and XQuery Processor from Saxonica Limited.'). This version of Saxon may only be used when invoked from a DeltaXML product.

Also included in the distribution is the net.sf.saxon.dotnet package from the open source home edition of Saxon (Saxon-HE), which is compiled and IKVM translated to the saxon9pe-dotnet.dll library. Saxon-HE is provided under the terms of the Mozilla Public License, a copy of which can be obtained at http://www.mozilla.org/MPL/.

The home page for Saxonica is http://www.saxonica.com. For further details of Saxon's licensing please see http://www.saxonica.com/license/license.xml and the docs/notices/saxon/ subdirectory included in the distribution. In particular, the docs/notices/saxon/LEGAL.txt file describes how the license/notices of third party code included in Saxon is handled.

8.3. Apache Licensing

This product includes software developed by the Apache Software Foundation (http://www.apache.org), these include:

  1. the xercesImpl.dll library which is an IKVM compiled combination of the xercesImpl.jar component from the binary 2.9.0 release of the Xerces-J SAX parser and the DeltaXML adaptaion (variant) of the resolver.jar component from the 1.2 release of the Apache Commons Resolver OASIS catalog reader.

The DeltaXML adaptation of Apache's resolver contains standard fixes for some of the known bugs and an enhancement that enables entities to be loaded via an IKVMed translation of Java's resource loading mechanism. For further information please see our Customized Catalog Resolver page for details of the changes and the associated source code and/or contact us.

These components are: Copyright (c) 1999-2006 The Apache Software Foundation. All rights reserved. and are licensed under the terms of the Apache License, Version 2.0. These components must be used under the terms of the license at: http://www.apache.org/licenses/LICENSE-2.0

In accordance with section 4(d) of the Apache License, the notices for these libraries are enclosed in appropriately labelled subdirectories of the ${product.name.spaces} distribution, as follows:

  1. Xerces-J SAX parser notices are in the docs/notices/xerces/ directory.
  2. Resolver catalog reader notices are in the docs/notices/resolver/ directory.

8.4. TrueLicense Licensing

The deltaxml.jar file contains one compiled class from the 'TrueLicense Library', which is a component of the TrueLicense Library Collection. This code is: Copyright 2005 Schlichtherle IT Services, and licensed under the terms of the Apache License, Version 2.0.

In accordance with section 4(d) of the Apache License, the notices for these libraries are enclosed in the docs/notices/truelicense/ directory of the distribution.

8.5. IKVM Licensing

Included in the distribution are several umodified, binary DLLs that form part of the IKVM runtime. The IKVM product and documentation is available from http://www.ikvm.net. These files are licensed under the terms of the GPLv2 with the classpath exception, for further details please refer to the files within the docs/notices/ikvm/ directory of the distribution.

8.6. jCanvas Licensing

The 'Side by Side' result report output makes use of version 4.0 of the jCanvas JavaScript library. The file is included in various Jar files within the release and also at: samples/xsl-filters/side-by-side/jcanvas.js. This file is Copyright 2011, Caleb Evans and Licensed under the terms of the MIT License as per the comments at the top of the file.

8.7. jQuery licensing

The 'Side by Side' result report output also makes use of the jQuery JavaScript library v1.4.2. The file is included in various Jar files within the release and also at: samples/xsl-filters/side-by-side/jquery-1.4-min.js. This file is Copyright 2010, John Resig and is dual licensed using the MIT and GPL v2 licenses. The file also contains a further copyright statement, please see the comments at the top of the file.