Java™ API for XML Processing リリースノート
仕様バージョン: 1.3
リファレンス実装 (RI) バージョン: 1.3.0
このドキュメントには、インストール手順と、このソフトウェアライブラリをより効果的に使用するために役立つ可能性のあるその他のメモが含まれています。詳細は、JAXP FAQ を参照してください。
注:
このページをオンラインで表示している場合は、リリースノートの最新版をご覧になっています。このページをリリースバンドルの一部としてダウンロードした場合は、最新版のリリースノートについて、JAXP Documentation ページを参照してください。
目次
コンポーネントのバージョン
以下のバージョンの関連テクノロジがリファレンス実装に組み込まれています。
- Xerces バージョン 2.6.2 + (Xerces バージョン 2.6.2 と、解決済みバグ修正)
- XSLTC バージョン 2.6.0 + (XSLTC バージョン 2.6.0 と、解決済みバグ修正。Xalan 2.6.0 リリースベース)
このリリースには、6 個の JAR ファイルが含まれています。
- jaxp-api.jar
- JAXP の javax.xml.parsers、javax.xml.transform、
javax.xml.xpath
、javax.xml.validation
、javax.xml.datatype
および javax.xml.namespace
コンポーネント。XML 処理実装のインスタンスをアプリケーションが一貫した方法で取得するための API が含まれています。 javax.xml.xpath
パッケージでは、標準 XPath API をサポートしています。
- sax.jar
- Simple API for XML (SAX) の API とヘルパークラス。XML データへのシリアルアクセスに使用します。 API は SAX バージョン 2.0.2 をサポートしています。
- dom.jar
- Document Object Model (DOM) の API とヘルパークラス。メモリー内ツリー構造を XML データから作成するために使用します。 API は DOM Level 3 をサポートしています。
- xercesImpl.jar
- SAX および DOM パーサー実装クラスと、JAXP API の Xerces 固有実装。
-
- xalan.jar
- Xalan プロジェクトからの Compiling XSLT プロセッサ、XSLTC が含まれます。
このセクション内の情報は、Xerces テクノロジに関係します。最新のアップデートは、http://jaxp.dev.java.net で見つかります。 最新の Apache バージョンにおける既知のバグと最新の修正については、http://xml.apache.org/xerces2-j/releases.html を参照してください。
スキーマ処理の既知の制限
このセクションでは、スキーマ処理の既知のバグ、制限、および実装依存の操作について説明します。
制限
次の制限では、上限値を指定します。
- Length、minLength、および maxLength の各ファセットは、2147483647 に制限される。
この制限より大きい項目は正しく検証されない。
- 日付/時間データ型の年および秒値は、値 2147483647 に制限される。
この制限より大きい項目は正しく検証されない。
実装依存の操作
次の実装依存の操作は、W3C XML スキーマ仕様 (
http://www.w3.org/2001/XMLSchema) でも完全に定義されていません。その結果、さまざまな実装が存在しています。
- JAXP 1.2 リファレンス実装パーサー (Xerces 2.0.1) <keyref> 一意性制約は、「XML Schema Part 1: Structures」で定義されているように、<keyref> が接続された要素の範囲内で <key> または <unique> 一意性制約を参照しています。(一方、「XML Schema」の導入セクション (「XML Schema Part 0: Primer」) には、対応する <key> の要素内で使用されている要素で宣言された <keyref> の例が載っています。混乱を避けるために、このように一貫性がない点をここで指摘しておきます。)
移行の既知の問題
このセクションでは、以前のバージョンの JAXP から移行するときに発生する既知の問題を扱います。
JAXP 1.2 からの移行
JAXP 1.2 は JWSDP と J2EE 1.4 に組み込まれています。『JAXP 互換性ガイド』の次のセクションでは、関連する移行の問題を扱っています。
JAXP 1.1 からの移行
JAXP 1.1 は J2EE 1.3 と J2SE 1.4 に組み込まれています。JAXP 1.1 との機能上の違いについては、『JAXP 互換性ガイド』を参照してください。
DOM Level 3 実装について
このセクションには、DOM Level 3 Core および DOM Level 3 Load and Save の実装メモが含まれています。
DOM Level 3 Core
次は実装されていません。
- DOMConfiguration の「infoset」パラメータ - 値「true」はサポートしない。
サポートするパラメータは次のとおりです。
- error-handler [ DOMErrorHandler ]
- resource-resolver [ DOMResourceResolver ]
- schema-type [ String ]
- schema-location [ String ]
- canonical-form [ false ]
- cdata-sections [ true/false ]
- comments [ true/false ]
- namespaces [ true/false ]
- entities [ true/false ]
- infoset [ false ]
- namespace-declarations [ true ]
- normalize-characters [ false ]
- split-cdata-sections [ true/false ]
- validate-if-schema [ true/false ]
- whitespace-in-element-content [ true ]
- datatype-normalization [ true/false ]
- validate [ true/false ] -- XML スキーマに対してのみ、再検査をサポートする。詳細は、How to revalidate DOM in memory? を参照 .
- validate-if-schema [ true/false ]
- check-character-normalization [ false ]
- well-formed [ true/false ]
- psvi [ true/false ] -- (非 DOM) このパラメータの値を true に設定すると、DOM ツリー内の PSVI 情報をインクルードする。情報にアクセスするには、dom.Element を org.apache.xerces.xs.ElementPSVI に、dom.Attr を org.apache.xerces.xs.AttributePSVI にキャストする。
DOM Level 3 Load and Save
次はサポートしていません。
- LSParser parserWithContext
- DOMImplementationLS MODE_ASYNCHRONOUS
- LSSerializer - 次のパラメータはサポートしない
-
- ignore-unknown-character-denormalizations [ true ]
- normalize-characters [ true ]
- well-formed [ true ]
Compiling XSLT プロセッサ (XSLTC)
XSLTC トランスフォーマは、変換エンジン translet を XSL スタイルシートから生成します。こうすることで、実行時アプリケーションから XML データへのスタイルシート命令の解釈を分離できます。
XSLTC は、スタイルシートを Java バイトコード (translet) にコンパイルすることで機能し、XSLT 変換を実行するために使用できます。この方法では、指定されたスタイルシートが一度コンパイルされたあと何回も使用されるため、XSLT 変換のパフォーマンスが大きく向上します。また、実際にスタイルシートで使用される XSLT 命令だけがインクルードされるため、非常に軽量な translet も生成されます。
注:
XSLT は JAXP transform パッケージによってサポートされます。実装に依存しない方法で XSLT の基本的な機能にアクセスする詳細は、javax.xml.transform
を参照してください。
カスタムクラスローダの問題
カスタムクラスローダを変換ファクトリで使用すると、問題が発生する場合があります。
JAXP 内の変換ファクトリは、システムクラスローダの使用よりもコンテキストクラスローダの使用を常に優先します。そのため、アプリケーションでカスタムクラスローダを使用する場合は、カスタムクラスローダをコンテキストクラスローダとして変換ファクトリが使用するように設定する必要がある場合があります。カスタムクラスローダを現在のスレッドで設定するには、次のようにします。
try {
Thread currentThread = Thread.currentThread();
currentThread.setContextClassLoader(customClassLoader);
}
catch (SecurityException e) {
// ...
}
アプリケーションがマルチスレッド化されている場合は、新しいスレッドが作成されるたびに、カスタムクラスローダをすべてのスレッドで設定する必要がある場合があります。アプリケーションにコンテキストクラスローダを設定する権限がない場合は、セキュリティー例外がスローされます。
JWSDP セキュリティーについて
アプリケーションを Java Web Services Developer Pack (JWSDP) などの Web サーバー上で実行していて、セキュリティーを有効にしている場合は、次の権限を設定する必要があります。
permission java.io.FilePermission
"/${webserver.home}/common/endorsed/xercesImpl.jar", "read";
permission java.io.FilePermission
"/${webserver.home}/common/endorsed/xalan.jar", "read";
permission java.util.PropertyPermission
"javax.xml.parser.SAXParserFactory", "read, write";
permission java.util.PropertyPermission
"javax.xml.transform.TransformerFactory", "read, write";
permission java.util.PropertyPermission "user.dir", "read";
permission java.util.PropertyPermission "file.separator", "read";
permission java.util.PropertyPermission "line.separator", "read";
permission java.util.PropertyPermission "JavaClass.debug", "read";
permission java.lang.RuntimePermission "createClassLoader";
permission java.lang.RuntimePermission "accessDeclaredMembers";
注:
読み取り権限を xercesImpl.jar に設定しないと、次のような FactoryConfigurationError がスローされます。
Provider org.apache.xerces.jaxp.SAXParserFactoryImpl not found
JAXP RI バージョン 1.3 の変更点
- Xerces バージョンが 2.3.0 から 2.6.2 に変更された (+ 解決済みバグ修正)
- JAXP 1.3 のスタンドアロンバージョンで入手可能な XSL 変換エンジンは、Xalan インタプリタ型と XSLTC の 2 つ (Xalan 2.6.0 ベース (+ 解決済みバグ修正))。 J2SE 5 に含まれる JAXP 1.3 バージョンには、XSLTC トランフォーマのみが含まれる (Xalan 2.6.0 ベース (+ 解決済みバグ修正))。
- 『互換性ガイド』の「新機能」で説明されている新機能や特徴が追加された。
- システムプロパティー elementAttributeLimit を追加することで、サービス妨害 (DoS) 脆弱性を修正した。このプロパティーは要素内の属性数を制限するために使用する。1 つの要素の属性のデフォルトの最大値は 10,000。
JAXP RI バージョン 1.2.4 の変更点
- Xerces における J2SE 1.4.2 コンパイルバグを修正。
JAXP RI バージョン 1.2.3 の変更点
- Xerces バージョンが 2.2.1 から 2.3.0 に変更された (+ 解決済みバグ修正)。このバージョンには多くのバグ修正が含まれている。
- スキーマ仕様により無効とされていたすべての 10 進数値が、パーサーで認識できるようになった (1.2.2 での制限をなくした)。
- JDK 1.4.1 での Xerces コンパイルの問題を解決した。
- XML スキーマのロードパフォーマンスが大幅に向上した (実質的に半分になった)。
JAXP RI バージョン 1.2.2 の変更点
- セキュリティーを向上させるための新しいプロパティーを実装した。「セキュリティーの問題」を参照。
- パーサー実装が Xerces 2.0.1_04 から Xerces 2.2.1 に変更された (+ 解決済みバグ修正)。
- XSLT プロセッサ実装が Xalan 2.3.1_01 から Xalan 2.4.1 に変更された (+ 解決済みバグ修正)。
- XSLTC がこのリリースに含まれている。
JAXP RI バージョン 1.2.1 の変更点
Xerces パーサーのパフォーマンスが大幅に向上しました。
XSLTC はこのリリースには含まれません。J2EE プラットフォーム用にのみ用意されていました。
JAXP RI バージョン 1.2.0-FCS の変更点
パーサー実装が Xerces 2.0.0_01 から Xerces-J 2.0.1_01 に変更されました
(Xerces 2.0.1 最終版 + 解決済みバグ修正)。Xalan XSLT プロセッサ
実装が xalan-j 2.3.1_01 (Xalan バージョン 2.3.1 +
解決済みバグ修正) に更新されました。
提案された 1.2 JAXP 仕様を完全にサポートします。
この仕様では、W3C XML スキーマを使用したドキュメント検証を実装しています。
JAXP RI バージョン 1.2.0-EA2 の変更点
パーサー実装が Xerces 2.0.0 beta3 から Xerces-J 2.0.0_01 に変更されました (Xerces 2.0.0 最終版 + 解決済みバグ修正)。Xalan XSLT プロセッサ実装が xalan-j 2.3.0_01 (Xalan バージョン 2.3.0 + 解決済みバグ修正) に更新されました。
Xalan XSLTC プロセッサも本リリースで追加されました。(実行準備のできた変換エンジン (translat) へスタイルシートをコンパイルするために使用)
提案された 1.2 JAXP 仕様を完全にサポートします。この仕様では、W3C XML スキーマを使用したドキュメント検証を実装しています。
JAXP RI バージョン 1.2.0-EA1 の変更点
パーサー実装が Apache Crimson から Xerces 2 バージョン 2.0.0 beta3 に変更されました。XSLT プロセッサ実装が Xalan classic バージョン 2.2.D14 に更新されました。
パーサーでは W3C XML スキーマをサポートしていますが、提案された JAXP 1.2 仕様のすべてはサポートしていません。特に、インスタンスドキュメントが特定のスキーマに準拠することを強制する機能は実装されていません。ただし、仕様のうち検証の部分は、インスタンスドキュメント内でスキーマヒントと一緒に使用できます。