2013-05-08 70 views
0

有人可以给我一些指导,关于如何找到所有在同一年使用XSL 1.0制作的约翰尼德普主演的电影对,同时确保每对只输出一次,更具体,只输出对,其中第二电影@id比第一电影@id较大,因为这样的:XML/XSLT输出对

<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> 

感谢。

+1

请分享您至今所做的任何事情。 – 2013-05-08 12:26:37

+2

如果您展示了一个实际包含至少一个Johnny Depp电影的XML样本,它可能会有所帮助。 “以父之名”是一部很好的电影,但我不记得看过约翰尼德普了!另外,约翰尼德普是一个相当努力的演员,所以如果在同一年有三部电影出现,你会想要发生什么?谢谢! – 2013-05-08 12:48:56

+0

你应该把整个事情放到一个数据库中,并使用SQL进行查询。 – Borodin 2013-05-08 13:02:34

回答

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循环每对符合条件的电影遍历。