<?xml version="1.0" standalone="no"?>
<!DOCTYPE s1 SYSTEM "../../style/dtd/document.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$ -->
 

<s1 title="Contact us">
<ul>
<li><link anchor="contact">Getting in touch</link></li>
<li><link anchor="reporting-bugs">Reporting bugs</link></li>
<li><link anchor="user-mailing-list">User mailing list</link></li>
<li><link anchor="dev-maling-list">Developer mailing list</link></li>
<li><link anchor="subscribe">Subscribe to a mailing list</link></li>
</ul>

<anchor name="contact"/>
<s2 title="Getting in touch">
  <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 &xslt4j;?
  </p> 
  <p>
    Please email your comments, questions, suggestions, 
    and offers to join the Xalan team to <human-resource-ref idref="xalandev"/>
    (xalan-dev@xml.apache.org).</p>
 </s2>
<anchor name="reporting-bugs"/>
<s2 title="Reporting bugs">
  <p>
    If you need to contact the Xalan team to report a bug please see
    this <link idref="bugreporting">bug reporting page</link>.
  </p>
</s2>

<anchor name="user-mailing-list"/>
<s2 title="User mailing list">
  <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
    <jump href="mailto:xalan-j-users@xml.apache.org">xalan-j-users&#64;xml.apache.org</jump>
    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
    <jump href="http://mail-archives.apache.org/mod_mbox/xml-xalan-j-users/">
    xalan-j-users mail archives at Apache</jump> or
    <jump href="http://marc.theaimsgroup.com/?l=xalan-j-users">xalan-j-users mail archives at MARC</jump>.
   </p>
</s2>

<anchor name="dev-mailing-list"/>
<s2 title="Developer mailing list">
  <p>
    The participating developers of the Xalan meet and discuss issues, 
    code changes/additions, etc. at 
    <jump href="mailto:xalan-dev@xml.apache.org">xalan-dev@xml.apache.org</jump>.
    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
    <jump href="http://mail-archives.apache.org/mod_mbox/xml-xalan-dev/">
    xalan-dev mail archives at Apache</jump> or
    <jump href="http://marc.theaimsgroup.com/?l=xalan-dev">xalan-dev mail archives at MARC</jump>.
   </p> 
</s2>
<anchor name='subscribe'/>
<s2 title="Subscribe to a mailing list">
 <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 
    xalan-j-users-subscribe&#64;xml.apache.org from that account. To unsubscribe
    do the same, except replace <em>subscribe</em> with <em>unsubscribe</em>.
  </p>
  <p>
    To subscribe to the Xalan developer mailing list send a note to 
    xalan-dev-subscribe&#64;xml.apache.org. To unsubscribe
    do the same, except replace <em>subscribe</em> with <em>unsubscribe</em>.
  </p>  
  <p>
    For more information on XML related Apache mailing lists go to
    <jump href="http://xml.apache.org/mail.html">Apache mailing lists</jump>. 
  </p>  
</s2>
</s1> 
