Advertisement
Guest User

Untitled

a guest
Apr 18th, 2014
33
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.32 KB | None | 0 0
  1. <mediaList>
  2. <movie id="1299349" dateCreated="2014-04-11" lastModified="2014-04-12">
  3. <title>
  4. <titleSort>Armageddon</titleSort>
  5. </title>
  6. <director>
  7. <personTerm type="code" authority="lccn">no98124072</personTerm>
  8. <personTerm type="text">Bay, Michael, 1964-</personTerm>
  9. </director>
  10. <genre>Action and adventure</genre>
  11. <genre>Disaster</genre>
  12. <writer>
  13. <personTerm type="code" authority="lccn">n91119795</personTerm>
  14. <personTerm type="text">Hensleigh, Jonathan</personTerm>
  15. </writer>
  16. <writer>
  17. <personTerm type="code" authority="lccn">no98124254</personTerm>
  18. <personTerm type="text">Abrams, J. J. (Jeffrey Jacob), 1966-</personTerm>
  19. </writer>
  20. <screenplay href="http://endeavor.flo.org/vwebv/holdingsInfo?bibId=578717">PN1997 .A73 1997a</screenplay>
  21. <language>
  22. <languageTerm type="code" authority="iso639-2">eng</languageTerm>
  23. <languageTerm type="text">English</languageTerm>
  24. </language>
  25. <year>1998</year>
  26. <callNumber href="http://endeavor.flo.org/vwebv/holdingsInfo?bibId=1299349">[DVD] PN1995.9 .A3 B39 1999</callNumber>
  27. </movie>
  28. <movie id="1324917" dateCreated="2014-04-13">
  29. <title>
  30. <titleSort>Police Story 2</titleSort>
  31. </title>
  32. <director>
  33. <personTerm type="code" authority="lccn">no96039667</personTerm>
  34. <personTerm type="text">Cheng, Long, 1954-</personTerm>
  35. </director>
  36. <genre>Martial arts</genre>
  37. <genre>Buddy</genre>
  38. <writer>
  39. <personTerm type="code" authority="lccn">no96039667</personTerm>
  40. <personTerm type="text">Cheng, Long, 1954-</personTerm>
  41. </writer>
  42. <writer>
  43. <personTerm type="code" authority="lccn">no2005066079</personTerm>
  44. <personTerm type="text">Tang, Edward, 1946-</personTerm>
  45. </writer>
  46. <language>
  47. <languageTerm type="code" authority="iso639-3">yue</languageTerm>
  48. <languageTerm type="text">Yue Chinese</languageTerm>
  49. </language>
  50. <year>1988</year>
  51. <callNumber href="http://endeavor.flo.org/vwebv/holdingsInfo?bibId=1324917">[DVD] PN1995.9 .A3 C52 2006</callNumber>
  52. </movie>
  53. </Medialist
  54.  
  55. <?xml version="1.0" encoding="UTF-8"?>
  56. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
  57. <xsl:output method="html"/>
  58. <xsl:template match="/">
  59. <html>
  60. <head>
  61. <link rel="stylesheet" type="text/css" href="mediaList.css"/>
  62. <title/>
  63. </head>
  64. <body>
  65. <table>
  66.  
  67. <tr>
  68. <th>Title</th>
  69. <th>Director</th>
  70. <th>Genre</th>
  71. <th>Writer</th>
  72. <th>Screenplay</th>
  73. <th>Source</th>
  74. <th>Language</th>
  75. <th>Year</th>
  76. <th>Call Number</th>
  77. </tr>
  78.  
  79. <xsl:for-each select="mediaList/movie">
  80. <tr>
  81. <td>
  82. <xsl:apply-templates select="./title"/>
  83. </td>
  84. <td>
  85. <xsl:apply-templates select="./director/personTerm[@type='text']"/>
  86. </td>
  87. <xsl:choose>
  88. <xsl:when test="count(./genre) > 1">
  89. <td>
  90. <xsl:call-template name="recursiveGenre">
  91. <xsl:with-param name="numberG" select="count(./genre)"/>
  92. </xsl:call-template>
  93. <xsl:value-of select="./genre[1]"/>
  94. </td>
  95. </xsl:when>
  96. <xsl:otherwise>
  97. <td>
  98. <xsl:value-of select="./genre"/>
  99. </td>
  100. </xsl:otherwise>
  101. </xsl:choose>
  102.  
  103. <xsl:choose>
  104. <xsl:when test="count(./writer) > 1">
  105. <td>
  106. <xsl:call-template name="recursive">
  107. <xsl:with-param name="number" select="count(./writer)"/>
  108. </xsl:call-template>
  109. <xsl:value-of select="writer[1]/personTerm[@type='text']"/>
  110. </td>
  111. </xsl:when>
  112. <xsl:otherwise>
  113. <td>
  114. <xsl:value-of select="writer/personTerm[@type='text']"/>
  115. </td>
  116. </xsl:otherwise>
  117. </xsl:choose>
  118.  
  119. <td>
  120. <xsl:apply-templates select="screenplay"/>
  121. </td>
  122. <td>
  123. <xsl:apply-templates select="source"/>
  124. </td>
  125. <td>
  126. <xsl:value-of select="./language/languageTerm[@type='text']"/>
  127. </td>
  128. <td>
  129. <xsl:value-of select="./year"/>
  130. </td>
  131. <td>
  132. <xsl:apply-templates select="callNumber"/>
  133. </td>
  134. </tr>
  135. </xsl:for-each>
  136. </table>
  137. </body>
  138. </html>
  139. </xsl:template>
  140.  
  141. <xsl:template match="title">
  142. <xsl:if test="./nonSort">
  143. <xsl:value-of select="./nonSort"/>
  144. <xsl:text> </xsl:text>
  145. </xsl:if>
  146. <xsl:value-of select="./titleSort"/>
  147. </xsl:template>
  148.  
  149. <xsl:template name="recursive">
  150. <xsl:param name="number"/>
  151. <xsl:if test="$number > 1">
  152. <xsl:value-of select="writer[$number]/personTerm[@type='text']"/>
  153. <xsl:text> / </xsl:text>
  154. <xsl:call-template name="recursive">
  155. <xsl:with-param name="number" select="$number - 1"/>
  156. </xsl:call-template>
  157. </xsl:if>
  158. </xsl:template>
  159.  
  160. <xsl:template name="recursiveGenre">
  161. <xsl:param name="numberG"/>
  162. <xsl:if test="$numberG > 1">
  163. <xsl:value-of select="genre[$numberG]"/>
  164. <xsl:text> / </xsl:text>
  165. <xsl:call-template name="recursiveGenre">
  166. <xsl:with-param name="numberG" select="$numberG - 1"/>
  167. </xsl:call-template>
  168. </xsl:if>
  169. </xsl:template>
  170.  
  171. <xsl:template match="screenplay | source | callNumber">
  172. <a>
  173. <xsl:attribute name="href">
  174. <xsl:value-of select="./@href"/>
  175. </xsl:attribute>
  176. <xsl:value-of select="."/>
  177. </a>
  178. </xsl:template>
  179.  
  180. </xsl:stylesheet>
  181.  
  182. <table>
  183.  
  184. <tr>
  185. <th>Genre</th>
  186. <th>Title</th>
  187. <th>Director</th>
  188. <th>Writer</th>
  189. <th>Screenplay</th>
  190. <th>Source</th>
  191. <th>Language</th>
  192. <th>Year</th>
  193. <th>Call Number</th>
  194. </tr>
  195. <tr><td>Action and Adventure</td>
  196. <td>Some Action/Comedy Title</td>
  197. ...
  198. </tr>
  199. <tr><td>Action and Adventure</td>
  200. <td>Some Action/Comedy Title - The Return</td>
  201. ...
  202. </tr>
  203. <tr><td>Action and Adventure</td>
  204. <td>Revenge of the Action/Comedy Title</td>
  205. ...
  206. </tr>
  207. <tr><td>Comedy</td>
  208. <td>Some Action/Comedy Title</td>
  209. ...
  210. <tr><td>Comedy</td>
  211. <td>Some Action/Comedy Title - The Return</td>
  212. </tr>
  213. <tr><td>Comedy</td>
  214. <td>Revenge of the Action/Comedy Title</td>
  215. ...
  216. </tr>
  217. </table>
  218.  
  219. <xsl:key name="genre" match="genre" use="." />
  220.  
  221. <xsl:key name="language" match="language" use="languageTerm[@type='text']" />
  222.  
  223. <xsl:key name="languageTerm" match="languageTerm[@type='text']" use="." />
  224.  
  225. <xsl:param name="groupBy" select="'genre'" />
  226.  
  227. <xsl:apply-templates select="movie//*[local-name() = $groupBy]
  228. [generate-id() = generate-id(key($groupBy, .)[1])]" />
  229.  
  230. <xsl:apply-templates select="key($groupBy, .)/ancestor::movie" />
  231.  
  232. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
  233. <xsl:output indent="yes"/>
  234. <xsl:output method="html" indent="yes" />
  235.  
  236. <xsl:key name="genre" match="genre" use="." />
  237. <xsl:key name="languageTerm" match="languageTerm[@type='text']" use="." />
  238.  
  239. <xsl:param name="groupBy" select="'genre'" />
  240.  
  241. <xsl:template match="/*">
  242. <xsl:apply-templates select="movie//*[local-name() = $groupBy][generate-id() = generate-id(key($groupBy, .)[1])]" />
  243. </xsl:template>
  244.  
  245. <xsl:template match="movie//*">
  246. <h1><xsl:value-of select="." /></h1>
  247. <ul>
  248. <xsl:apply-templates select="key($groupBy, .)/ancestor::movie" />
  249. </ul>
  250. </xsl:template>
  251.  
  252. <xsl:template match="movie">
  253. <li><xsl:value-of select="title" /></li>
  254. </xsl:template>
  255. </xsl:stylesheet>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement