<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>ASF: The Apache Xalan Project</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
</head>
<!--
 * 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.
 -->
<body>
<div id="title">
<table class="HdrTitle">
<tbody>
<tr>
<th rowspan="2">
<a href="index.html">
<img alt="Trademark Logo" src="resources/Xalan-Logo-tm.png" width="190" height="90" />
</a>
</th>
<th text-align="center" width="75%">
<a href="index.html">Apache Xalan Project </a>
</th>
</tr>
<tr>
<td valign="middle">The Apache Xalan Project</td>
</tr>
</tbody>
</table>
<table class="HdrButtons" align="center" border="1">
<tbody>
<tr>
<td>
<a href="http://www.apache.org">Apache Foundation</a>
</td>
<td>
<a href="http://xalan.apache.org">Xalan Project</a>
</td>
<td>
<a href="http://xerces.apache.org">Xerces Project</a>
</td>
<td>
<a href="http://www.w3.org/TR">Web Consortium</a>
</td>
<td>
<a href="http://www.oasis-open.org/standards">Oasis Open</a>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navLeft">
<ul>
<li>Apache Xalan<br />
</li>
<li>
<a href="charter.html">Charter</a>
</li>
<li>
<a href="http://wiki.apache.org/xalan">Xalan Wiki</a>
</li></ul><hr /><ul></ul>
<p class="navGroup">
<em>Projects</em>
</p><ul>
<li>
<a href="xalan-c/index.html">Xalan C++</a>
</li>
<li>
<a href="old/xalan-c/index.html">Xalan C++ (old)</a>
</li>
<li>
<a href="xalan-j/index.html">Xalan Java</a>
</li>
<li>
<a href="old/xalan-j/index.html">Xalan Java (old)</a>
</li></ul><hr /><ul></ul>
<p class="navGroup">
<em>Mail Lists</em>
</p><ul>
<li>
<a href="http://mail-archives.apache.org/mod_mbox/xalan-dev">Developers Archive</a>
</li>
<li>
<a href="http://mail-archives.apache.org/mod_mbox/xalan-c-users">C Users Archive</a>
</li>
<li>
<a href="http://mail-archives.apache.org/mod_mbox/xalan-j-users">J Users Archive</a>
</li></ul>
<p class="navGroup">
<em>Old Archives</em>
</p><ul>
<li>
<a href="http://marc.info/?l=xalan-dev">Developers OLD</a>
</li>
<li>
<a href="http://marc.info/?l=xalan-c-users">C Users OLD</a>
</li>
<li>
<a href="http://marc.info/?l=xalan-j-users">J Users OLD</a>
</li></ul><hr /><ul></ul>
<p class="navGroup">
<em>Resources</em>
</p><ul>
<li>
<a href="http://www.apache.org/">Apache</a>
</li>
<li>
<a href="http://www.apache.org/foundation/getinvolved.html">Get Involved</a>
</li>
<li>
<a href="http://www.apache.org/licenses/">Licenses</a>
</li>
<li>
<a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a>
</li>
<li>
<a href="http://www.apache.org/foundation/thanks.html">Thanks</a>
</li>
<li>
<a href="http://www.apache.org/security/">Security</a>
</li></ul><hr /><ul></ul>
</div>
<div id="content">
<h2>The Apache Xalan Project</h2>

<p>Xalan is an XSLT processor for transforming XML documents into HTML, text, or
other XML document types.  It uses the Xerces (XML Parser) to convert XML 
documents to internal nodesets.</p>

<p>The project name and logo are derived from the ancient Xalam musical instrument
found in Africa. Note the difference in spelling.</p>

<p align="right" size="2">
<a href="#content">(top)</a>
</p>
<h3>Xalan</h3>
<p>Xalan has moved out of the XML project and is now a project in its own right. 
You will find links to all the Xalan subprojects as well as our charter on the menu 
at the left of the screen. </p>

<p>The old releases of Xalan still reside in the XML Project archives.</p>
<ul>

  <li>
<a href="old/xalan-c/index.html">Xalan C++ Version 1.10</a>
</li>
  <li>
<a href="old/xalan-j/index.html">Xalan Java Version 2.7.1</a>
</li>
</ul>

<p>The links on the left navigation panel point to the current documentation.</p>


<p align="right" size="2">
<a href="#content">(top)</a>
</p>
<h3>What is Xalan?</h3>
<p>
As our charter will tell you, the Apache Xalan Project is a collaborative software development 
project dedicated to providing robust, full-featured, commercial-quality, and 
freely available XSLT support on a wide variety of platforms.</p>
<p>There are currently two subprojects under the Apache Xalan Project:  
<a href="old/xalan-c/index.html">Xalan C++</a>, and 
<a href="old/xalan-j/index.html">Xalan Java</a>, representing
C++ and Java implementations of the <a href="http://www.w3.org/TR/xslt">W3C XSL Transformations (XSLT) 
Version 1.0</a> and the <a href="http://www.w3.org/TR/xpath">XML Path Language (XPath) Version 1.0</a> 
recommendations.</p> 


<p align="right" size="2">
<a href="#content">(top)</a>
</p>
<h3>What is XSLT and XPath?</h3>
<p>XSLT is the first part of the <a href="http://www.w3.org/TR/xsl/">Extensible Stylesheet Language (XSL)</a>. 
It includes the XSL Transformation (XSLT) vocabulary and XPath, a language for addressing parts of XML documents. 
XSL also includes a vocabulary for specifying formatting semantics, however, 
this is not part of the Apache Xalan Project.  For more information on formatting objects, see the 
<a href="http://xml.apache.org/fop/">Apache XML FOP (Formatting Objects Project)</a>.
 </p>

<p>XSLT implementations, sometimes referred to as XSLT processors, use an XSL stylesheet to transform
XML documents into HTML, text, or other XML document types.   In structural terms, an XSL stylesheet 
specifies the transformation of one tree of nodes (the XML input) into another tree of nodes (the output or 
transformation result).</p>


<p align="right" size="2">
<a href="#content">(top)</a>
</p>
<h3>License information</h3>
<p>Xalan C++ and Xalan Java are made available under the <a href="http://www.apache.org/licenses/LICENSE-2.0">
Apache Software License, Version 2.0.</a>
</p>


<p align="right" size="2">
<a href="#content">(top)</a>
</p>
<h3>Getting Involved</h3> 
<p>We always appreciate people and organizations that wish to help
in the development and project support efforts.</p>

<p>You can follow the activity by reviewing the project
mail lists.  Posting messages to these lists is how we
coordinate the activites related to the our projects.</p>

<p>The developers mail list [<a href="mailto:dev@xalan.apache.org">xalan-dev</a>]
 is for communicating issues to the Apache Xalan development teams.
Both the Java and C/C++ groups monitor the developers list.
All project change notices are posted to the developers list.</p>

<p>Each sub-project has its own mail list for project specific user
issues.</p>

<p>The user list for Xalan C++ 
 [<a href="mailto:c-users@xalan.apache.org">xalan-c-users</a>] is 
for general user comments on the Xalan C++ project.</p>

<p>The user list for Xalan Java 
 [<a href="mailto:j-users@xalan.apache.org">xalan-j-users</a>] is
for general user comments on the Xalan Java project.</p>

<p>The Apache Software Foundation has guidance on 
 <a href="http://www.apache.org/foundation/getinvolved.html">how to 
participate</a> in the various development efforts.</p>


<p align="right" size="2">
<a href="#content">(top)</a>
</p>
</div>
<div id="footer">Copyright © 1999-2012 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Sun 09/09/2012</div>
</div>
</body>
</html>
