<?xml version="1.0"?>
<!DOCTYPE book SYSTEM "sbk:/style/dtd/book.dtd">

<!--
 * 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.
-->
<!-- $Id$ -->

<book title="Apache Xalan Project " copyright="1999-2014 The Apache Software Foundation">
  <document id="index" label="Apache Xalan" source="xalan-apache-org/index.xml"/>
  <document id="charter" label="Charter" source="xalan/charter.xml"/>
  <separator/>  
  <external href="http://xml.apache.org/xalan-c" label="Xalan C++"/>  
  <external href="http://xml.apache.org/xalan-j" label="Xalan Java 2"/>
  <separator/>  
  <external href="http://marc.theaimsgroup.com/?l=xalan-dev " label="Developers Archive"/>
  <external href="http://marc.theaimsgroup.com/?l=xalan-c-users" label="C Users Archive"/>
  <external href="http://marc.theaimsgroup.com/?l=xalan-j-users" label="J Users Archive"/>
</book>
