2014-01-13 30 views
0

验证XML数据库时,我想到了以下想法:我应该用Google过滤所有单词。那些命中不到100的单词会有些怀疑。xslt筛选100个以下谷歌匹配的项目

但是,我怎样才能实现这一点使用XSLT?我成功地隔离了每一个单词。但是,我怎样才能获得每个单词的Google点击次数?我绝对不知道,https://developers.google.com/根本没有帮助。

(我们谈论的是一些4000的话,我不认为谷歌的服务器会垮掉,因为4000名的请求。)

+0

XSLT是一种XML *转换*语言,而不是通用编程语言。没有切实可行的方法来做你想做的事(*用XSLT *)。用你选择的通用编程语言来做。 – Tomalak

+0

@Tomalak我已经提供了一个答案,表明可以在XSLT中完成所需的一些操作 - 显然不是验证。 – 2014-01-14 01:20:10

+0

@Lego我知道你可以使用'document()' - 更小的问题是XSLT 1.0没有URL编码功能,更大的问题是Google实际上并没有提供XML文档。你可能可以让它工作*不知何故,考虑到网络抓取有更好的选择,这仍然是浪费时间。 – Tomalak

回答

0

理论上,可以据以对转型(未验证)上这种想法,如果你可以找到一种方法来获取来自谷歌的点击数的XML格式。它只是需要有趣的使用document() function.

可以说我有一个XML文档,并希望只输出某些元素有超过1000谷歌命中。我们将假设我们想要根据文档中的<term>元素进行限制,并将从identity transform开始。

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:template match="@*|node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:copy> 
    </xsl:template> 

    <!-- Interesting code starts here: --> 

    <xsl:template match="term"> 
    <!-- you need to find out what this is --> 
    <xsl:variable name="google" select="'www.google.com/funkyXMLAPI?search='"/> 

    <xsl:variable name="term" select="."/> 
    <xsl:variable name="uri" select="concat($goog,$term)"/> 

    <!-- Again, you'll need to findout what the path to the number of hits is --> 
    <xsl:variable name="hits" select="document($uri)//path/to/numberOfHits"/> 

    <!-- If there are more than 1000 hits, then copy it across --> 
    <xsl:if test="$hits &gt; 1000"> 
     <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 
     <xsl:copy> 
    </xsl:if> 
    </xsl:template> 
</xsl:stylesheet> 

再次,这是所有的预测上存在一个谷歌搜索API,在一个可预测,XML格式返回信息的想法。

+0

谷歌不提供这样的API是一个可怜的事情。我以为他们这样做。我甚至希望可以准备使用XSTL 2.0函数getNumberofSearchHits()。但是,我发现从Google的开发者页面获取所需信息非常困难。 有人知道任何其他网络搜索引擎吗? – cis