Java API for XML Processing

Java API for XML Processing（JAXP）は、JavaでXMLを扱うためのAPIのひとつ。XML文書の妥当性検証や構文解析のためのインタフェースを提供する。次の2つの基本的な構文解析インタフェースを備える。
 Document Object Modelによる構文解析インタフェース (DOMインタフェース)
 Simple API for XMLによる構文解析インタフェース（SAXインタフェース）

JAXP 1.4からは、3番目のインタフェースが追加されている。
 Streaming API for XMLによる構文解析インタフェース（StAXインタフェース、JSR 173）

JAXPは、構文解析インタフェースに加え、XML文書のデータや構造の変換を行うためのXSLTインタフェースも提供している。JAXPは、Java Community Processの下でJSR 5（JAXP 1.0）、JSR 63（JAXP 1.1と1.2）、JSR 206（JAXP 1.3と1.4）として開発された。2007年現在の最新バージョンは1.4。J2SE 1.4以降はJAXPの実装を含むようになり、J2SE 5.0はJAXP 1.3の実装を、Java SE 6はJAXP1.4の実装を含んでいる。

DOMインタフェース 
おそらく最も理解しやすいのがDOMインタフェースであろう。XML文書全体を構文解析し、文書内のすべての要素に相当するメモリ内表現を、Document Object Model(DOM) Level 2 Core Specificationで規定されたモデルに基づくクラスで構築する。

DOMパーサー（構文解析機）は、メモリ上にDocument表現を構築 (build) するので、DocumentBuilderと呼ばれる。は、により生成される。DocumentBuilderは、XML文書内の全ノードを含んだ木構造のインスタンスを生成する。木構造内の各ノードは、インタフェースを実装している。ノードには、XML文書内のデータ型を表すいろいろなノードタイプがある。最も重要なノードタイプとして、次のようなものがある。
 要素（element）ノード。属性（attribute）を持つ場合がある。
 テキスト（text）ノード。要素の開始タグと終了タグの間に記述されたテキストを表す。

全ノードタイプの一覧は、JavaパッケージのJavadocを参照のこと。

SAXインタフェース 
SAXパーサーはと呼ばれ、によって生成される。DOMパーサーと違い、SAXパーサーはメモリ内にXML文書の表現を作らないので、より高速でメモリ使用量が少ない。その代わりに、SAXパーサーは、コールバックを呼び出す、すなわち、あらかじめパーサーに渡しておいたインスタンスのメソッドを呼び出すことで、XML文書の構造をクライアントに通知する。

DefaultHandlerクラスは、、、の各インタフェースを実装している。ほとんどのクライアントは、ContentHandlerインタフェースで定義されたメソッドを使うことになる。これらのメソッドは、XML文書内の対応する要素をSAXパーサーが見つけたときに呼び出される。SAXインタフェースの中でもっとも重要なメソッドとして、次のようなものがある。
 startDocument()とendDocument()メソッド。XML文書の先頭と末尾で呼び出される。
 startElement() and endElement()メソッド。要素の開始地点と終了地点で呼び出される。
 characters()メソッド。要素の開始タグと終了タグの間にあるテキストデータで呼び出される。

クライアントは、DefaultHandlerのサブクラスでこれらのメソッドをオーバーライドしてデータを処理する。処理の中でデータをデータベースに保存したり、ストリームに書き出したりすることもある。

XSLTインタフェース 
XSLTは、XML文書を別の形式のデータに変換できる。

Javaプラットフォーム
Java specification requests
Java API