メディア木龍――「RSSを使ったジャンプメニューを作成するXSLTセット」でXSLT実践お問い合わせツイートフリーツールのページへ戻る「RSSを使ったジャンプメニューを作成するXSLTセット」でXSLT実践このページでは、当サイトで公開している「RSSを使ったジャンプメニューを作成するXSLTセット」の使い方を解説させていただきます。RSS1.0と2.0の構造の理解とXSLTの実践の第一歩としてお役に立てば幸いです。EXCEL2HTMLでXSLT超入門も併せて、設置例についてはお役立ちリンクを、とりあえず設置してみたいという方はどこでもRSSもお試しください。参考にさせていただいたサイト●「RSSを使ったジャンプメニューを作成するXSLTセット」に含まれるものRSSを使ったジャンプメニューを作成するXSLTセットを解凍すると、次のファイルが現れます。sample.xslジャンプメニュー作成用のxslファイルのサンプルです。RSS1.0、RSS2.0に対応しています。sample1.xmlRSS1.0のサンプルです。sample.xslへのリンクも入れてありますので、とりあえずこのファイルをダブルクリックするだけで、ジャンプメニューが表示されることを確認することができます。メディア木龍の新着RSSです。参考にお使いください。sample2.xmlRSS2.0のサンプルです。sample.xslへのリンクも入れてありますので、とりあえずこのファイルをダブルクリックするだけで、ジャンプメニューが表示されることを確認することができます。sample1.xmlをRSS2.0に書き直したものです。参考にお使いください。jump.jsジャンプ用のJavaScriptファイルです。ページトップへ各RSSファイルには、XSLファイルへのリンクが入っていますので、とりあえずジャンプメニューが表示できることを確認することができます。これらのファイルをサーバーにアップして、PHP等を使ってサーバー側で変換することにより、動的に作ることもできます。その例がお役立ちリンクです。お役立ちリンクでは、RSSのアドレスとジャンプメニューの幅を指定して動的に取得しています。そのアドレスを簡単に作れるのがどこでもRSSです。RSS1.0の構造このセットの使い方について説明する前に、まず、RSS1.0とRSS2.0の構造についてから説明させていただきたいと思います。RSS1.0についてです。右図(画像をクリックすると拡大表示できます)を見ると、1行目にXML宣言が入り、2行目にはrdf:RDF要素の属性として名前空間が宣言されています(表示のために2行目のXSLTへのリンクをエスケープしています)。RSS1.0では、標準の名前空間はRSS、その他にRDFやDCの名前空間にある要素を使用しています。標準以外の名前空間で指定されている要素には、頭にrdf:やdc:などの接頭辞がつけられています。その下にchannel要素が入ります。channel要素の下にはtitle、link、dc:date、description、itemsの各要素が入ります。itemsの下にはrdf:Seq要素が入り、図では折りたたまれていますが、その下にはrdf:li要素がズラッと入ります。channel要素はここで終わり、その下にはitem要素が続きます。各item要素の下にはtitle、link、dc:date、descriptionの各要素が入ります。先ほどのchannel要素の下にあったものと同じ名前の要素が入りますが、channel要素が、そのサイト全体の情報なのに対し、item要素は、たとえばブログなら各記事の情報になります。同じ名前がついていますが、親の要素が異なるため、後でXSLTやプログラム言語で処理するときに区別ができます。RSS2.0の構造RSS2.0では、構造がグッとシンプルになります。名前空間の宣言がありません(ただし、dc:creatorやcontent:encodedなどの要素も、RSS1.0と同様に使用することができます。その際には、その分の名前空間の宣言をする必要があります。XML宣言後、一番上の要素がRSS、その下にchannel要素が続きます(表示のために2行目のXSLTへのリンクをエスケープしています)。channel要素の下にはRSS1.0と同じくtitle、link、descriptionの各要素が入り、その下にいきなりitem要素が入ります。RSS1.0ではchannel要素とitem要素は別の括りになっていましたが、RSS2.0では一緒になっています。各item要素の下にはtitle、link、description、pubDadeの各要素が入ります。channel要素直下にある要素と同じ名前の要素が入っていますが、channel要素直下の各要素と、item要素の下の各要素ということで、同じ名前でも区別がつくようになっています。XSLTの構造XSLTは、XML文書を別のXML文書、あるいはHTML、TEXTに変換するための規格です。sample.xslは、RSSファイルをHTMLに変換するために書かれています。ここからの説明は、RSS1.0のサンプル、RSS2.0のサンプル、sample.xslを見ながら読んでください。XSLTもXML文書の一種なので、1行目はXML宣言で始まります。2行目は、sample.xslがXSLTであるということを示すための要素、xsl:stylesheetという要素になります。ここでは、XSLTのバージョンやxsl、rdf、rss、dcそれぞれの名前空間が宣言されます。前の項目で説明したとおり、RSS1.0では名前空間が指定されています。RSS1.0にある要素をXSLTやプログラム言語で指定する場合には、名前空間に対応した接頭辞をつける必要があります。3行目のxsl:output要素では、XSLTで変換したものをどういう形式で出力するかを指定します。ここではHTML形式を指定しています。HTMLに出力する際のDOCTYPE宣言を、doctype-public属性で指定します。dcと指定されていますが、これを入れていないと、それらの名前空間の宣言がhtmlタグに出力されてしまいます。htmlタグに出力したくない名前空間は、あらかじめ2行目で指定しておきます。4行目は、これからXML文書のルートノード(スラッシュで表現します)以下の要素に対して、スタイルシートを書きますという宣言です。この宣言は、<xsl:template>で閉じられます。次の行から、HTMLの表記になっているのがわかると思います。このXSLTでは、HTMLの中でXML文書から指定した要素の中身を表示したいところにその旨を指定していきます。セレクトメニューの構造セレクトメニューのHTMLタグは、formタグの中に次のように書きます。・RSS1.0の場合RSS1.0の場合、次のように記述します。RSS1.0の画像またはサンプルと併せてお読みください。</form></xsl:if>なお、habaという名前のCSSのクラスがありますが、これはジャンプメニューの幅を動的に指定したいときにお使いください。指定しない場合は、内容に合わせた幅になります。name="バージョン1の場合"/>で呼び出すテンプレートの処理を行うという意味になります。呼び出されるテンプレートは次のように記述されています。/>という形で表記することで、XML文書の中の該当要素の中身を差し込みます。value="【ジャンプ先URL】"><【ジャンプ先記事のタイトル】"/></option>を繰り返します。【ジャンプ先URL】については、rss:item要素の子要素であるrss:link要素の中身を差し込みます。/>という形で表記することで、XML文書の中の該当要素の中身を差し込むと説明しました。ところが、【ジャンプ先URL】は<>の中に記述しなくてはなりません。/>の代わりに{rss:link}と記述します。/>と同じ意味になります。次に、【ジャンプ先記事のタイトル】になりますが、これは、rss:item要素の子要素であるrss:title要素の中身を差し込みます。・RSS2.0の場合RSS2.0の場合は名前空間の指定がないので、RSS1.0のように接頭辞を入れる必要がありません。そのため、RSS1.0と同じ要素名でも、接頭辞が付いていればRSS1.0の方の要素、接頭辞が付いていなければRSS2.0の要素と区別することができます。RSS2.0の場合のジャンプメニューは、次のように記述します。name="バージョン2の場合"/>で呼び出すテンプレートの処理を行うという意味になります。呼び出されるテンプレートは次のように記述されています。value="【ジャンプ先URL】"><【ジャンプ先記事のタイトル】"/></option>を繰り返します。RSS1.0の場合と同じように、【ジャンプ先URL】については、item要素の子要素であるlink要素の中身を差し込みます。次に、【ジャンプ先記事のタイトル】についても、item要素の子要素であるtitle要素の中身を差し込みます。ページトップへここでは、この記事を書くにあたって参考にさせていただいたサイトをご紹介させていただきます。こちらのサイトには、RSSやXML、XSLTについて勉強する際に本当にお世話になりました。RSS--サイト情報の要約と。