XML 処理用 の JavaTM API リリースノート
仕様バージョン: 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 プロジェクトによるコンパイリング 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 スキーマの導入セクション (「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、および 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 および Save
次はサポートしていません。
- LSParser parserWithContext
- DOMImplementationLS MODE_ASYNCHRONOUS
- LSSerializer - 次のパラメータはサポートしない
- ignore-unknown-character-denormalizations [true ]
- normalize-characters [true ]
- well-formed [true ]
コンパイリング XSLT プロセッサ (XSLTC)
XSLTC トランスフォーマは、変換エンジンである「translet」を XSL スタイルシートから生成します。こうすることで、実行時アプリケーションから XML データへのスタイルシート指示の解釈を分離できます。
XSLTC は、スタイルシートを Java バイトコード (translet) にコンパイルすることで機能します。translet は、XSLT 変換を実行するために使用されます。この方法では、指定されたスタイルシートが 1 回コンパイルされて複数回使用されるため、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 仕様のすべてはサポートしていません。特に、インスタンスドキュメントが特定のスキーマに準拠することを強制する機能は実装されていません。ただし、仕様のうち検証の部分は、インスタンスドキュメント内でスキーマヒントと一緒に使用できます。