我可以从动态生成的 XML 创建 JSP 吗?

6

我想使用XSLT和<x:transform>标签生成一个JSP页面。但是我的文件系统上没有XML文件,也无法像这样导入它:<c:import url="./xml/MyXml.xml" var="xmldoc"/>。它在Java代码中动态生成,并作为字符串设置为请求属性。

我尝试像这样做:

<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>

但它没有起作用。看起来 <x:transform> 只接受xml文档(不是字符串)。我该怎么办?还是有其他方法可以做到这一点?


1
根据这个链接,它应该是可以工作的。我相信问题在于c:import指令。只是为了测试目的,尝试使用绝对URL(例如http://localhost:8080/myapp/xsl/MyStylesheet.xsl),如果它可以工作,那么你可以尝试使用${pageContext.servletContext.servletContextName}或类似的东西。 - n1ckolas
谢谢。但我已经尝试过像'<c:import url="./xsl/MyStylesheet.xsl" var="xsltdoc"/> <c:import url="./xsl/MyXml.xml" var="xmldoc"/> <x:transform xml="${xmldoc}" xslt="${xsltdoc}"/>'这样的代码,它可以正常工作。我认为问题不在于'c:import',但我会继续尝试这个路径。 - user2140493
这就是我所说的:请尝试使用<c:import url="http://localhost:8080/myapp/xsl/MyStylesheet.xsl" var="xsltdoc"/>,而不是<c:import url="./xsl/MyStylesheet.xsl" var="xsltdoc"/>,看看会发生什么。 - n1ckolas
抱歉,我不小心发布了一篇上一篇帖子。我已经进行了编辑。 - user2140493
参见示例http://www.tutorialspoint.com/jsp/jsp_xml_data.htm - prem30488
1个回答

0

您无需尝试设置该值,可以直接在<x:transform>标签中引用请求值。

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

默认情况下,JSTL 使用请求范围。因此,如果您像 request.setAttribute("someXmlString", xmlStr) 这样设置值,则可以直接调用

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

两种方法都可以使用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接