2012-12-12 53 views
0

嗨,我試圖執行一個XML-XSL從轉換JSP使用下面的代碼:remove從XSL領先的空白,同時呼籲X:變換

<c:import url="/global/xsl/sub-nav.xsl" var="xslt"/> 
<c:import url="/sitemap.xml" var="xmltext"/> 
<x:transform xml="${xmltext}" xslt="${xslt}"> 
    <x:param name="relativeURL" value="/personal/accounts/"/> 
    <x:param name="fullRelativeURL" value="/personal/accounts/sba/"/> 
</x:transform> 

這裏的問題是,我不能在XSL任何變化文件。它在<?xml version="1.0" encoding="ISO-8859-1"?>之前有一個領先的空間,即xsl的第一行。有沒有辦法可以在從jsp調用轉換時省略該空間?否則,如果我沒有擺脫那個領先空間,它會給出500錯誤。

+0

向我們展示來自服務器的堆棧跟蹤。 –

回答

0

嚴格閱讀XML spec (production 22 "prolog")表示在XML prolog之前不能有空格。因此,具有領先空白的XSL文件被破壞,並且必須被修復。

我想你可以編寫代碼將XSL文件加載到內存中,同時刪除前導空格,然後將更正後的緩衝區傳遞給轉換,而不是原來的XSL ...但這似乎很多工作,並且會每次調用JSP時都會發生。

+0

你建議先生?你剛纔解釋了我的問題。 –

+0

你讀過我的答案的第二段了嗎?如果您無法更改XSL,那麼您必須修復它並緩存副本以供重用或每次重新修復它。沒有辦法告訴XSL處理器接受無效的XML。 –

0

你意識到${xslt}的值是一個字符串,對不對? ;)