我可以从动态生成的XML创建JSP吗?
问题描述:
我想使用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文档(不是字符串)。我该怎么做?还是有另一种方法来做到这一点?
答
您无需尝试设置您可以直接将您的请求值引用到<x:transform>
标记中的值。
<x:transform xml="${requestScope.someXmlString}" xslt="${xsltdoc}"/>
默认情况下,jstl使用请求范围。所以,如果你设置值像request.setAttribute(“someXmlString”,xmlStr);那么你可以直接拨打
<x:transform xml="${someXmlString}" xslt="${xsltdoc}"/>
两者都应该工作。
根据[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
谢谢。但我尝试过像' '。它的工作。我认为原因不是'c:import'。但我会尝试更多地使用whis的路径。 –
user2140493
2013-03-06 17:08:58
这就是我所说的:而不是' '请尝试使用' '看看会发生什么。 –
n1ckolas
2013-03-06 17:10:56