前回の例では、適用の対象となるXML文書の内容を出力結果に反映させていませんでした。 ここでは、要素単位にその内容を取り出す方法を扱います。
さきほどのXML文書の内容を取り出すことを考えてみましょう。
<?xml version="1.0" encoding="utf-8"?> <?xml-stylesheet type="text/xsl" href="booklist2.xsl"?> <booklist> <book> <title>オブジェクト指向のためのJava入門</title> <author>増田英孝</author> </book> </booklist>
次のようにすると、XML文書のデータを使うことができます。
<?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" encoding="utf-8"/> <xsl:template match="/"> <html> <head> <title>書籍一覧</title> </head> <body> <h1>書籍一覧</h1><p>書名: <xsl:value-of select="booklist/book/title"/></p> <p>著者: <xsl:value-of select="booklist/book/author"/></p></body> </html> </xsl:template> </xsl:stylesheet>
ピンク色の部分がデータを取り出している部分です。 XML文書からデータを取り出すには xsl:value-of 要素を使います。 select属性でどこから取り出すかを指定します。
<xsl:value-of select="式 "/>
取り出す場所の指定は、現在処理しているところ(=文書のトップ)を基準として 書いているので、booklist/book/title であったり、booklist/book/author で あったりします。「/」が階層の区切りになっています。 なお、現れる要素名は日本語でも問題ありません。
なお、 value-of 要素で内容を取り出す対象は1つの要素に限られます。 上記の例で元の XML 文書に book 要素が複数あった場合、 最初に現れる book 要素が value-of 要素の処理の対象となります。 複数の要素を対象とした処理は、このあとに紹介します。
演習 上に示したサンプルを参考に、 独自のXML文書の内容の一部を表示するXSLスタイルシートを作成してみましょう。 Webブラウザで実際に変換が行われるか確認しましょう。