2013-03-06 42 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}"/> 

兩者都應該工作。

相關問題