无法将<x:transform>结果作为变量访问

时间:2019-10-03 16:01:30

标签: jsp xslt xslt-1.0

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

不是在转换中使用var来解决,而是通过传递数据预转换并使用Java通过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;
    }