2013-03-06 24 views
6

XSLTと<x:transform>タグを使用してJSPを生成したいとします。しかし、私はファイルシステム上にXMLファイルを持っていません。私はそれを<c:import url="./xml/MyXml.xml" var="xmldoc"/>のようにインポートすることはできません。これはJavaコードで動的に生成され、属性を要求する文字列として設定されます。 私はこのようにそれを行う試してください。動的に生成された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-document(文字列ではない)のみを想定しています。どうしたらいいですか?あるいは、これを行う別の方法がありますか?

+1

[this](http://www.tutorialspoint.com/jsp/jstl_xml_transform_tag.htm)によると、これは動作するはずです。私は、その問題は 'c:import'指令にあると信じています。テストの目的のために、絶対URL( 'http:// localhost:8080/myapp/xsl/MyStylesheet.xsl')を使用してみてください。動作している場合は、$ {pageContext.servletContext.servletContextName } 'またはこのようなものです。 – n1ckolas

+0

ありがとうございます。しかし、私は 'そしてそれは働いた。理由は「c:import」ではないと思います。しかし、私はwhisパスをもっとプレーしようとします。 – user2140493

+0

これは私が話していることです: ''の代わりに ''何が起こるかを見てください。 – n1ckolas

答えて

0

<x:transform>タグのリクエスト値を直接参照できる値を設定する必要はありません。

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

デフォルトでは、jstlは要求スコープを使用します。したがって、request.setAttribute( "someXmlString"、xmlStr)のような値を設定した場合は、

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

両方とも動作するはずです。

関連する問題