ダウンロード サンプルコード (3.2 KB)
XMLは確実にITの世界に根付いており、Webサービスを習得するにはXMLの知識は必須と言えます。当記事ではJAXP(Java API for XML Processing)の仕様の基礎となっているXPathとXSLTについて学び、JavaでXML文書をどう扱うかを説明します。
JAXP(Java API for XML Processing)とは
JAXPとはJava API for XML Processingの略であることから、どのようなものか推測できます。XML文書を処理するためのJava APIと言えば何となく理解できるかと思いますが、XML文書を処理すると言ってもJava自らが処理するわけではなく、既にXMLの世界にあるXML文書を処理するための方法を用いて処理することになります。
具体的には次のような仕様を基礎にしています。これらの仕様はJAXPの仕様ではありません。JAXPはあくまでこれらの仕様の上に作られています。
- XSLT(XSL Transformations)
- XPath(XML Path Language)
- XInclude(XML Inclusions)
- DOM(Document Object Model) Level 2
- DOM Level 3
- SAX(Simple API for XML)
SAXはXML orgの仕様ですが、それ以外はすべてW3Cの仕様です。当記事ではXPathとXSLTそのものと、それらをJAXPでどう扱うか説明します。JAXPのバージョンはv1.4を元にします。
前提知識
XPathやXSLTを理解するには若干のXMLの知識が必要です。Javaも使用しますが、何かしらJavaでプログラムを作ったことがあれば大丈夫です。
XPathとは何か
XPathとはXML文書の特定の箇所を指定するためのものです。XPath仕様に従って戻り値を返すものをXPath式と呼びますが、実際の戻り値は特定の箇所(ノードセット)だけではありません。ノードセットに加え、数値、ブール値、文字列も返すところがXSLTのパターンと異なるところです。パターンはノードセットを返すのみです。このような意味においてXSLTを説明する前にXPathを説明しています。簡単なことを行うにはパターンでも十分ですが、プロとなるにはXPath式の習得が必須となります(筆者の基準では、プロとなるには再帰的なテンプレート処理を記述できるようになることも含まれますが、当記事では説明しません。プロを目指す方は挑戦されてはいかがでしょうか)。
XPathの詳細を知りたい方はXML Path Language (XPath) Version 1.0を参照ください。
パターンはPath式のサブセットです。Path式を意識しなければならない箇所が出てきた時に説明します。
この記事は参考になりましたか?
- 今からでも遅くない、JAXPを学ぼう!連載記事一覧
-
- 今からでも遅くない JAXPを学ぼう!(後編) XPathとXSLTを掘り下げる
- 今からでも遅くない JAXPを学ぼう!(前編) XPathとXSLTを体験する
- この記事の著者
-
川久保 智晴(カワクボ トモハル)
haruプログラミング教室(https://haru-idea.jp/)主宰。COBOL、FORTRANで13年、Javaを中心としたWeb開発で11年。3つしか言語知らないのかというとそうでもなく、sed/awk、Perl、Python, PHP, C#, JavaScriptなども一時期は業...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
