<?xml version="1.0" standalone="no"?>
<!DOCTYPE s1 SYSTEM "../../style/dtd/document.dtd">
<!--
 * Copyright 2004 The Apache Software Foundation.
 *
 * Licensed 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.
-->
<s1 title="Reporting Bugs">
  <s2 title="Before you report a bug">
  <p>Before you report a bug, please, <em>read</em> the following instructions:</p>
  <ul>
  <li>If doubt exists whether the behaviour in question is a bug or a feature, 
      please post a message to the 
      <jump href="http://xml.apache.org/mail.html#xalan-j-users">xalan-j-users@xml.apache.org</jump>
      list for clarification.</li>
  <li>To help eliminate duplicate or invalid bug reports, please take a quick look at
      bugs in JIRA to see whether the bug has been already reported and/or fixed. 
      You can also download the 
      <link idref="downloads">latest code</link>
      and check if you can reproduce the bug.</li>
  <li>Report bugs against the newest release.</li>
  <li>Read <jump href="http://issues.apache.org/jira">JIRA Notes</jump>.</li>
  </ul>
  <p>We strongly encourage you to write patches for problems you find and attach
     them to your JIRA issue. Being specific in the description of your bug report, and 
     providing enough information to reproduce the bug will improve the likelihood that 
     bugs, adding enhancements, and addressing outstanding design issues, we need your 
     active participation in the ongoing development of Xalan Java.</p>
  <note>If you had a bugzilla account previously, and had used it with Xalan bugzilla bugs, 
        your account should be migrated to JIRA. In this case, do not create a new account, 
        but use the same e-mail account name and click on "Forgot Password" on the JIRA home page.</note>
  </s2>
  
  <s2 title="Bugzilla is not used">
    <p>
      The old bug tracking system, bugzilla, is still available at
      <resource idref="old-bugzilla"/> but please don't use bugzilla except to
      look up old issues. Bugzilla has been replaced by JIRA.
    </p>
  </s2>
  
  <s2 title="Report a bug">  
  <p>After reading the instructions above, click 
     <jump href="http://issues.apache.org/jira/browse/XALANJ">here</jump> to submit a bug report using JIRA.</p>
     Note that the functionality shown by the JIRA user interface changes depending on whether
     you <em>Log In</em> or not. In particular, to have the <em>CREATE NEW ISSUE</em> link 
     you will need to click the <em>Log In</em> in small font, in the top right corner
     of the page.
  </s2>
</s1>
