【问题标题】:Can I create a JSP from dynamically generated XML?我可以从动态生成的 XML 创建 JSP 吗?
【发布时间】:2013-03-06 15:36:03
【问题描述】:

我想使用 XSLT 和 <x:transform> 标记生成 JSP。但是我的文件系统上没有 XML 文件,我不能像这样导入它:<c:import url="./xml/MyXml.xml" var="xmldoc"/>。它在 Java 代码中动态生成并设置为 String 以请求属性。 我试着这样做:

<div id="mydiv">
    <c:set var="xmldoc">
       <c:out value="${requestScope.someXmlString}"/>
    </c:set>
    <c:import url="./xsl/MyStylesheet.xsl" var="xsltdoc"/>
    <x:transform xml="${xmldoc}" xslt="${xsltdoc}"/>
</div>

<div id="mydiv">
    <c:set var="xmldoc" value="${requestScope.someXmlString}">           
    <c:import url="./xsl/MyStylesheet.xsl" var="xsltdoc"/>
    <x:transform xml="${xmldoc}" xslt="${xsltdoc}"/>
</div>

但它不起作用。似乎&lt;x:transform&gt; 只需要一个 xml 文档(不是字符串)。我该怎么做?还是有其他方法可以做到这一点?

【问题讨论】:

  • 根据this 它应该可以工作。我相信,这个问题在c:import 指令中。仅出于测试目的尝试使用绝对 URL(例如http://localhost:8080/myapp/xsl/MyStylesheet.xsl),如果它有效,那么您可以尝试使用${pageContext.servletContext.servletContextName} 或类似的东西。
  • 谢谢。但我尝试像 ''。它奏效了。我认为原因不是'c:import'。但我会尝试更多地玩whis path。
  • 这就是我的意思:请尝试使用&lt;c:import url="./xsl/MyStylesheet.xsl" var="xsltdoc"/&gt; 而不是&lt;c:import url="http://localhost:8080/myapp/xsl/MyStylesheet.xsl" var="xsltdoc"/&gt;,看看会发生什么。
  • 对不起。我不小心发了最后一个帖子。我编辑了它。

标签: java xml jsp xslt jstl


【解决方案1】:

您无需尝试设置可以直接在&lt;x:transform&gt; 标签中引用请求值的值。

<x:transform xml="${requestScope.someXmlString}" xslt="${xsltdoc}"/>

默认情况下,jstl 使用请求范围。所以如果你设置像 request.setAttribute("someXmlString", xmlStr); 这样的值那么你可以直接调用

<x:transform xml="${someXmlString}" xslt="${xsltdoc}"/>

两者都应该工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-26
    • 2022-09-27
    • 1970-01-01
    • 2015-09-30
    • 2010-09-05
    相关资源
    最近更新 更多