2013-01-07 209 views
1

我在學習XSLT,並遇到了一個問題。我想要做的是從網站中提取一些數據,使用xslt模板進行轉換,最後將其顯示在我自己的xhtml頁面中。使用XSLT從網站提取數據

可以說我有一個XML文件(這將是我的XHTML網站):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<?xml-stylesheet type="text/xsl" href="myXSLTFile.xsl"?> 


<!--here I want to have markup produced by xslt file--> 

的問題是如何實現這一目標?我想讓我的xslt文件在特定網站的節點上工作(例如http://www.example.com),並將結果生成到我自己的xml文件中。

如果您發現我的解釋令人困惑,請詢問我會盡力更好地解釋這個問題。

編輯。我會舉一個例子。可以說我們有這個頁面:http://www.w3.org/TR/xhtml1/。我想開發XSLT文檔,從全部目錄中提取章節和章節的標題,並將它們放入我自己的xml文件中的表格中。 我遇到的問題是如何在我的xslt文件中引用頁面:http://www.w3.org/TR/xhtml1/,以便它可以在其節點上工作(此頁面是用xhtml編寫的,因此我不必擔心將html轉換爲xml)。

EDIT2。經過進一步的研究,似乎Thomas W.的答案是解決問題的方法,但是您必須處理XSS問題(LarsH的答案提示)。

+0

這是一個'多少字符串'的問題。你想要提取什麼,你的服務器是什麼,你有什麼工作 – Woody

回答

1

從理論上說,你可以不喜歡

<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet type="text/xsl" href="test.xsl"?> 
<page href="http://www.w3.org/TR/xslt/index.htm"/> 

,並有像

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://www.w3.org/1999/xhtml"> 

    <xsl:template match="/"> 
    <html> 
     <head></head> 
     <body> 
     <xsl:for-each select="document(*/@href)//h:h2"> 
      <xsl:copy-of select="."/> 
     </xsl:for-each> 
     </body> 
    </html> 
    </xsl:template> 

</xsl:stylesheet> 

樣式表但這並沒有真正跨瀏覽器的工作(鉻而已,因爲在我看來) 。一個原因可能是阻止加載外部頁面的XSS安全功能。

+0

我很抱歉,但它不適用於我。它只會產生空的身體。 –

+1

如果您使用「--disable-web-security」開關啓動Chrome,那麼它適用於我。不確定其他瀏覽器是否具有類似的開關,但是當然,您不能要求網頁的觀看者重新啓動瀏覽器,以關閉安全功能來規避XSS阻塞。 –

+0

所以沒有其他辦法可以做到這一點? :( –

1

一對夫婦的方式來解決XSS限制......看到AJAX and Cross-Site Scripting to Read the Header

  • 到代理添加本地PHP或其他服務器頁面到其他網站。
  • 使用CORS
+0

謝謝你的回答。經過進一步的研究,我發現這似乎是解決方案。 –

+0

+1有用的鏈接:) –