2014-10-27 51 views
0

我想做類似於瀏覽器加載網頁時的功能。 我希望客戶端能夠請求一個XML頁面。然後,客戶端接收XML頁面並進行保存,然後讀取文件以查看是否需要更多文件/資源​​等等,直到該XML頁面所需的所有資源都位於客戶端計算機上。使用XSLT如何以自舉加載方式從XML獲取資源鏈接?

客戶端正在運行Java。我希望儘可能多地使用XSLT處理XML。 Java將處理文件打開,保存和http請求。

一個例子。客戶端收到這個XML文件

<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet type="text/xsl" href="optimus.xsl"?> 

<Bus name="happy fun"> 
    <Picture image="red.gif"/> 
</Bus> 

所以我想在客戶端,然後處理文件,實現它需要從服務器上的文件optimus.xsl和red.gif要求。 java會做什麼。

我可以用XSLT獲取圖片/ @圖片屬性。但是我不能用XSLT讀取「xml-stylesheet」。有什麼更好的嗎?

回答

2

您可以用<xsl:template match="processing-instruction('xml-stylesheet')">分別選擇<xsl:variable name="pi" select="//processing-instruction('xml-stylesheet')"/>來處理加工指令。然後您需要使用字符串處理解析出內容,或者檢查您的XSLT處理器是否支持像Saxon 9那樣的擴展(http://saxonica.com/documentation/html/functions/saxon/get-pseudo-attribute.html),您可以在其中執行<xsl:template match="processing-instruction('xml-stylesheet')"><xsl:value-of select="saxon:get-pseudo-attribute('href')"/>...</xsl:template>

+0

太棒了!我不知道你可以這樣做:非常感謝。 – TinyRacoon 2014-10-27 11:31:42

+1

您應該[**接受**](http://meta.stackoverflow.com/q/5234/234215)這個答案來獎勵我們的輝煌馬丁Honnen幫助和讓未來的讀者知道這是一個很好的解決方案。謝謝。 – kjhughes 2014-10-27 12:06:40