<?xml version="1.0" standalone="no"?>
<!--
 * 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.
-->

<!DOCTYPE s1 SYSTEM "sbk:/style/dtd/document.dtd">

<s1 title="Bug Reporting">

<s2 title="How to report bugs">
<p> Please report bugs to <jump href="&JiraURL;">Jira</jump>,
the Apache bug database.  Pick the product "Xerces-C++"
using the following components&colon;
</p>
<table>
<tr><th><em>Component</em></th><th><em>Description</em></th></tr>
<tr><td>DOM</td><td>Items specific to DOM</td></tr>
<tr><td>SAX/SAX2</td><td>Items specific to SAX or SAX2</td></tr>
<tr><td>Non-Validating Parser</td><td>General Parsing Problem</td></tr>
<tr><td>Validating Parser (DTD)</td><td>DTD related parser issue</td></tr>
<tr><td>Validating Parser (Schema)</td><td>Schema related parser issue</td></tr>
<tr><td>Utilities</td><td>Items related to utilities like MessageLoader, Transcoder, NetAccessors, Platform specific utilities</td></tr>
<tr><td>Build</td><td>Problem with build, makefile, project files</td></tr>
<tr><td>Documentation</td><td>Documentation bugs such as FAQ, Programming Guide</td></tr>
<tr><td>Samples/Tests</td><td>Samples or test cases related issues</td></tr>
<tr><td>Miscellaneous</td><td>Items not covered in other categories</td></tr>
</table>
<p>A copy of your bug report is sent automatically to the
<jump href="mailing-lists.html">&XercesCName; development mailing list</jump>.
</p>
</s2>
<s2 title="Search first">
<p> Check the <jump href="&JiraURL;">Jira</jump> database
before submitting your bug report to avoid creating a duplicate report.
Even the bug has been reported already, you may add a comment to the existing report
since your contribution may lead to a quicker identification/resolution to the bug reported.
</p>
<p> Here is the list of
<jump href=
"http&colon;//issues.apache.org/jira/secure/IssueNavigator.jspa?reset=true&amp;pid=10510&amp;statusIds=1">
outstanding bugs</jump> that are currently reported in Jira.
</p>
</s2>
<s2 title="Write a good bug report">
<p> Writing a useful bug report, which makes the bug reproducible, is the first step
towards the resolution of the bug. Specifics about the bug, like
</p>
<ul>
<li>&XercesCName; version number</li>
<li>Platform</li>
<li>Operating system and version number</li>
<li>Compiler and version number</li>
<li>The XML document (or excerpt) that failed</li>
<li>The C++ application code that failed</li>
<li>Whether you built the &XercesCName; library yourself or used the
binary distribution</li>
<li>What happened</li>
</ul>
<p>
are all necessary information to allow developer to reproduce,
identify, evaluate and eventually, fix the bug, which is the very
purpose of your reporting of the bug.
</p>
<p>If you are providing a patch please review the information in
<jump href="faq-contributing-&XercesC3Series;.html#Submitting Patches">Submitting Patches</jump>.
</p>
</s2>

</s1>
