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 + -
显示快捷键?