2013-03-06 9 views
6

XSLT ve <x:transform> etiketini kullanarak bir JSP oluşturmak istiyorum. Ancak dosya sistemimde bir XML dosyası yok ve bunu şu şekilde içe aktaramıyorum: <c:import url="./xml/MyXml.xml" var="xmldoc"/>. Java kodunda dinamik olarak oluşturulur ve öznitelik isteği için Dize olarak ayarlanır. Denemek böyle yapmak:Dinamik olarak oluşturulmuş XML'den bir JSP oluşturabilir miyim?

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

veya

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

Ama bu işe yaramıyor. Görünüşe göre, <x:transform> sadece bir xml belgesi (bir dizi değil) bekler. Nasıl yapabilirim? Yoksa bunu yapmanın başka bir yolu var mı?

+1

[Buna göre] (http://www.tutorialspoint.com/jsp/jstl_xml_transform_tag.htm) çalışıyor olması gerekiyordu. İnanıyorum ki, bu konu 'c: import' direktifindedir. Sadece test amaçlı olarak mutlak URL'yi kullanmaya çalışın (fe 'http: // localhost: 8080/myapp/xsl/MyStylesheet.xsl) ve eğer çalışıyorsa, o zaman $ {pageContext.servletContext.servletContextName ile oynamayı deneyebilirsiniz. } 'veya bunun gibi bir şey. – n1ckolas

+0

Teşekkürler. Ama ' 'dönüştürün. Ve çalıştı. Bence neden 'c: import' değil. Ama ben daha çok whis yolunu çalmaya çalışacağım. – user2140493

+0

Konuştuğum şey şu: 'yerine ' ve ne olduğunu görün. – n1ckolas

cevap

0

<x:transform> etiketinizde doğrudan istek değerine başvurabileceğiniz değeri ayarlamaya çalışmamalısınız.

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

Varsayılan olarak jstl, istek kapsamını kullanır. Yani request.setAttribute ("someXmlString", xmlStr) gibi bir değer ayarlarsanız; o zaman her ikisi de çalışmalıdır.