LEGAL NOTICE

This notice is issued to fulfil the requirements of the Mozilla Public License version 1.0 ("MPL 1.0")
sections 3.4(a) and 3.6. MPL 1.0 can be found at http://www.mozilla.org/MPL/MPL-1.0.html. 

Section 3.4(a) of MPL 1.0 states that any third party intellectual property rights in particular 
functionality or code must be notified in a text file named LEGAL that is issued with the source code. Saxon 
includes a number of such third party components, and the relevant claims are included in notices included
in the same directory as this notice. Although MPL 1.0 requires this notice to be included only with source
code, some of the third parties may also require notices to be included with executable code. Therefore, Saxon
executable code must not be distributed separately from this notice and all the accompanying third
party notices. The term "Distribution" here includes making the code available for download, and its 
inclusion in download repositories such as Maven.

Section 3.6 of MPL 1.0 states:

You may distribute Covered Code in Executable form only if the requirements of Section 3.1-3.5 have 
been met for that Covered Code, and if You include a notice stating that the Source Code version of 
the Covered Code is available under the terms of this License, including a description of how and 
where You have fulfilled the obligations of Section 3.2.

Section 3.2 requires the Source Code of Covered Code to be made available via an accepted Electronic
Distribution Mechanism.

The Source Code version of the Covered Code (that is, the source code of Saxon-B) is available under the 
terms of the Mozilla Public License version 1.0, and may be obtained from the Subversion repository 
for the Saxon project on SourceForge, at https://sourceforge.net/svn/?group_id=29872. 
The precise version of the Subversion source for a particular Saxon maintenance release can be 
determined by referring to the release notes for the particular release in the SourceForge download area.

Note that MPL 1.0 requires that any modifications to this source code must be made available under the terms
of the MPL "to anyone to whom you made an executable version available". As a courtesy, it is also requested 
that you make such modifications available to Saxonica Limited.