2014-09-02 67 views
0

我想用YQL做一些HTML頁面的XSLT轉換。下面一行是用來獲取HTML:如何將html作爲xml用於XSLT轉換用法?

select * from html where url="http://example.com/somepage" and 
     xpath='//div[@class="article-text"]' 

如何申請select * from xslt where ...以前的結果呢?

回答

0

不確定,因爲我之前沒有使用過YQL,但我想你必須走另一條路:使用XSLT從HTML中獲取結果,並應用YQL-Query來獲取XML作爲結果:

XSLT:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
<xsl:template match="/"> 
    <xsl:apply-templates select="//div[@class='article-text']" /> 
</xsl:template> 
<xsl:template match="div[@class='article-text']"> 
    <articletext> 
    <xsl:value-of select="."/> 
    </articletext> 
</xsl:template> 

YQL查詢:

select * from xslt where stylesheet="url/name-of.xsl" and 
url="http://example.com/somepage" 

這應導致

<results> 
    <articletext>Text of article</articletext> 
</results> 

由於我不知道YQL但使用XSLT/XPath的工作,我只是用Google搜索一下,發現這個推薦SO例如:YQL column projection using XPATH。我不是僅僅粘貼鏈接,而是調整了提供的示例中的XSLT-Part,以匹配您的查詢。

+0

謝謝。我正在閱讀相同的建議 - 它不起作用,因爲我的'http:// example.com/somepage'返回的是html,而不是xml,而且'我無法處理feed和樣式表:無效的XML文檔'錯誤。 – 2014-09-03 07:35:48

-1

請注意,HTML不是基於XML的語言(儘管XHTML是)。如果您想使用XML工具在HTML上進行操作,您需要找到一個HTML解析器(例如基於Apache Xerces的nekohtml),或者使用類似W3C的tidy工具的方式將HTML預先轉換爲XHTML。

+0

如果我使用YQL執行第一個查詢(http://goo.gl/sqwYhQ),則返回XML(http://goo.gl/eMpzeO)。所以,問題是關於正確的YQL語法來使用我從'select * from xslt'得到的。 – 2014-09-03 07:32:36