gpt4 book ai didi

java - xslt 转换后为什么在 Tomcat/bin 文件夹中生成文件?如何将此目录更改为 webapps/myApp?

转载 作者:行者123 更新时间:2023-11-28 22:58:49 26 4
gpt4 key购买 nike

我有一个调用 XSLT 文件的 Java serlvet。

InputStream inputStream = new ByteArrayInputStream(request.getParameter(
"content").getBytes("UTF-8"));
try {
TransformerFactory tFactory = new net.sf.saxon.TransformerFactoryImpl();
Transformer transformer = tFactory.newTransformer(new StreamSource(
getServletContext().getResourceAsStream("lib/GenerateGeddyJsCode.xsl")));
transformer.transform(new StreamSource(inputStream), new StreamResult(
new FileOutputStream(getServletContext().getRealPath("/")
+ "output.txt")));
System.out.println("======================= The output is in "
+ getServletContext().getRealPath("/") + "output.txt."
+ "=======================");
} catch (Throwable t) {
t.printStackTrace();
}

文件output.txtTomcat/webapps/myApp 中的 servlet 生成, 没关系。

但实际上我不想只生成一个输出文件。因此,在 XSLT 文件中,我尝试使用 <xsl:result-document> 创建多个输出文件.对于每个 ObjectType,我想创建一个不同的模型类(我使用 MVC 范例)。

<xsl:template match="ObjectType">
<xsl:result-document href="{@name}.js" format="js">
<xsl:text>TEXT</xsl:text>
</xsl:result-document>
</xsl:template>

问题是 XSLT 生成的文件位于 Tomcat/bin 中.为什么会这样?以及如何在 webapps/myApp 中生成它们?

最佳答案

你似乎有你想要的路径 getServletContext().getRealPath("/") 所以你可以定义一个全局参数

<xsl:param name="dir"/>

在您的 XSLT 中,使用它

<xsl:result-document href="{$dir}/{@name}.js" format="js">

然后设置

transformer.setParameter("dir", new File(getServletContext().getRealPath("/")).toURI().toString());

在运行转换之前。

关于java - xslt 转换后为什么在 Tomcat/bin 文件夹中生成文件?如何将此目录更改为 webapps/myApp?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22577509/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com