process.java

来自「JAVA的一些源码 JAVA2 STANDARD EDITION DEVELO」· Java 代码 · 共 957 行 · 第 1/3 页

JAVA
957
字号
/* * Copyright 1999-2004 The Apache Software Foundation. * * Licensed 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. */package com.sun.org.apache.xalan.internal.xslt;import java.io.FileOutputStream;import java.io.FileWriter;import java.io.PrintWriter;import java.io.StringReader;import java.util.Properties;import java.util.ResourceBundle;import java.util.Vector;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.transform.OutputKeys;import javax.xml.transform.Source;import javax.xml.transform.Templates;import javax.xml.transform.Transformer;import javax.xml.transform.TransformerException;import javax.xml.transform.TransformerFactory;import javax.xml.transform.TransformerFactoryConfigurationError;import javax.xml.transform.URIResolver;import javax.xml.transform.dom.DOMResult;import javax.xml.transform.dom.DOMSource;import javax.xml.transform.sax.SAXResult;import javax.xml.transform.sax.SAXSource;import javax.xml.transform.sax.SAXTransformerFactory;import javax.xml.transform.sax.TransformerHandler;import javax.xml.transform.stream.StreamResult;import javax.xml.transform.stream.StreamSource;import com.sun.org.apache.xalan.internal.Version;import com.sun.org.apache.xalan.internal.res.XSLMessages;import com.sun.org.apache.xalan.internal.res.XSLTErrorResources;import com.sun.org.apache.xml.internal.utils.DefaultErrorHandler;import org.w3c.dom.Document;import org.w3c.dom.Node;import org.xml.sax.ContentHandler;import org.xml.sax.EntityResolver;import org.xml.sax.InputSource;import org.xml.sax.XMLReader;import org.xml.sax.helpers.XMLReaderFactory;/** * The main() method handles the Xalan command-line interface. * @xsl.usage general */public class Process{  /**   * Prints argument options.   *   * @param resbundle Resource bundle   */  protected static void printArgOptions(ResourceBundle resbundle)  {    System.out.println(resbundle.getString("xslProc_option"));  //"xslproc options: ");    System.out.println("\n\t\t\t" + resbundle.getString("xslProc_common_options") + "\n");    System.out.println(resbundle.getString("optionXSLTC"));  //"    [-XSLTC (use XSLTC for transformation)]    System.out.println(resbundle.getString("optionIN"));  //"    [-IN inputXMLURL]");    System.out.println(resbundle.getString("optionXSL"));  //"   [-XSL XSLTransformationURL]");    System.out.println(resbundle.getString("optionOUT"));  //"   [-OUT outputFileName]");    // System.out.println(resbundle.getString("optionE")); //"   [-E (Do not expand entity refs)]");    System.out.println(resbundle.getString("optionV"));  //"   [-V (Version info)]");    // System.out.println(resbundle.getString("optionVALIDATE")); //"   [-VALIDATE (Set whether validation occurs.  Validation is off by default.)]");    System.out.println(resbundle.getString("optionEDUMP"));  //"   [-EDUMP {optional filename} (Do stackdump on error.)]");    System.out.println(resbundle.getString("optionXML"));  //"   [-XML (Use XML formatter and add XML header.)]");    System.out.println(resbundle.getString("optionTEXT"));  //"   [-TEXT (Use simple Text formatter.)]");    System.out.println(resbundle.getString("optionHTML"));  //"   [-HTML (Use HTML formatter.)]");    System.out.println(resbundle.getString("optionPARAM"));  //"   [-PARAM name expression (Set a stylesheet parameter)]");        System.out.println(resbundle.getString("optionMEDIA"));    System.out.println(resbundle.getString("optionFLAVOR"));    System.out.println(resbundle.getString("optionDIAG"));    System.out.println(resbundle.getString("optionURIRESOLVER"));  //"   [-URIRESOLVER full class name (URIResolver to be used to resolve URIs)]");        System.out.println(resbundle.getString("optionENTITYRESOLVER"));  //"   [-ENTITYRESOLVER full class name (EntityResolver to be used to resolve entities)]");    waitForReturnKey(resbundle);    System.out.println(resbundle.getString("optionCONTENTHANDLER"));  //"   [-CONTENTHANDLER full class name (ContentHandler to be used to serialize output)]");        System.out.println("\n\t\t\t" + resbundle.getString("xslProc_xsltc_options") + "\n");    System.out.println(resbundle.getString("optionXO"));    System.out.println(resbundle.getString("optionXD"));    waitForReturnKey(resbundle);        System.out.println(resbundle.getString("optionXJ"));    System.out.println(resbundle.getString("optionXP"));    System.out.println(resbundle.getString("optionXN"));    System.out.println(resbundle.getString("optionXX"));    System.out.println(resbundle.getString("optionXT"));  }    /**   * Command line interface to transform an XML document according to   * the instructions found in an XSL stylesheet.     * <p>The Process class provides basic functionality for    * performing transformations from the command line.  To see a    * list of arguments supported, call with zero arguments.</p>   * <p>To set stylesheet parameters from the command line, use    * <code>-PARAM name expression</code>. If you want to set the    * parameter to a string value, simply pass the string value    * as-is, and it will be interpreted as a string.  (Note: if    * the value has spaces in it, you may need to quote it depending    * on your shell environment).</p>   *   * @param argv Input parameters from command line   */  public static void _main(String argv[])  {        boolean doStackDumpOnError = false;    boolean setQuietMode = false;    boolean doDiag = false;    /**     * The default diagnostic writer...     */    java.io.PrintWriter diagnosticsWriter = new PrintWriter(System.err, true);    java.io.PrintWriter dumpWriter = diagnosticsWriter;    ResourceBundle resbundle =      (XSLMessages.loadResourceBundle(        com.sun.org.apache.xml.internal.utils.res.XResourceBundle.ERROR_RESOURCES));    String flavor = "s2s";    if (argv.length < 1)    {      printArgOptions(resbundle);    }    else    {      // since xsltc is the default transformer       boolean useXSLTC = true;      for (int i = 0; i < argv.length; i++)      {        if ("-XSLTC".equalsIgnoreCase(argv[i]))        {          useXSLTC = true;        }      }              TransformerFactory tfactory;      // Since xsltc is the default transformer      String key = "javax.xml.transform.TransformerFactory";      String value = "com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl";      Properties props = System.getProperties();      props.put(key, value);      System.setProperties(props);                  try      {        tfactory = TransformerFactory.newInstance();      }      catch (TransformerFactoryConfigurationError pfe)      {        pfe.printStackTrace(dumpWriter);        diagnosticsWriter.println(          XSLMessages.createMessage(            XSLTErrorResources.ER_NOT_SUCCESSFUL, null));  //"XSL Process was not successful.");        tfactory = null;  // shut up compiler        doExit(-1);      }      boolean formatOutput = false;      boolean useSourceLocation = false;      String inFileName = null;      String outFileName = null;      String dumpFileName = null;      String xslFileName = null;      String treedumpFileName = null;      String outputType = null;      String media = null;      Vector params = new Vector();      boolean quietConflictWarnings = false;      URIResolver uriResolver = null;      EntityResolver entityResolver = null;      ContentHandler contentHandler = null;      int recursionLimit=-1;      for (int i = 0; i < argv.length; i++)      {        if ("-XSLTC".equalsIgnoreCase(argv[i]))        {          // The -XSLTC option has been processed.        }        else if ("-INDENT".equalsIgnoreCase(argv[i]))        {          int indentAmount;          if (((i + 1) < argv.length) && (argv[i + 1].charAt(0) != '-'))          {            indentAmount = Integer.parseInt(argv[++i]);          }          else          {            indentAmount = 0;          }          // TBD:          // xmlProcessorLiaison.setIndent(indentAmount);        }        else if ("-IN".equalsIgnoreCase(argv[i]))        {          if (i + 1 < argv.length && argv[i + 1].charAt(0) != '-')            inFileName = argv[++i];          else            System.err.println(              XSLMessages.createMessage(                XSLTErrorResources.ER_MISSING_ARG_FOR_OPTION,                new Object[]{ "-IN" }));  //"Missing argument for);        }        else if ("-MEDIA".equalsIgnoreCase(argv[i]))        {          if (i + 1 < argv.length)            media = argv[++i];          else            System.err.println(              XSLMessages.createMessage(                XSLTErrorResources.ER_MISSING_ARG_FOR_OPTION,                new Object[]{ "-MEDIA" }));  //"Missing argument for);        }        else if ("-OUT".equalsIgnoreCase(argv[i]))        {          if (i + 1 < argv.length && argv[i + 1].charAt(0) != '-')            outFileName = argv[++i];          else            System.err.println(              XSLMessages.createMessage(                XSLTErrorResources.ER_MISSING_ARG_FOR_OPTION,                new Object[]{ "-OUT" }));  //"Missing argument for);        }        else if ("-XSL".equalsIgnoreCase(argv[i]))        {          if (i + 1 < argv.length && argv[i + 1].charAt(0) != '-')            xslFileName = argv[++i];          else            System.err.println(              XSLMessages.createMessage(                XSLTErrorResources.ER_MISSING_ARG_FOR_OPTION,                new Object[]{ "-XSL" }));  //"Missing argument for);        }        else if ("-FLAVOR".equalsIgnoreCase(argv[i]))        {          if (i + 1 < argv.length)          {            flavor = argv[++i];          }          else            System.err.println(              XSLMessages.createMessage(                XSLTErrorResources.ER_MISSING_ARG_FOR_OPTION,                new Object[]{ "-FLAVOR" }));  //"Missing argument for);        }        else if ("-PARAM".equalsIgnoreCase(argv[i]))        {          if (i + 2 < argv.length)          {            String name = argv[++i];            params.addElement(name);            String expression = argv[++i];            params.addElement(expression);          }          else            System.err.println(              XSLMessages.createMessage(                XSLTErrorResources.ER_MISSING_ARG_FOR_OPTION,                new Object[]{ "-PARAM" }));  //"Missing argument for);        }        else if ("-E".equalsIgnoreCase(argv[i]))        {          // TBD:          // xmlProcessorLiaison.setShouldExpandEntityRefs(false);        }        else if ("-V".equalsIgnoreCase(argv[i]))        {          diagnosticsWriter.println(resbundle.getString("version")  //">>>>>>> Xalan Version "                                    + Version.getVersion() + ", " +          resbundle.getString("version2"));  // "<<<<<<<");        }        else if ("-Q".equalsIgnoreCase(argv[i]))        {          setQuietMode = true;        }        else if ("-DIAG".equalsIgnoreCase(argv[i]))        {          doDiag = true;        }        else if ("-XML".equalsIgnoreCase(argv[i]))        {          outputType = "xml";        }        else if ("-TEXT".equalsIgnoreCase(argv[i]))        {          outputType = "text";        }        else if ("-HTML".equalsIgnoreCase(argv[i]))        {

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?