我在 DSpace 6.2 上使用 XMLUI (Mirage) 并尝试将“下载次数最多的项目”插入主页。
我已经为此找到了 SOLR 查询,即(在 page-structure.xsl 中):
<xsl:variable name="statsURL">
<xsl:text>http://localhost/solr/statistics</xsl:text>
</xsl:variable>
<xsl:apply-templates select="document(concat($statsURL,'/select?q=type:0+-isBot:true+statistics_type:view&wt=xml&indent=true&facet=true&facet.field=id&facet.sort=count&facet.limit=10'))" mode="mostdownloaded"/>
此查询返回一个 xml 文档:
<response>
+<result name="response" numFound="8" start="0"></result>
-<lst name="facet_counts">
<lst name="facet_queries"/>
-<lst name="facet_fields">
-<lst name="id">
<int name="49b63c98-122c-40d4-9181-2ad4db8853c9">8</int>
<int name="061c72a0-3edc-4e17-8f33-4e7f6ce4573a">0</int>
<int name="0e124f85-4636-4eb5-85cb-2e4afd3e3ed0">0</int>
<int name="19095190-9074-4a4a-bb59-abcb539c8c38">0</int>
<int name="1e5350e0-83d9-4f26-bd76-e5d660254ee6">0</int>
<int name="432038ee-a7d7-4c69-80c1-02641e105286">0</int>
<int name="6b70eeea-be33-4489-8370-189ef041ba93">0</int>
<int name="9a8cd24e-3d88-43fc-8e92-b4e2c6142fbc">0</int>
<int name="bba37b59-7edc-453c-87d2-4039e432217b">0</int>
<int name="cc78e683-9563-49df-b5cf-35d506b4a27d">0</int>
</lst>
</lst>
<lst name="facet_dates"/>
<lst name="facet_ranges"/>
<lst name="facet_intervals"/>
</lst>
</response>
然后,我将其与模板匹配,如下所示:
<xsl:template match="/response/lst/lst/lst/int" mode="most-downloaded">
<div class="most_downloaded">
<xsl:value-of select="./@name"/>
</div>
<div class="downloaded_count">
<xsl:value-of select="text()"/>
</div>
</xsl:template>
我希望看到“most_downloaded”类的 8 个 div,每个都包含项目的 id,并穿插着另外 8 个包含实际值的“downloaded_count”类的 div。我确实看到了这些 div,但在它们之上,我得到了所有 XML 文本节点的转储。我认为这是由于我对模板匹配的理解不足而发生的。
我的问题是:
i) 我的查询是否正确,以获取下载最多的项目列表?我试图对此进行测试,但没有收到积极的结果。
ii) 匹配模板的正确方法是什么?/response/lst/lst/lst/int 听起来不对。
iii) 如何使用 id(我相信它是数据库中的项目 uuid)通过 cocoon 获取 mets.xml 数据?
iv) 有没有更简单的方法来做这一切?
谢谢你的帮助。