Index: gnu/xml/stream/SAXParser.java =================================================================== RCS file: /cvsroot/classpath/classpath/gnu/xml/stream/SAXParser.java,v retrieving revision 1.20 diff -u -r1.20 SAXParser.java --- gnu/xml/stream/SAXParser.java 4 Mar 2006 20:45:32 -0000 1.20 +++ gnu/xml/stream/SAXParser.java 7 Jun 2006 08:03:41 -0000 @@ -976,10 +976,56 @@ public static void main(String[] args) throws Exception { - SAXParser parser = new SAXParser(); - InputSource input = new InputSource(args[0]); - parser.parse(input, new org.xml.sax.helpers.DefaultHandler()); - + boolean validating = false; + boolean namespaceAware = false; + boolean xIncludeAware = false; + boolean expectCallbackClass = false; + String callbackClass = null; + int pos = 0; + while (pos < args.length && (args[pos].startsWith("-") || expectCallbackClass)) + { + if ("-x".equals(args[pos])) + xIncludeAware = true; + else if ("-v".equals(args[pos])) + validating = true; + else if ("-n".equals(args[pos])) + namespaceAware = true; + else if ("-c".equals(args[pos])) + expectCallbackClass = true; + else if (expectCallbackClass) + { + callbackClass = args[pos]; + expectCallbackClass = false; + } + pos++; + } + if (pos >= args.length || expectCallbackClass) + { + System.out.println("Syntax: SAXParser [-n] [-v] [-x] [-c ] [ [...]]"); + System.out.println("\t-n: use namespace aware mode"); + System.out.println("\t-v: use validating parser"); + System.out.println("\t-x: use XInclude aware mode"); + System.out.println("\t-c : use specified class as callback handler (must have a no-arg public constructor)"); + System.exit(2); + } + while (pos < args.length) + { + ContentHandler handler = null; + if (callbackClass != null) + { + Class t = Class.forName(callbackClass); + handler = (ContentHandler) t.newInstance(); + } + else + handler = new org.xml.sax.helpers.DefaultHandler(); + SAXParser parser = new SAXParser(validating, namespaceAware, + xIncludeAware); + InputSource input = new InputSource(args[pos]); + XMLReader reader = parser.getXMLReader(); + reader.setContentHandler(handler); + reader.parse(input); + pos++; + } } } Index: gnu/xml/stream/XMLParser.java =================================================================== RCS file: /cvsroot/classpath/classpath/gnu/xml/stream/XMLParser.java,v retrieving revision 1.28 diff -u -r1.28 XMLParser.java --- gnu/xml/stream/XMLParser.java 20 Mar 2006 19:54:35 -0000 1.28 +++ gnu/xml/stream/XMLParser.java 7 Jun 2006 08:03:41 -0000 @@ -4250,97 +4250,131 @@ public static void main(String[] args) throws Exception { + boolean validating = false; + boolean namespaceAware = false; boolean xIncludeAware = false; - if (args.length > 1 && "-x".equals(args[1])) - xIncludeAware = true; - XMLParser p = new XMLParser(new java.io.FileInputStream(args[0]), - absolutize(null, args[0]), - true, // validating - true, // namespaceAware - true, // coalescing, - true, // replaceERefs - true, // externalEntities - true, // supportDTD - true, // baseAware - true, // stringInterning - true, // extendedEventTypes - null, - null); - XMLStreamReader reader = p; - if (xIncludeAware) - reader = new XIncludeFilter(p, args[0], true, true, true); - try + int pos = 0; + while (pos < args.length && args[pos].startsWith("-")) { - int event; - //do - while (reader.hasNext()) + if ("-x".equals(args[pos])) + xIncludeAware = true; + else if ("-v".equals(args[pos])) + validating = true; + else if ("-n".equals(args[pos])) + namespaceAware = true; + pos++; + } + if (pos >= args.length) + { + System.out.println("Syntax: XMLParser [-n] [-v] [-x] [ [...]]"); + System.out.println("\t-n: use namespace aware mode"); + System.out.println("\t-v: use validating parser"); + System.out.println("\t-x: use XInclude aware mode"); + System.exit(2); + } + while (pos < args.length) + { + XMLParser p = new XMLParser(new java.io.FileInputStream(args[pos]), + absolutize(null, args[pos]), + validating, // validating + namespaceAware, // namespaceAware + true, // coalescing, + true, // replaceERefs + true, // externalEntities + true, // supportDTD + true, // baseAware + true, // stringInterning + true, // extendedEventTypes + null, + null); + XMLStreamReader reader = p; + if (xIncludeAware) + reader = new XIncludeFilter(p, args[pos], true, true, true); + try { - event = reader.next(); - Location loc = reader.getLocation(); - System.out.print(loc.getLineNumber()+":"+loc.getColumnNumber()+" "); - switch (event) + int event; + //do + while (reader.hasNext()) { - case XMLStreamConstants.START_DOCUMENT: - System.out.println("START_DOCUMENT version="+reader.getVersion()+ - " encoding="+reader.getEncoding()); - break; - case XMLStreamConstants.END_DOCUMENT: - System.out.println("END_DOCUMENT"); - break; - case XMLStreamConstants.START_ELEMENT: - System.out.println("START_ELEMENT "+reader.getName()); - int l = reader.getNamespaceCount(); - for (int i = 0; i < l; i++) - System.out.println("\tnamespace "+reader.getNamespacePrefix(i)+ - "='"+reader.getNamespaceURI(i)+"'"); - l = reader.getAttributeCount(); - for (int i = 0; i < l; i++) - System.out.println("\tattribute "+reader.getAttributeName(i)+ - "='"+reader.getAttributeValue(i)+"'"); - break; - case XMLStreamConstants.END_ELEMENT: - System.out.println("END_ELEMENT "+reader.getName()); - break; - case XMLStreamConstants.CHARACTERS: - System.out.println("CHARACTERS '"+encodeText(reader.getText())+"'"); - break; - case XMLStreamConstants.CDATA: - System.out.println("CDATA '"+encodeText(reader.getText())+"'"); - break; - case XMLStreamConstants.SPACE: - System.out.println("SPACE '"+encodeText(reader.getText())+"'"); - break; - case XMLStreamConstants.DTD: - System.out.println("DTD "+reader.getText()); - break; - case XMLStreamConstants.ENTITY_REFERENCE: - System.out.println("ENTITY_REFERENCE "+reader.getText()); - break; - case XMLStreamConstants.COMMENT: - System.out.println("COMMENT '"+encodeText(reader.getText())+"'"); - break; - case XMLStreamConstants.PROCESSING_INSTRUCTION: - System.out.println("PROCESSING_INSTRUCTION "+reader.getPITarget()+ - " "+reader.getPIData()); - break; - case START_ENTITY: - System.out.println("START_ENTITY "+reader.getText()); - break; - case END_ENTITY: - System.out.println("END_ENTITY "+reader.getText()); - break; - default: - System.out.println("Unknown event: "+event); + event = reader.next(); + Location loc = reader.getLocation(); + System.out.print(loc.getLineNumber() + ":" + + loc.getColumnNumber() + " "); + switch (event) + { + case XMLStreamConstants.START_DOCUMENT: + System.out.println("START_DOCUMENT version=" + + reader.getVersion() + + " encoding=" + + reader.getEncoding()); + break; + case XMLStreamConstants.END_DOCUMENT: + System.out.println("END_DOCUMENT"); + break; + case XMLStreamConstants.START_ELEMENT: + System.out.println("START_ELEMENT " + + reader.getName()); + int l = reader.getNamespaceCount(); + for (int i = 0; i < l; i++) + System.out.println("\tnamespace " + + reader.getNamespacePrefix(i) + "='" + + reader.getNamespaceURI(i)+"'"); + l = reader.getAttributeCount(); + for (int i = 0; i < l; i++) + System.out.println("\tattribute " + + reader.getAttributeName(i) + "='" + + reader.getAttributeValue(i) + "'"); + break; + case XMLStreamConstants.END_ELEMENT: + System.out.println("END_ELEMENT " + reader.getName()); + break; + case XMLStreamConstants.CHARACTERS: + System.out.println("CHARACTERS '" + + encodeText(reader.getText()) + "'"); + break; + case XMLStreamConstants.CDATA: + System.out.println("CDATA '" + + encodeText(reader.getText()) + "'"); + break; + case XMLStreamConstants.SPACE: + System.out.println("SPACE '" + + encodeText(reader.getText()) + "'"); + break; + case XMLStreamConstants.DTD: + System.out.println("DTD " + reader.getText()); + break; + case XMLStreamConstants.ENTITY_REFERENCE: + System.out.println("ENTITY_REFERENCE " + reader.getText()); + break; + case XMLStreamConstants.COMMENT: + System.out.println("COMMENT '" + + encodeText(reader.getText()) + "'"); + break; + case XMLStreamConstants.PROCESSING_INSTRUCTION: + System.out.println("PROCESSING_INSTRUCTION " + + reader.getPITarget() + " " + + reader.getPIData()); + break; + case START_ENTITY: + System.out.println("START_ENTITY " + reader.getText()); + break; + case END_ENTITY: + System.out.println("END_ENTITY " + reader.getText()); + break; + default: + System.out.println("Unknown event: " + event); + } } } - } - catch (XMLStreamException e) - { - Location l = reader.getLocation(); - System.out.println("At line "+l.getLineNumber()+ - ", column "+l.getColumnNumber()+ - " of "+l.getSystemId()); - throw e; + catch (XMLStreamException e) + { + Location l = reader.getLocation(); + System.out.println("At line "+l.getLineNumber()+ + ", column "+l.getColumnNumber()+ + " of "+l.getSystemId()); + throw e; + } + pos++; } } Index: gnu/xml/transform/TransformerImpl.java =================================================================== RCS file: /cvsroot/classpath/classpath/gnu/xml/transform/TransformerImpl.java,v retrieving revision 1.14 diff -u -r1.14 TransformerImpl.java --- gnu/xml/transform/TransformerImpl.java 6 Jun 2006 13:21:21 -0000 1.14 +++ gnu/xml/transform/TransformerImpl.java 7 Jun 2006 08:03:41 -0000 @@ -576,6 +576,19 @@ } catch (IOException e) { + if (errorListener != null) + { + try + { + errorListener.error(new TransformerException(e)); + } + catch (TransformerException e2) + { + e2.printStackTrace(System.err); + } + } + else + e.printStackTrace(System.err); } } }