日本語で見る

Introduction to XSLT and XPath

A beginner-friendly introduction to XPath — selecting nodes in an XML tree — and XSLT, which transforms XML into other forms such as HTML. Covers XPath (// and predicates), XSLT templates (match→output, value-of, apply-templates), the XML+XSLT→processor→output pipeline, and DH uses like publishing TEI to the web. An experimental, independently-composed video referencing open CC-licensed materials.

XSLTXPathXMLTEIDigital Humanities
⚠ This explainer is an experimental, AI-assisted production (including its structure, figures, and synthesized narration). It may contain inaccuracies—please use it with discretion.

Dialogue walkthrough (VOICEVOX)

Other versions

Narrated explanation

Chapters

  1. 1

    Main

    Narration script

    • 0:00XMLを選んで、作り変える

      皆さん、こんにちは。デジタル人文学入門、技術要素シリーズを担当します、なかむらさとるです。この回のテーマは、XPathと、XSLTです。XMLや、TEIで、タグを付けたデータから、必要な部分を、選び、それを、別の形へ、作り変える。その流れを、初学者向けに、図を交えながら、ゆっくり見ていきます。プログラミングの予備知識は、なくても、大丈夫です。どうぞ、気楽について来てください。

      XMLを選んで、作り変える
    • 0:36この動画について

      はじめに、この動画について、簡単に、ご案内します。この動画は、クリエイティブ・コモンズ(CC)で、公開されている、オープンな教材を、参照しつつ、独自に、構成した、解説です。スライドと、図は、新規に作成し、ナレーションは、本人の声をもとにした、AIの、音声合成で、つくっています。あくまで、実験的な、取り組みですので、内容は、ご確認・ご注意のうえ、ご利用ください。もし、誤りに、気づかれたら、概要欄から、ご指摘いただけると、たすかります。出典と、ライセンスは、動画の最後と、概要欄に、まとめてあります。それでは、本編に、入りましょう。

      この動画について
    • 1:24この回のゴール

      まず、この回のゴールを、確認しておきましょう。目標は、大きく、四つです。一つめは、XPathで、XMLの、木から、目的のノードを、選ぶ、考え方を、説明できること。二つめは、XSLTが、XMLを、別の形へ、変換する、仕組みだと、説明できること。三つめは、テンプレート、つまり、マッチと、出力の、流れを、説明できること。そして四つめは、TEIの、ウェブ公開など、デジタル人文学での、使いどころと、始め方を、知ることです。TEIや、XMLの回を、見ていると、つながりやすいですが、必須では、ありません。

      この回のゴール
    • 2:16今日の流れ

      今日の流れです。はじめに、XMLは、中身であって、見せ方は、別もの、という、ところから。つぎに、選ぶ、ための、XPath。それから、作り変える、ための、XSLTと、テンプレート。そして、XMLと、XSLTを、合わせた、全体の流れ。最後に、使いどころと、始め方を、紹介します。

      今日の流れ
    • 2:48XMLは「中身」、見せ方は別

      それでは、はじめましょう。まずは、XMLが、中身であって、見せ方は、別もの、という、話から。なぜ、変換が、要るのかを、おさえます。

      XMLは「中身」、見せ方は別
    • 3:02XMLは「木(ツリー)」構造

      図を、見てください。XMLは、タグの、入れ子で、できた、木のような、構造を、しています。いちばん外側に、TEI、その中に、テキスト、その中に、本文、そして、その先に、人名や、地名、日付、といった、要素が、枝葉のように、並びます。この、木の、どこかに、私たちの、ほしい、情報が、入っている、というわけです。

      XMLは「木(ツリー)」構造
    • 3:34そのままでは「見せにくい」

      ただ、XMLは、構造は、きちんと、持っていますが、そのままでは、人に、見せる形では、ありません。ウェブページに、したい。一覧表に、したい。別の、形式に、移したい。そのためには、まず、必要な部分を、選び、つぎに、それを、作り変える、必要が、あります。選ぶ、道具が、XPath、作り変える、道具が、XSLTです。

      そのままでは「見せにくい」
    • 4:14選ぶ ― XPath

      では、まず、選ぶ、ほうから。XPathの、話に、入ります。

      選ぶ ― XPath
    • 4:22XPath=木の「どこ」を指すパス

      XPathは、木の、どこを、指すかを、表す、式です。図を、見てください。ちょうど、フォルダの、パスのように、スラッシュで、階層を、区切りながら、たどっていきます。TEI、スラッシュ、テキスト、スラッシュ、本文、スラッシュ、人名。こうして、目的の、ノードを、一つ、指し示すのです。

      XPath=木の「どこ」を指すパス
    • 4:54書き方:スラッシュでたどる

      書き方を、もう少し、見てみましょう。図のように、スラッシュを、二つ、重ねて、書くと、どこにあっても、という、意味に、なります。たとえば、スラッシュ・スラッシュ・persNameと、書けば、文書の、どこにあっても、人名の、要素を、全部、選ぶ。スラッシュ・TEI・スラッシュ・テキスト・スラッシュ・スラッシュ・デートと、書けば、本文の中の、日付を、選ぶ、という、具合です。

      書き方:スラッシュでたどる
    • 5:34角かっこ[ ]で条件を足す

      さらに、角かっこを、使うと、条件を、足して、絞り込めます。図のように、デートの、あとに、角かっこで、ウェン属性、と書けば、いつ、という、属性を、持つ、日付だけ。persNameの、あとに、ロールが、オーサー、と書けば、役割が、著者の、人名だけ、を、選びます。選ぶ、範囲を、ぐっと、狭められる、わけです。

      角かっこ[ ]で条件を足す
    • 6:10ここまでのポイント

      ここで、いったん、整理します。XMLは、タグの、入れ子で、できた、木でした。XPathは、その木の、どこを、指すか、という、パスの、式。スラッシュ・スラッシュで、どこにあっても、選び、角かっこで、条件を、足して、絞る。ここまでが、選ぶ、ための、道具です。つぎは、選んだものを、作り変える、XSLTに、進みます。

      ここまでのポイント
    • 6:46作り変える ― XSLT

      ここからは、作り変える、ほう。XSLTの、話です。

      作り変える ― XSLT
    • 6:54XSLT=変換の「指示書」

      XSLTは、ひとことで言うと、変換の、指示書です。図を、見てください。左に、元の、XML。それを、XSLTという、指示書を、通して、右の、HTMLなどへ、作り変えます。何を、どう、出すかを、書いておくと、その通りに、変換して、くれる、というわけです。

      XSLT=変換の「指示書」
    • 7:25テンプレート=「マッチ→出力」

      その、指示書の、いちばんの、部品が、テンプレートです。図のように、テンプレートは、この要素に、マッチ、つまり、合ったら、こう出す、という、規則の、ことです。たとえば、人名に、合ったら、太字で、出す。地名に、合ったら、リンクに、する。こうした、規則を、要素ごとに、いくつも、並べていきます。

      テンプレート=「マッチ→出力」
    • 7:56テンプレートの書き方

      実際の、書き方を、見てみましょう。図の例では、エックスエスエル・テンプレートに、マッチ・イコール・persName、と書いています。これが、人名に、合ったら、という、部分。そして、中身に、ストロング、という、太字のタグと、エックスエスエル・バリューオブを、書いています。バリューオブは、その要素の、中身の、文字を、取り出す、命令です。つまり、人名を、見つけたら、その中身を、太字にして、出す、という、テンプレートに、なっています。

      テンプレートの書き方
    • 8:35中の要素へ「流し込む」

      もう一つ、大事な、命令が、あります。エックスエスエル・アプライテンプレーツ、です。図のように、本文に、合ったら、その中で、アプライテンプレーツ、と書いておくと、中に、入っている、要素を、順番に、処理して、流し込んで、くれます。一つずつ、手で、たどらなくても、中身を、まとめて、変換できる、というわけです。

      中の要素へ「流し込む」
    • 9:02ここまでのポイント

      ここまでを、整理します。XSLTは、XMLを、別の形へ、作り変える、指示書でした。その、基本の、単位が、テンプレート、つまり、マッチと、出力の、規則。バリューオブで、中身を、取り出し、アプライテンプレーツで、中の要素へ、流し込む。部品が、そろいました。つぎは、これらを、合わせると、どう動くのかを、見ます。

      ここまでのポイント
    • 9:34全体の流れ

      ここからは、全体の、流れを、確認します。

      全体の流れ
    • 9:38XML+XSLT→プロセッサ→出力

      図を、見てください。元の、XMLと、指示書の、XSLT。この二つを、プロセッサ、つまり、変換エンジンに、渡すと、HTMLや、CSV、テキストなどの、出力が、できあがります。プロセッサは、テンプレートの、規則に、従って、木を、たどりながら、結果を、組み立てて、くれる、というわけです。

      XML+XSLT→プロセッサ→出力
    • 10:07例:TEIをWebページへ

      具体例で、見てみましょう。図のように、TEIの中に、persNameで、囲まれた、ホメロス、という、名前が、あるとします。これに、さきほどの、テンプレートを、当てると、ウェブページ上で、強調された、ホメロス、に、変換されます。ここで、大事なのは、中身は、そのままでも、XSLTを、差し替えれば、見た目や、出力先を、自由に、変えられる、という点です。一つの、XMLから、いろいろな、出力を、作り分けられます。

      例:TEIをWebページへ
    • 10:46考えてみよう

      ここで、少し、立ち止まって、考えてみましょう。あなたが、持っている、XMLを、どんな形に、作り変えたいでしょうか。ウェブページでしょうか。一覧表でしょうか。それとも、別の、形式でしょうか。よろしければ、ここで一度、動画を止めて、思い浮かべてみてください。

      考えてみよう
    • 11:12ここまでのポイント

      ここまでを、整理します。流れは、選ぶ、XPath、から、作り変える、XSLT、そして、出力、でした。XMLと、XSLTを、プロセッサに、渡すと、HTMLなどが、得られる。中身は、そのままでも、XSLTを、差し替えれば、別の、見せ方や、出力に、できる。これが、変換の、力です。

      ここまでのポイント
    • 11:45使いどころ・始め方

      では、これは、実際の、研究や、公開で、どう、役立つのでしょう。使いどころと、始め方を、見ていきます。

      使いどころ・始め方
    • 11:56DHでの活用

      デジタル人文学では、とくに、こんな、場面で、生きてきます。TEIで、符号化した、本文を、読みやすい、ウェブページに、する。人名や、地名、日付を、抜き出して、一覧や、索引を、作る。あるいは、プレーンテキストや、CSVなど、別の、形式へ、書き出す。そして、同じ、一つの、XMLから、用途に応じて、複数の、出力を、作り分けることが、できます。

      DHでの活用
    • 12:34「変換」と「問い合わせ」

      ここで、よく、ならべて、語られる、技術との、違いにも、触れておきます。XSLTは、文書を、まるごと、別の形へ、作り変える、変換が、得意です。これに対して、XQueryは、XMLから、条件で、取り出す、問い合わせが、得意です。どちらも、内部では、XPathを、使う、同じ、家族の、技術です。ページを、作るなら、XSLT、データベースに、問うなら、XQuery、と、捉えると、整理しやすいでしょう。なお、RDFの、グラフに、問い合わせる、SPARQLとは、扱う、データの、形そのものが、違います。こちらは、XMLの、木が、相手です。

      「変換」と「問い合わせ」
    • 13:32つまずきやすい点

      つまずきやすい、点も、いくつか、挙げておきます。XSLTや、XPathには、バージョンが、あり、一点ゼロ、二点ゼロ、三点ゼロで、使える、関数が、違います。また、動かすには、プロセッサが、必要で、Saxon、などが、よく、使われます。エディタに、同梱されている、ことも、あります。最初は、小さな、例で、一つの、要素を、変換する、ところから。そして、うまく、出ないときは、まず、XPathが、正しく、選べているかを、先に、確かめるのが、コツです。

      つまずきやすい点
    • 14:19始め方・学ぶには

      では、自分でも、やってみたい、と思ったら、どうすれば、よいでしょう。体系的に、学ぶなら、Programming Historianの、XMLと、エックスエスエルによる、変換の、レッスンが、おすすめです。試すには、oXygen、などの、エディタや、Saxonで、変換を、実行してみる。TEIの、文脈では、TEI by Exampleの、XPathや、XSLTの、モジュールも、役立ちます。コツは、XPathで、選んで、一つの、要素だけ、変換する、ことを、小さく、くり返して、育てていく、ことです。

      始め方・学ぶには
    • 15:05まとめ

      今日の、まとめです。XMLは、木構造で、XPathは、その、どこを、選ぶか、でした。XSLTは、選んだものを、別の形へ、変換する、指示書。その、単位が、テンプレート、つまり、マッチと、出力で、XMLと、XSLTを、プロセッサに、渡すと、出力が、できる。TEIの、ウェブ公開など、一つの、XMLから、複数の、出力を、作り分けられました。TEIで、タグを、付けたものを、こんどは、選んで、作り変える。地続きの、考え方として、つかんで、いただけたなら、と思います。

      まとめ
    • 15:55出典・ライセンス

      この動画は、海外で、オープンライセンスのもとに、公開されている、教材を、参照して、作成しました。主なものは、Programming Historianの、XMLと、エックスエスエルによる、データ変換の、レッスンで、クリエイティブ・コモンズ(CC)の、表示ライセンスで、公開されています。XPathや、XSLTの、仕様そのものは、W3Cの、勧告で、事実確認に、用い、翻案は、していません。スライドと、図は、これらを、参考にしたうえで、あらためて、作成したものです。

      出典・ライセンス
    • 16:37ご清聴ありがとうございました

      以上で、XPathと、XSLTの、入門を、終わります。XMLから、必要な部分を、選び、別の形へ、作り変える。その第一歩を、つかんで、いただけたなら、と思います。ご清聴、ありがとうございました。

      ご清聴ありがとうございました