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式を意識しなければならない箇所が出てきた時に説明します。