Muenchian 分组没有产生任何结果
Posted
技术标签:
【中文标题】Muenchian 分组没有产生任何结果【英文标题】:Muenchian grouping not producing any results 【发布时间】:2014-03-18 23:29:23 【问题描述】:我正在尝试使用 Muenchian 分组来选择一个节点集,该节点集包含以下 XML 文档中每部电影的第一次出现,但我无法返回任何内容...
<poll>
<ballot id="b1">
<movie>NATIONAL LAMPOON'S ANIMAL HOUSE (1978)</movie>
<movie>SILVER STREAK (1976)</movie>
<movie>SOME LIKE IT HOT (1959)</movie>
</ballot>
<ballot id="b2">
<movie>MODERN TIMES (1936)</movie>
<movie>NATIONAL LAMPOON'S ANIMAL HOUSE (1978)</movie>
<movie>SHAMPOO (1975)</movie>
</ballot>
</poll>
以下是我的 xsl...
<xsl:template match="/">
<xsl:for-each select="//ballot[generate-id()=generate-id(key('movies',.)[1])]">
<xsl:value-of select="movie" />
</xsl:for-each>
</xsl:template>
【问题讨论】:
【参考方案1】:你们很亲密。
首先,您需要更新您的密钥:
<xsl:key name="movies" match="movie" use="." />
通过将 movie 放在 use=
中,您是在说“使用电影下的电影”,这是不正确的。
接下来,您的 for-each
将上下文设置为 ballot,这意味着根据您的输入,它只会运行两次。我相信您实际上希望上下文是 movie,这样它就会遍历与您的键匹配的每部电影。如下所示:
<xsl:for-each select="//ballot/movie[generate-id()=generate-id(key('movies',.)[1])]">
<tr><xsl:value-of select="." /></tr>
</xsl:for-each>
作为旁注,您还需要修复表格的制作方式,因为您只为每部电影输出 <tr>
,而没有 <td>
或类似内容。但是我敢肯定,一旦解决了这个问题,您就会做到这一点。
【讨论】:
以上是关于Muenchian 分组没有产生任何结果的主要内容,如果未能解决你的问题,请参考以下文章