0

YQL 返回在其 XML 输出中检索到的记录数:

<query xmlns:yahoo="http://www.yahooapis.com/v1/base.rng"
    yahoo:count="2" yahoo:created="2012-08-24T14:02:32Z" yahoo:lang="en-US">
    <diagnostics>

但是我一直在尝试使用我自己的自定义开放数据表,至少使用execute包含 JavaScript 的块来创建响应,并且无论我如何创建响应,当我使用表进行查询时,该count字段始终设置为1.

我还在文档中进行了挖掘,似乎找不到任何解决此问题的方法。

这是设计使然吗?它是一个错误吗?我错过了什么明显的东西吗?

4

1 回答 1

1

这通常是由于只返回一个 result 引起的,这并不奇怪。根据我自己的经验,最常见的原因是忘记指定itemPath适合<select>.

拿下面的例子,看看response.object结构和itemPath组合如何给出查询结果。

没有itemPath

<select itemPath="" produces="XML">
    <execute>
        <![CDATA[
        response.object = <letters>
            <letter>A</letter>
            <letter>B</letter>
            <letter>C</letter>
        </letters>
        ]]>
    </execute>
</select>

生成类似于以下内容的查询结果:

<query xmlns:yahoo="http://www.yahooapis.com/v1/base.rng"
    yahoo:count="1" yahoo:created="…" yahoo:lang="en-US">
    <results>
        <letters>
            <letter>A</letter>
            <letter>B</letter>
            <letter>C</letter>
        </letters>
    </results>
</query>

itemPath="letters"

<select itemPath="letters" produces="XML">
…
</select>

产生与前一个结果相同的查询结果。

<query xmlns:yahoo="http://www.yahooapis.com/v1/base.rng"
    yahoo:count="1" yahoo:created="…" yahoo:lang="en-US">
    <results>
        <letters>
            <letter>A</letter>
            <letter>B</letter>
            <letter>C</letter>
        </letters>
    </results>
</query>

itemPath="letters.letter"

<select itemPath="letters.letter" produces="XML">
…
</select>

请注意,现在,路径指定了letter项目的集合。这会产生类似于以下内容的查询结果:

<query xmlns:yahoo="http://www.yahooapis.com/v1/base.rng"
    yahoo:count="3" yahoo:created="…" yahoo:lang="en-US">
    <results>
        <letter>A</letter>
        <letter>B</letter>
        <letter>C</letter>
    </results>
</query>
于 2012-08-27T22:49:33.963 回答