【发布时间】:2012-12-03 09:56:01
【问题描述】:
我在 GlassFish 中使用 Jersey 实现了一个 REST 服务。我有使用 JSON 输出的服务,现在我也想提供一些人类可读的输出。 JSON 输出中缺少的最重要的事情是我希望将统计信息中的某些字段转换为可点击的链接,这将显示相关的统计信息(使用另一个 REST 调用)。
由于我想将格式和内容分开,我不想直接生成 HTML。我虽然使用 xml + xslt 可能是一种明智的方法。我可以使用 org.w3c.dom 生成 XML 文档,但我看不出如何将 xslt 附加到它。
这大概是我现在所做的:
@GET
@Path("history_id")
@Produces("application/xml")
public Document history(@QueryParam("id") String idText) throws ParserConfigurationException
{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = factory.newDocumentBuilder();
Document doc = docBuilder.newDocument();
Element root = doc.createElement("root");
doc.appendChild(root);
Element el = doc.createElement(name);
el.setTextContent(value);
root.appendChild(el);
return doc;
我希望在生成的 XML 中出现以下指令:
<?xml-stylesheet type="text/xsl" href="history.xsl"?">
如何指定要附加到 XML 的 xslt?还是我的方法可能从根本上是错误的,而这通常以其他方式完成?
【问题讨论】:
-
只是出于兴趣,为什么要以人类可读的方式显示 XML?是为了在网页的一部分中显示(例如作为 API 可视化工具的一部分,即 Swagger 类型的方法)还是出于其他原因?
-
@My Head Hurts 我想生成一些统计信息,这些统计信息可能会被应用程序使用(我目前使用 JSON),但有时它们也可能会被人类检查,为此为了方便,我想添加一些格式(最重要的是在某些字段上实现可点击的链接以显示相关统计信息)。
-
@MyHeadHurts 应该可以提供一个带有 XSLT 样式表的 XML 网页,并且 Web 浏览器应该能够在其一侧进行转换和格式化,在 w3schools.com/xml/simplexsl.xml 中行。我知道我可以在服务器上进行转换,但不知何故,这感觉像是一个劣质的解决方案。
-
您是否考虑过使用 JAXB 从同一个域对象生成 XML 和 JSON?看看blog.bdoughan.com/2012/11/… 和stackoverflow.com/a/11012294/116509
-
@MyHeadHurts 我正在尝试在提供的链接中实现解决方案,但我没有看到任何附加到转换生成的 DOM 的 XSLT。我会多研究一下以了解它。如果可行,它可能是一个答案。