java - 休息服务: how to produce human readable output using XML + XSLT?

标签 java xml xslt

我有一个使用 Jersey 在 GlassFish 中实现的 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 世界中称为“处理指令”。您可以使用 DOM API 创建一个:

    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    DocumentBuilder docBuilder = factory.newDocumentBuilder();
    Document doc = docBuilder.newDocument();
    doc.appendChild(doc.createProcessingInstruction("xml-stylesheet", "type=\"text/xsl\" href=\"history.xsl\""));

然后,如果您将 XML 文档发送到支持客户端 XSLT 的浏览器/用户代理,它会将样式表应用到 XML。

关于java - 休息服务: how to produce human readable output using XML + XSLT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13680793/

相关文章:

xml - 如何在 Phpstorm 中重新格式化 XML 文件?

c# - 使用 pocos 以声明方式定义 xml 序列化

xml - XSLT用于具有相同名称的多个元素

xslt - 如何以理智的方式拆分 Diazo 规则?

java - 异常处理冒险

java - 我正在使用的库正在打开输入流而不是关闭它。我怎样才能关闭它?

java - 使用 DataProvider 参数化的 JGiven 失败,名称为 "method ' 应该没有参数”

java - 使用 PrivilegedMode=TRUE 的 AWS 精选 Docker 镜像创建 CodeBuild 项目

xml - 在 XSLT 中替换 XML 中的节点

xml - XSLT 中的日期时间分组问题