XML工房
〔作品2〕Apple iTunes音楽リストのHTML化 |
|
~第3章~ iTunes音楽リストのHTML化(2) |
2006年4月号掲載記事
今回は、iTunesの画面左側にある「最近追加した曲」の情報をHTML化するためのXSLTスタイルシートを作成していきます。
「iTunes Music Library.xml」の「最近追加した曲」(/plist/dict/array/dict)の構造は以下のようになっています。「最近追加した曲」の情報はTrack IDのみを持っており、ジャンル、曲名、アーティスト名、コメントを取得するには、<key>Tracks</key>の子要素(/plist/dict/dict/dict)を参照しなければなりません。
iTunes Music Library.xml |
・ ・ <plist version="1.0"> <dict> ・ ・ <key>Tracks</key> <dict> <key>55</key> <dict> <key>Track ID</key><integer>55</integer> <key>Name</key><string>World Lullabye</string> <key>Artist</key><string>Jane Child</string> ・ <key>Genre</key><string>Pop</string> ・ ・ <key>Comments</key><string>学生時代のお気に入りの曲9</string> ・ ・ </dict> <key>56</key> <dict> <key>Track ID</key><integer>56</integer> <key>Name</key><string>Question</string> <key>Artist</key><string>Jane Child</string> ・ <key>Genre</key><string>Pop</string> ・ ・ <key>Comments</key><string>学生時代のお気に入りの曲10</string> ・ ・ </dict> ・ ・ </dict> <key>Playlists</key> <array> ・ ・ <dict> <key>Name</key><string>最近追加した曲</string> ・ ・ <key>Playlist Items</key> <array> <dict> <key>Track ID</key><integer>55</integer> </dict> <dict> <key>Track ID</key><integer>56</integer> </dict> <dict> <key>Track ID</key><integer>57</integer> </dict> <dict> <key>Track ID</key><integer>58</integer> </dict> <dict> <key>Track ID</key><integer>59</integer> </dict> </array> </dict> </array> </dict> </plist> |
※上記のデータは、一部省略しております。 |
そこで、今回作成するXSLTスタイルシートの処理手順を考えてみると、
- 「最近追加した曲」のTrack IDを取得する。
- 取得した「最近追加した曲」のTrack IDと<key>Tracks</key>の子要素(/plist/dict/dict/dict)のTrack IDの値が同じもののジャンル、曲名、アーティスト名、コメントを出力する。
が一般的なものとなります。この処理手順を盛り込んだXSLTスタイルシートを紹介します。
XSLTスタイルシート |
<?xml version="1.0" encoding="Shift_JIS" ?> <xsl:output method="html" indent="yes" encoding="Shift_JIS" <!-- 最近追加した曲のTrack IDを取得 --> <xsl:template match="/"> <body> <!-- 最近追加した曲の情報を取得 --> </table> <!-- key要素のためのテンプレート --> </xsl:stylesheet> |
このXSLTスタイルシートでは、まず、variable要素を用いて、「最近追加した曲」のTrack IDを取得します。このとき、variable要素のselect属性に、"/plist/dict/array/dict[string[1]='最近追加した曲']/array/dict/integer "と記述することで、該当するノードの値をすべて取得できます。この例では、「55」、「56」、「57」、「58」、「59」がtrack_id変数に格納されます。そして、「最近追加した曲」の情報を取得する際のfor-each要素のselect属性に" plist/dict/dict/dict[integer[1]=$track_id]"と記述しています。曲の情報の中にあるTrack IDの値とtrack_id変数を比較し、同じ場合のみジャンル、曲名、アーティスト名、コメントを出力します。これは「1対n」の比較で、1つでも同じ値があれば真となり、後続の処理を実行します。
実際にXSLT変換ツールでXSLT変換を行なって、確認してみましょう。
今回作成したXSLTスタイルシートは、前回作成したものに少し手を加えただけです。このXSLTスタイルシートを流用して、皆さんがオリジナルで作ったプレイリストをHTML変換することもできると思います。ぜひ、活用してみてください。