<?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="http://xalan.apache.org/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="xalan-j/index.html">Xalan Java 2.7.2</a>
</li>
<li>
<a href="old/xalan-j/index.html">Xalan Java 2.7.1</a>
</li></ul><hr /><ul></ul>
<p class="navGroup">
<em>Mail Lists</em>
</p><ul>
<li>
<a href="http://marc.info/?l=xalan-dev">Developers</a>
</li>
<li>
<a href="http://marc.info/?l=xalan-c-users">C Users</a>
</li>
<li>
<a href="http://marc.info/?l=xalan-j-users">J Users</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>We are proud to release version 2.7.2 of our Xalan Java project.  This is
the first product distribution release of Xalan Java since Apache Xalan was
reformed in 2011.  It also fixes a security issue reported against the
previous version.
</p>
<p>The Apache Xalan Project develops and maintains libraries and programs
that transform XML documents using XSLT standard stylesheets.  Our
subprojects use the Java and C++ programing languages to implement
the XSLT libraries.
</p>
<p>The Apache Xalan Project was reformed in 2011. It started as a
subproject of Apache XML which has since been officially retired. 
The Apache Xalan Project continues as a top-level project governed by the
Apache Software Foundation as a collaborative software development community
dedicated to providing robust, full-featured, commercial-quality, and 
freely available XSLT support on a wide variety of platforms.
</p>
<p>The supported specifications are defined by 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>
<b>Contents:</b>
</p>
<ul>
<li>
<a href="#XalanProjects">Apache Xalan Projects</a>
</li>
<li>
<a href="#XsltAndXpath">What is XSLT and XPath?</a>
</li>
<li>
<a href="#License">License information</a>
</li>
<li>
<a href="#GetInvolved">Getting Involved</a>
</li>
</ul>
<p>The project name and logo are derived from the ancient Xalam musical
instrument found in Africa.  Note the difference in spelling. The project
name and logo are trademarks of the Apache Software Foundation.
</p>
<a name="XalanProjects">‌</a>
<p align="right" size="2">
<a href="#content">(top)</a>
</p>
<h3>Apache Xalan Projects</h3>
<p>There are currently two subprojects under the Apache Xalan Project:  
<a href="xalan-c/index.html">Xalan C++</a>, and 
<a href="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>Both the Java and C++ development teams provide libraries and 
executable programs to transform XML documents using XSLT stylesheets.
</p>
<p align="right" size="2">
<a href="#content">(top)</a>
</p>
<h4>Xalan C++ Project</h4>
<p>The <a href="xalan-c/index.html">Xalan-C</a> project officially
released version 1.11 on November 2, 2012.  The most significant
enhancement is the ability to supply top-level stylesheet parameters of
various types.  They include string, nodeset, and number.  A nodeset
paramter can be any parsed XML document or XML fragment.  A number
parameter can be any value of type double.  A string parameter is any
unicode text string.
</p>
<p>Xalan-C 1.11 supports C++ development and has been successfully tested on the
following platforms</p>
<ul>
<li>Microsoft Visual Studio 2003</li>
<li>Microsoft Visual Studio 2005</li>
<li>Microsoft Visual Studio 2008</li>
<li>Microsoft Visual Studio 2010</li>
<li>Linux and GCC 4.4.5</li>
<li>Solaris-10 with SunStudio-12.3</li>
<li>FreeBSD-9 with GCC 4.2</li>
<li>OpenBSD with GCC</li>
<li>AIX</li>
</ul>
<p>Xalan-C builds should also work for Mac OsX, HPUX, and some IBM mainframe
and AS400 platforms.
</p>
<p>The GNU make utility should be used with the UNIX/POSIX platforms.
</p>
<p>The <a href="old/xalan-c/index.html">Xalan-1.10</a> and older
releases are available on the <a href="http://archive.apache.org/dist/xml/xalan-c">
Apache Archives</a>.
</p>

<p align="right" size="2">
<a href="#content">(top)</a>
</p>
<h4>Xalan Java Project</h4>
<p>The <a href="xalan-j/index.html">Xalan-Java 2.7.2</a> was released in April 2014.  You can download the current release
the current <a href="http://www.apache.org/dyn/closer.cgi/xalan/xalan-j/">Xalan-Java 2.7.2</a> release for your development. The
current work in progress can be found in the 
<a href="http://svn.apache.org/repos/asf/xalan/xalan-j/trunk/">subversion repository</a>.
</p>
<p>The current release fixes a security issue that was registered against version 2.7.1.
</p>
<p>The old <a href="old/xalan-j/index.html">Xalan-J 2.7.1</a>
distributions are still available on the 
<a href="http://archive.apache.org/dist/xml/xalan-j">Apache Archives</a>.
</p>
<p>This is a mature project. There has been some discussion about supporting XPath-2.
We could use your support in this major rework of the library. 
You can follow the efforts and post your own contributions 
on the Java users and developers mail lists.
</p>


<a name="XsltAndXpath">‌</a>
<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://xmlgraphics.apache.org/fop/">Apache XML Graphics (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>

<a name="License">‌</a>
<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>

<a name="GetInvolved">‌</a>
<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 subproject 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-2014 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 - Fri 2014-05-16</div>
</div>
</body>
</html>
