2011-05-03 100 views
1

我在處理正確的語句以返回唯一的值列表時遇到了一些問題。以下路徑僅僅是一個例子,與我的困境類似。XSLT 1祖先的不同選擇

/Root/Books/Book/Writers/Writer/Fullname 

什麼將返回「fullnames」的唯一列表,記住,這裏的假設是有多個作者的每本書,他們可能參與了多本書籍。

感謝您的幫助

這裏是XML文檔

<Root> 
    <Books> 
     <Book> 
      <Title>Book A</Title> 
      <Writers> 
       <Writer>Jon Smith</Writer> 
       <Writer>Peter Smith</Writer> 
      </Writers> 
     </Book> 
     <Book> 
      <Title>Book B</Title> 
      <Writers> 
       <Writer>Jon Smith</Writer> 
       <Writer>Peter Smith</Writer> 
       <Writer>James Bloggs</Writer> 
      </Writers> 
     </Book> 
     <Book> 
      <Title>Book C</Title> 
      <Writers> 
       <Writer>Bob Peterson</Writer> 
       <Writer>Peter Smith</Writer> 
       <Writer>James Bloggs</Writer> 
      </Writers> 
     </Book> 
    </Books> 
</Root> 

我想退是不同的作家名單的一個例子。

Jon Smith Peter Smith James Bloggs Bob Peterson。

這是棘手的,因爲有多個作家多本書。

+0

很辛苦,沒有看到輸入XML說。 – 2011-05-03 07:32:16

+1

[使用Muenchian方法分組](http://www.jenitennison.com/xslt/grouping/muenchian.html) – 2011-05-03 09:49:21

+0

我一直在玩「前面的」語句,但仍似乎無法得到它。下面是一個XML文檔示例: – Jon 2011-05-03 23:54:22

回答

0

按照羅伯特的link,只是做分組配方的第一步:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

<xsl:template match="/"> 
    <xsl:copy-of select='Root/Books/Book/Writers/Writer[not(preceding::Writer = .)]'/> 
</xsl:template> 

</xsl:stylesheet> 
+0

真棒,感謝您的幫助,我只是剛剛關閉。我有一種感覺,那就是隻會返回獨特的作家PER書目列表,而不是一堆書。謝謝,通過XSLT瞭解了一些新內容。 – Jon 2011-05-04 12:05:53

+0

要獲得每本書的相同內容,請將'preceding'替換爲'prior-sibling'。 – 2011-05-04 12:14:25