Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 错误&引用;“文件过早结束”;_Html_Xml_Jsp_Servlets_Xslt - Fatal编程技术网

Html 错误&引用;“文件过早结束”;

Html 错误&引用;“文件过早结束”;,html,xml,jsp,servlets,xslt,Html,Xml,Jsp,Servlets,Xslt,我总共有3个文件,如下所示 data.xml render.xslt last.xslt 见图片 我的第一个任务是将data.xml和render.xslt作为输入,将输出为All.xml,之后,给定的servlet将处理All.xml和last.xslt作为输入,对Http请求做出输出响应 import java.io.File; import java.io.IOException; import java.io.PrintWriter; import java.net.URL; impor

我总共有3个文件,如下所示

  • data.xml
  • render.xslt
  • last.xslt
  • 见图片

    我的第一个任务是将data.xmlrender.xslt作为输入,将输出为All.xml,之后,给定的servlet将处理All.xmllast.xslt作为输入,对Http请求做出输出响应

    import java.io.File;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.net.URL;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.xml.transform.Source;
    import javax.xml.transform.Transformer;
    import javax.xml.transform.TransformerFactory;
    import javax.xml.transform.stream.StreamResult;
    import javax.xml.transform.stream.StreamSource;
    
    /**
     *
     * @author Shubham Dalal
     */
    public class Manager extends HttpServlet {
        public void doGet(HttpServletRequest request,
            HttpServletResponse response)
        throws ServletException, IOException,
        java.net.MalformedURLException {
    
            // Tell the response object that our servlet returns HTML
            response.setContentType("text/html; charset=UTF-8");
            // Ask for a response stream
            PrintWriter output = response.getWriter();
            // This block tries to open our XML and XSLT files
            // which may throw an exception, thus the try..catch
            try {
                // Get a empty transform factory (factory pattern)
                TransformerFactory tFactory = TransformerFactory.newInstance();
    
                // Get the actual server path for XML and XSLT files
                String loc = getServletContext().getRealPath("") + "/";
    
                Source sdk2 = new StreamSource(
                    new URL("file", "", loc + "full.xml").openStream());
                Source Main = new StreamSource(
                    new URL("file", "", loc + "Main.xslt").openStream());
                // Generate the transformer
                Transformer Maintransformer = tFactory.newTransformer(Main);
                // GRAND FINALE!
                // Perform the transformation, send output to the browser
                Maintransformer.transform(sdk2, new StreamResult(output));
    
                // Get the XML input document and the stylesheet using
                // the string loc that holds the path information,
                // creating a JAXP Source instance
                Source sdk = new StreamSource(
                    new URL("file", "", loc + "sdk.xml").openStream());
                Source list = new StreamSource(
                    new URL("file", "", loc + "list.xsl").openStream());
                // Generate the transformer
                Transformer listtransformer = tFactory.newTransformer(list);
                listtransformer.transform(sdk, new StreamResult(new File("", loc + "full.xml")));
    
            } catch (Exception e) {
                output.write(e.getMessage());
                e.printStackTrace(output);
            }
            output.close();
        }
    }
    
    问题是,我不知道如何在一个servlet中编写完整的代码,该servlet执行第一个任务,然后处理第二个任务,即All.xml和last.xslt,以提供html输出。 我是个新手


    提前感谢。请参阅如何链接两个或多个XSLT转换。谢谢@MartinHonnen。请在单个servlet中向我展示整个代码。我不知道如何实现这一点。