如何将html作为xml用于XSLT转换用法?

时间:2014-09-02 18:33:54

标签: html xml xslt yql

我想用带有YQL的HTML页面进行一些XSLT转换。以下行用于获取HTML:

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

如何将select * from xslt where ...应用于之前的结果?

2 个答案:

答案 0 :(得分: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以匹配您的查询。

答案 1 :(得分:-1)

请注意,HTML不是基于XML的语言(尽管是XHTML)。如果您想使用XML工具对HTML进行操作,则需要找到HTML解析器(例如基于Apache Xerces的nekohtml)或使用类似W3C的{{3}将HTML预转换为XHTML。工具。