***************************************************************
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements.  See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership.  The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License.  You may obtain a copy of the License at
*
*   http://www.apache.org/licenses/LICENSE-2.0
* 
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied.  See the License for the
* specific language governing permissions and limitations
* under the License.
***************************************************************

Running the build with IBM Java 1.4.2 fails - xerces issue with XInclude.
Please use Java 5.0 or later.

To get the images into the PDF output, you must have the "Java Advanced
Imaging" Library from Sun.  The tooling will obtain this for you the 
first time it is run, 
but your Company may have other places than "Sun" to obtain this library
from, perhaps under alternative licensing arrangements.  
If so, you can obtain the library from those places, unzip the archive, and put the two files:
   jai_codec.jar   and jai_core.jar
in the uima-docbook-tool project, under tools/jai-versions/jai-1.1.3/  

