データの取り出し

XML文書からのデータの取り出し

前回の例では、適用の対象となる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ブラウザで実際に変換が行われるか確認しましょう。