【问题标题】:Muenchian grouping not producing any resultsMuenchian 分组没有产生任何结果
【发布时间】: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>

【问题讨论】:

    标签: xml xslt muenchian-grouping


    【解决方案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>
    

    作为旁注,您还需要修复表格的制作方式,因为您只为每部电影输出 &lt;tr&gt;,而没有 &lt;td&gt; 或类似内容。但是我敢肯定,一旦解决了这个问题,您就会做到这一点。

    【讨论】:

      猜你喜欢
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-24
      • 2020-02-25
      • 1970-01-01
      相关资源
      最近更新 更多