src/com/sun/org/apache/xalan/internal/xsltc/compiler/Parser.java

Print this page




  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