<?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++ 1.11</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>
