2013-05-08 71 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循環每對符合條件的電影遍歷。