0

有人可以给我一些指导,告诉我如何找到所有由约翰尼·德普主演、在同一年使用 XSL 1.0 制作的电影对,同时确保每对只输出一次,更具体地说,只输出第二对电影@id 大于第一部电影@id,如下所示:

<same_year actor="Johnny Depp">
<pair year="..">
<movie id=".."> ... </movie>
<movie id=".."> ... </movie>
</pair>
...
</same_year>

XML:

<movie id="475" imdb_id="0107207">
<title>In the Name of the Father</title>
<year>1993</year>
<critic_rating>7.6</critic_rating>
<critic_num_reviews>39</critic_num_reviews>
<critic_score>94</critic_score>
<audience_rating>4.0</audience_rating>
<audience_num_ratings>10715</audience_num_ratings>
<audience_score>92</audience_score>
<directors>
<director>Jim Sheridan</director>
</directors>
<actors>
<actor rank="1">Daniel Day-Lewis</actor>
<actor rank="2">Pete Postlethwaite</actor>
<actor rank="3">Emma Thompson</actor>
<actor rank="4">John Lynch</actor>
...
<actor rank="60">Philip King</actor>
</actors>
<countries>
<country>Ireland</country>
</countries>
</movie>

谢谢。

4

1 回答 1

0

类似以下的东西应该可以工作(未经测试):

<same_year actor="Johnny Depp">
    <xsl:for-each select="movie[actor = 'Johnny Depp']">
        <xsl:variable name="movie1" select="."/>
        <xsl:for-each select="../movie[actor = 'Johnny Depp' and year = $movie1/year and @id &gt; $movie1/@id]">
            <pair year="{year}">
                <xsl:copy-of select="$movie1"/>
                <xsl:copy-of select="."/>
            </pair>
        </xsl:for-each>
    </xsl:for-each>
</same_year>

for-each每对符合条件的电影都有两个循环循环。

于 2013-05-08T14:50:29.310 回答