首页 > 解决方案 > 无法访问结果作为变量

问题描述

我在 jsp 文件中使用 xlst 来模板化 xsl 源:

<x:transform xslt="${xslt}" doc="${xmlString}"></x:transform>

它工作正常并在页面上显示预期的 html。但是,我需要将此结果作为变量访问以供进一步使用。我尝试添加var="printData"为属性,但

  1. 没有进行格式化,也没有文本出现在<x:transform>
  2. 如果我尝试打印出来${printData}[#document: null]就会打印出来。

我试过寻找文档,但我几乎找不到关于使用 var 的信息,对吗?问题出在其他地方吗?

标签: jspxsltxslt-1.0

解决方案


不是var在转换上解决,而是通过传递数据预转换并通过 Java 转换它

public static String elaborateXml(String xslPath, String xml) {
        try {
            StringReader reader = new StringReader(xml);
            StringWriter writer = new StringWriter();
            TransformerFactory tFactory = TransformerFactory.newInstance();
            Transformer transformer = tFactory.newTransformer(
                    new javax.xml.transform.stream.StreamSource(xslPath));

            transformer.transform(
                    new javax.xml.transform.stream.StreamSource(reader), 
                    new javax.xml.transform.stream.StreamResult(writer));

            String result = writer.toString();
            return result;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

推荐阅读