<?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: Contact us</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/XalanJ-Logo-tm.png" width="190" height="90" />
</a>
</th>
<th text-align="center" width="75%">
<a href="index.html">Xalan XSL Transformer User's Guide</a>
</th>
</tr>
<tr>
<td valign="middle">Contact us</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>
<a href="resources.html">Resources</a>
<br />
</li>
<li>
<a href="http://xalan.apache.org/index.html">Home</a>
</li></ul><hr /><ul>
<li>
<a href="index.html">Xalan-J 2.7.2</a>
</li>
<li>
<a href="charter.html">Charter</a>
</li></ul><hr /><ul>
<li>
<a href="whatsnew.html">What's New</a>
</li>
<li>
<a href="readme.html">Release Notes</a>
</li></ul><hr /><ul>
<li>
<a href="overview.html">Overview</a>
</li>
<li>
<a href="downloads.html">Download/Build</a>
</li>
<li>
<a href="getstarted.html">Getting Started</a>
</li>
<li>
<a href="xsltc_usage.html">Using XSLTC</a>
</li></ul><hr /><ul>
<li>
<a href="faq.html">FAQs</a>
</li></ul><hr /><ul>
<li>
<a href="samples.html">Sample Apps</a>
</li>
<li>
<a href="commandline.html">Command Line</a>
</li></ul><hr /><ul>
<li>
<a href="features.html">Features</a>
</li>
<li>
<a href="trax.html">Transform API</a>
</li>
<li>
<a href="xpath_apis.html">XPath API</a>
</li>
<li>
<a href="usagepatterns.html">Usage Patterns</a>
</li></ul><hr /><ul>
<li>
<a href="apidocs/index.html">Xalan-J API</a>
</li>
<li>
<a href="public_apis.html">Public APIs</a>
</li>
<li>
<a href="dtm.html">DTM</a>
</li></ul><hr /><ul>
<li>
<a href="extensions.html">Extensions</a>
</li>
<li>
<a href="extensionslib.html">Extensions Library</a>
</li>
<li>
<a href="extensions_xsltc.html">XSLTC Exts</a>
</li></ul><hr /><ul>
<li>
<a href="design/design2_0_0.html">Xalan 2 Design</a>
</li>
<li>
<a href="xsltc/index.html">XSLTC Design</a>
</li></ul><hr /><ul>
<li>
<a href="builds.html">Building a release</a>
</li>
<li>
<a href="http://xml.apache.org/xalan-j/test/overview.html">Testing</a>
</li>
<li>
<a href="bugreporting.html">Bug Reporting</a>
</li></ul><hr /><ul>
<li>Contact us<br />
</li>
</ul>
</div>
<div id="content">
<h2>Contact us</h2>
<ul>
<li>
<a href="#contact">Getting in touch</a>
</li>
<li>
<a href="#reporting-bugs">Reporting bugs</a>
</li>
<li>
<a href="#user-mailing-list">User mailing list</a>
</li>
<li>
<a href="#dev-maling-list">Developer mailing list</a>
</li>
<li>
<a href="#subscribe">Subscribe to a mailing list</a>
</li>
</ul>

<a name="contact">‌</a>
<p align="right" size="2">
<a href="#content">(top)</a>
</p>
<h3>Getting in touch</h3>
  <p>
    Your feedback is more than welcome. Offers of help are even more so! 
    Perhaps you would like to 
    take on an active role in the ongoing development, 
    testing, and documentation of Xalan-Java?
  </p> 
  <p>
    Please email your comments, questions, suggestions, 
    and offers to join the Xalan team to <a href="mailto:dev@xalan.apache.org">Xalan Development Mailing List</a>
    (dev@xalan.apache.org).</p>
 
<a name="reporting-bugs">‌</a>
<p align="right" size="2">
<a href="#content">(top)</a>
</p>
<h3>Reporting bugs</h3>
  <p>
    If you need to contact the Xalan team to report a bug please see
    this <a href="bugreporting.html">bug reporting page</a>.
  </p>


<a name="user-mailing-list">‌</a>
<p align="right" size="2">
<a href="#content">(top)</a>
</p>
<h3>User mailing list</h3>
  <p>
    If you think you have encountered a bug, but you aren't sure because 
    it might be a usage problem, or if you have other questions about Xalan 
    post a note to
    <a href="mailto:j-users@xalan.apache.org">j-users@xalan.apache.org</a>
    This mailing list pertains to only to the Java version of Xalan.
  </p>
  <p>
    To view a history of posts to xalan-j-users you can go to
    <a href="http://mail-archives.apache.org/mod_mbox/xml-xalan-j-users/">
    xalan-j-users mail archives at Apache</a> or
    <a href="http://marc.theaimsgroup.com/?l=xalan-j-users">xalan-j-users mail archives at MARC</a>.
   </p>


<a name="dev-mailing-list">‌</a>
<p align="right" size="2">
<a href="#content">(top)</a>
</p>
<h3>Developer mailing list</h3>
  <p>
    The participating developers of the Xalan meet and discuss issues, 
    code changes/additions, etc. at 
    <a href="mailto:dev@xalan.apache.org">dev@xalan.apache.org</a>.
    This mailing list pertains to both the Java and C++ versions of Xalan.
  </p>
  <p>
    To view a history of posts to xalan-dev you can go to
    <a href="http://mail-archives.apache.org/mod_mbox/xml-xalan-dev/">
    xalan-dev mail archives at Apache</a> or
    <a href="http://marc.theaimsgroup.com/?l=xalan-dev">xalan-dev mail archives at MARC</a>.
   </p> 

<a name="subscribe">‌</a>
<p align="right" size="2">
<a href="#content">(top)</a>
</p>
<h3>Subscribe to a mailing list</h3>
 <p>
    You may want to subscribe to a mailing list before posting a note, so that if 
    others post a response to the mailing list you will get copied.
  </p>
  <p>
    To subscribe an email account to the Xalan user mailing list send a note to 
    j-users-subscribe@xalan.apache.org from that account. To unsubscribe
    do the same, except replace <b>subscribe</b> with <b>unsubscribe</b>.
  </p>
  <p>
    To subscribe to the Xalan developer mailing list send a note to 
    dev-subscribe@xalan.apache.org. To unsubscribe
    do the same, except replace <b>subscribe</b> with <b>unsubscribe</b>.
  </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 - Thu 2014-05-15</div>
</div>
</body>
</html>
