2013-03-06 44 views
6

我想使用XSLT和<x:transform>标记生成一个JSP。但是我的文件系统中没有XML文件,我无法导入它,如:<c:import url="./xml/MyXml.xml" var="xmldoc"/>。它是在Java代码中动态生成的,并设置为String来请求属性。 我尝试做这样的:我可以从动态生成的XML创建JSP吗?

<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

根据[this](http://www.tutorialspoint.com/jsp/jstl_xml_transform_tag.htm)它应该是有效的。我相信,这个问题在'c:import'指令中。只是为了测试目的,尝试使用绝对URL(fe' http:// localhost:8080/myapp/xsl/MyStylesheet.xsl'),如果它有效,那么你可以尝试使用'$ {pageContext.servletContext.servletContextName ''或类似的东西。 – n1ckolas 2013-03-06 16:05:36

+0

谢谢。但我尝试过像''。它的工作。我认为原因不是'c:import'。但我会尝试更多地使用whis的路径。 – user2140493 2013-03-06 17:08:58

+0

这就是我所说的:而不是''请尝试使用''看看会发生什么。 – n1ckolas 2013-03-06 17:10:56

回答

0

您无需尝试设置您可以直接将您的请求值引用到<x:transform>标记中的值。

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

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

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

两者都应该工作。

相关问题