gpt4 book ai didi

java - 除了 xml 之外,还向 Web 浏览器提供 xsl

转载 作者:数据小太阳 更新时间:2023-10-29 02:40:25 31 4
gpt4 key购买 nike

我有以下 controller 方法,它成功地将 xml 文本发送到 spring mvc 应用程序中的网络浏览器。问题在于它只是将文本而不是格式发送到浏览器,因此浏览器中的输出只是一堆杂乱无章的未格式化文本。 如何调整以下 Controller 方法,以便它也向用户的网络浏览器发送一个xsl 样式表style.xsl,以及以便用户网络浏览器中的内容成功地被 style.xsl?

格式化

这是我目前所拥有的:

@RequestMapping(value = "actionName.xml", method = RequestMethod.GET)
public HttpEntity<byte[]> getXml(ModelMap map, HttpServletResponse response) {
String xml = "";
String inputpath = "path\\to\\";
String filename = "somefile.xml";
String filepluspath = inputpath+filename;
StreamSource source = new StreamSource(filepluspath);
try {
StringWriter writer = new StringWriter();
StreamResult result = new StreamResult(writer);
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
transformer.transform(source,result);
xml = writer.toString();
} catch (Exception e) {e.printStackTrace();}
byte[] documentBody = xml.getBytes();
HttpHeaders header = new HttpHeaders();
header.setContentType(new MediaType("application", "xml"));
header.setContentLength(documentBody.length);
return new HttpEntity<byte[]>(documentBody, header);
}

最佳答案

您的问题的直接答案是“您不能”- 无法在单个 HTTP 响应中发送两个资源。

您可以在要返回的 XML 文件的 header 中包含指向 XSLT 文件的链接:

<?xml-stylesheet href="style.xsl" type="text/xsl"?>

这将使用户的浏览器尝试下载并将 ./style.xsl 应用于数据,因此您的服务器将需要公开它。

更新:样式表的 URI 可以是任意的;如果你只想在页面上查看时应用样式,你可以使它相对于为你的文档提供服务的 URI。如果您的 @RequestMapping 解析为类似 http://your-server.com/app/actionName.xml 的内容,您可以添加静态资源 http://your-server.com/app/static/style.xsl 到您的应用程序并通过

引用它
<?xml-stylesheet href="static/style.xsl" type="text/xsl"?>

或者,您可以将 XSLT 直接嵌入到 XML 数据中,而不用担心 URL 映射,但这是另一个问题的主题 (already answered, by the way) .

关于java - 除了 xml 之外,还向 Web 浏览器提供 xsl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26791857/

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