You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@xalan.apache.org by bu...@apache.org on 2002/12/10 17:17:29 UTC
DO NOT REPLY [Bug 15240] New: -
No locator provided upon stylesheet errors
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=15240>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND
INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=15240
No locator provided upon stylesheet errors
Summary: No locator provided upon stylesheet errors
Product: XalanJ2
Version: 2.4
Platform: Other
OS/Version: Other
Status: NEW
Severity: Normal
Priority: Other
Component: org.apache.xalan.transformer
AssignedTo: xalan-dev@xml.apache.org
ReportedBy: caprani@altern.org
CC: mmidy@apache.org
Current processing of stylesheet errors does not allow straightforward
processing like this:
=========
StreamSource source = new StreamSource(source_url);
// A stylesheet with an error, for example
// <xsl:apply_templates/><!-- a '_' in place of a '-' -->
StreamSource stylesheet = new StreamSource(stylesheet_url);
StreamResult result = new StreamResult(System.out);
try {
Transformer transformer = factory.newTransformer(stylesheet);
} catch (TransformerConfigurationException tce) {
// Here we get the error message but not the location where the problem
occured:
// javax.xml.transform.TransformerConfigurationException:
// javax.xml.transform.TransformerException:
// javax.xml.transform.TransformerException:
// xsl:apply_templates is not allowed in this position in the
stylesheet!
System.err.println(tce.getMessageAndLocation());
}
=========
The exception that is thrown when parsing an erroneous stylesheet does not
provide a locator.
The original exception (with its locator) is burried deep into a nesting of
exceptions.
The TransformerConfigurationException contains:
- A TransformerConfigurationException (no locator) which contains:
- A TransformerException (no locator) which contains:
- A SaxException which contains:
- A TransformerException (with a locator !)
I suggest that at least the SaxException should be avoided, because the SAX
mechanism should be made transparent. The SaxException that is caught during
parse() (in TransformerFactoryImpl.newTemplates()) would be unpacked and the
encapsulated TransformerException be sent to the fatalError
(TransformerException) Handler.
The default ErrorListener may also make sure to provide a locator for the
exceptions it throws (I've noticed there is an ensureLocationSet(exception) to
do that).
Note: This is probably similar to bug #5872