验证XML数据库时,我想到了以下想法:我应该用Google过滤所有单词。那些命中不到100的单词会有些怀疑。xslt筛选100个以下谷歌匹配的项目
但是,我怎样才能实现这一点使用XSLT?我成功地隔离了每一个单词。但是,我怎样才能获得每个单词的Google点击次数?我绝对不知道,https://developers.google.com/根本没有帮助。
(我们谈论的是一些4000的话,我不认为谷歌的服务器会垮掉,因为4000名的请求。)
验证XML数据库时,我想到了以下想法:我应该用Google过滤所有单词。那些命中不到100的单词会有些怀疑。xslt筛选100个以下谷歌匹配的项目
但是,我怎样才能实现这一点使用XSLT?我成功地隔离了每一个单词。但是,我怎样才能获得每个单词的Google点击次数?我绝对不知道,https://developers.google.com/根本没有帮助。
(我们谈论的是一些4000的话,我不认为谷歌的服务器会垮掉,因为4000名的请求。)
理论上,可以据以对转型(未验证)上这种想法,如果你可以找到一种方法来获取来自谷歌的点击数的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 > 1000">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
<xsl:copy>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
再次,这是所有的预测上存在一个谷歌搜索API,在一个可预测,XML格式返回信息的想法。
谷歌不提供这样的API是一个可怜的事情。我以为他们这样做。我甚至希望可以准备使用XSTL 2.0函数getNumberofSearchHits()。但是,我发现从Google的开发者页面获取所需信息非常困难。 有人知道任何其他网络搜索引擎吗? – cis
XSLT是一种XML *转换*语言,而不是通用编程语言。没有切实可行的方法来做你想做的事(*用XSLT *)。用你选择的通用编程语言来做。 – Tomalak
@Tomalak我已经提供了一个答案,表明可以在XSLT中完成所需的一些操作 - 显然不是验证。 – 2014-01-14 01:20:10
@Lego我知道你可以使用'document()' - 更小的问题是XSLT 1.0没有URL编码功能,更大的问题是Google实际上并没有提供XML文档。你可能可以让它工作*不知何故,考虑到网络抓取有更好的选择,这仍然是浪费时间。 – Tomalak