35 import com.sun.org.apache.xml.internal.serializer.utils.SystemIDResolver;
36 import java.io.File;
37 import java.io.IOException;
38 import java.io.StringReader;
39 import java.util.Dictionary;
40 import java.util.Enumeration;
41 import java.util.Hashtable;
42 import java.util.Properties;
43 import java.util.Stack;
44 import java.util.StringTokenizer;
45 import java.util.Vector;
46 import javax.xml.XMLConstants;
47 import javax.xml.parsers.ParserConfigurationException;
48 import javax.xml.parsers.SAXParser;
49 import javax.xml.parsers.SAXParserFactory;
50 import org.xml.sax.Attributes;
51 import org.xml.sax.ContentHandler;
52 import org.xml.sax.InputSource;
53 import org.xml.sax.Locator;
54 import org.xml.sax.SAXException;
55 import org.xml.sax.SAXParseException;
56 import org.xml.sax.XMLReader;
57 import org.xml.sax.helpers.AttributesImpl;
58
59 /**
60 * @author Jacek Ambroziak
61 * @author Santiago Pericas-Geertsen
62 * @author G. Todd Miller
63 * @author Morten Jorgensen
64 * @author Erwin Bolwidt <ejb@klomp.org>
65 */
66 public class Parser implements Constants, ContentHandler {
67
68 private static final String XSL = "xsl"; // standard prefix
69 private static final String TRANSLET = "translet"; // extension prefix
70
71 private Locator _locator = null;
72
73 private XSLTC _xsltc; // Reference to the compiler object.
74 private XPathParser _xpathParser; // Reference to the XPath parser.
459 */
460 public SyntaxTreeNode parse(InputSource input) {
461 try {
462 // Create a SAX parser and get the XMLReader object it uses
463 final SAXParserFactory factory = FactoryImpl.getSAXFactory(_useServicesMechanism);
464
465 if (_xsltc.isSecureProcessing()) {
466 try {
467 factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
468 }
469 catch (SAXException e) {}
470 }
471
472 try {
473 factory.setFeature(Constants.NAMESPACE_FEATURE,true);
474 }
475 catch (Exception e) {
476 factory.setNamespaceAware(true);
477 }
478 final SAXParser parser = factory.newSAXParser();
479 parser.setProperty(XMLConstants.ACCESS_EXTERNAL_DTD,
480 _xsltc.getProperty(XMLConstants.ACCESS_EXTERNAL_DTD));
481 final XMLReader reader = parser.getXMLReader();
482 return(parse(reader, input));
483 }
484 catch (ParserConfigurationException e) {
485 ErrorMsg err = new ErrorMsg(ErrorMsg.SAX_PARSER_CONFIG_ERR);
486 reportError(ERROR, err);
487 }
488 catch (SAXParseException e){
489 reportError(ERROR, new ErrorMsg(e.getMessage(),e.getLineNumber()));
490 }
491 catch (SAXException e) {
492 reportError(ERROR, new ErrorMsg(e.getMessage()));
493 }
494 return null;
495 }
496
497 public SyntaxTreeNode getDocumentRoot() {
498 return _root;
499 }
500
|
35 import com.sun.org.apache.xml.internal.serializer.utils.SystemIDResolver;
36 import java.io.File;
37 import java.io.IOException;
38 import java.io.StringReader;
39 import java.util.Dictionary;
40 import java.util.Enumeration;
41 import java.util.Hashtable;
42 import java.util.Properties;
43 import java.util.Stack;
44 import java.util.StringTokenizer;
45 import java.util.Vector;
46 import javax.xml.XMLConstants;
47 import javax.xml.parsers.ParserConfigurationException;
48 import javax.xml.parsers.SAXParser;
49 import javax.xml.parsers.SAXParserFactory;
50 import org.xml.sax.Attributes;
51 import org.xml.sax.ContentHandler;
52 import org.xml.sax.InputSource;
53 import org.xml.sax.Locator;
54 import org.xml.sax.SAXException;
55 import org.xml.sax.SAXNotRecognizedException;
56 import org.xml.sax.SAXParseException;
57 import org.xml.sax.XMLReader;
58 import org.xml.sax.helpers.AttributesImpl;
59
60 /**
61 * @author Jacek Ambroziak
62 * @author Santiago Pericas-Geertsen
63 * @author G. Todd Miller
64 * @author Morten Jorgensen
65 * @author Erwin Bolwidt <ejb@klomp.org>
66 */
67 public class Parser implements Constants, ContentHandler {
68
69 private static final String XSL = "xsl"; // standard prefix
70 private static final String TRANSLET = "translet"; // extension prefix
71
72 private Locator _locator = null;
73
74 private XSLTC _xsltc; // Reference to the compiler object.
75 private XPathParser _xpathParser; // Reference to the XPath parser.
460 */
461 public SyntaxTreeNode parse(InputSource input) {
462 try {
463 // Create a SAX parser and get the XMLReader object it uses
464 final SAXParserFactory factory = FactoryImpl.getSAXFactory(_useServicesMechanism);
465
466 if (_xsltc.isSecureProcessing()) {
467 try {
468 factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
469 }
470 catch (SAXException e) {}
471 }
472
473 try {
474 factory.setFeature(Constants.NAMESPACE_FEATURE,true);
475 }
476 catch (Exception e) {
477 factory.setNamespaceAware(true);
478 }
479 final SAXParser parser = factory.newSAXParser();
480 try {
481 parser.setProperty(XMLConstants.ACCESS_EXTERNAL_DTD,
482 _xsltc.getProperty(XMLConstants.ACCESS_EXTERNAL_DTD));
483 } catch (SAXNotRecognizedException e) {
484 ErrorMsg err = new ErrorMsg(ErrorMsg.WARNING_MSG,
485 parser.getClass().getName() + ": " + e.getMessage());
486 reportError(WARNING, err);
487 }
488
489 final XMLReader reader = parser.getXMLReader();
490 return(parse(reader, input));
491 }
492 catch (ParserConfigurationException e) {
493 ErrorMsg err = new ErrorMsg(ErrorMsg.SAX_PARSER_CONFIG_ERR);
494 reportError(ERROR, err);
495 }
496 catch (SAXParseException e){
497 reportError(ERROR, new ErrorMsg(e.getMessage(),e.getLineNumber()));
498 }
499 catch (SAXException e) {
500 reportError(ERROR, new ErrorMsg(e.getMessage()));
501 }
502 return null;
503 }
504
505 public SyntaxTreeNode getDocumentRoot() {
506 return _root;
507 }
508
|