仕様バージョン: 1.3, リファレンス実装(RI)バージョン: 1.3.0
このドキュメントには、インストール手順と、このソフトウェア・ライブラリをより効果的に使用するために役立つ可能性のあるその他のメモが含まれています。
このリリースには、6個のJARファイルが含まれています。
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をサポートしています。このセクション内の情報は、Xercesテクノロジに関係します。最新のApacheバージョンにおける既知のバグと最新の修正については、http://xml.apache.org/xerces2-j/releases.htmlを参照してください。
このセクションでは、スキーマ処理の既知のバグ、制限、および実装依存の操作について説明します。
次の制限では、上限値を指定します。
次の実装依存の操作は、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はJWSDPとJ2EE 1.4に組み込まれています。互換性ガイドの次の項では、関連する移行の問題を扱っています。
JAXP 1.1はJ2EE 1.3とJava SE 1.4に組み込まれています。JAXP 1.1との機能上の違いについては、『JAXP互換性ガイド』を参照してください。
このセクションには、DOM Level 3 CoreおよびDOM Level 3 Load and Saveの実装メモが含まれています。
次は実装されていません。
サポートするパラメータは次のとおりです。
dom.Element
をorg.apache.xerces.xs.ElementPSVI
に、dom.Attr
をorg.apache.xerces.xs.AttributePSVI
にキャストする。次はサポートしていません。
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) { // ... }
アプリケーションがマルチスレッド化されている場合は、新しいスレッドが作成されるたびに、カスタム・クラス・ローダーをすべてのスレッドで設定する必要がある場合があります。アプリケーションにコンテキスト・クラス・ローダーを設定する権限がない場合は、セキュリティ例外がスローされます。
アプリケーションを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
elementAttributeLimit
を追加することで、サービス拒否攻撃の脆弱性を修正した。このプロパティは要素内の属性数を制限するために使用できる。1つの要素の属性のデフォルトの最大値は10,000。Xercesパーサーのパフォーマンスが大幅に向上しました。
XSLTCはこのリリースには含まれません。J2EEプラットフォーム用にのみ用意されていました。
提案された1.2 JAXP仕様を完全にサポートします。
この仕様では、W3C XMLスキーマを使用したドキュメント検証を実装しています。
Xalan XSLTCプロセッサも本リリースで追加されました。(実行準備のできた変換エンジン(translet)へスタイル・シートをコンパイルするために使用)
提案された1.2 JAXP仕様を完全にサポートします。この仕様では、W3C XMLスキーマを使用したドキュメント検証を実装しています。
パーサーではW3C XMLスキーマをサポートしていますが、提案されたJAXP 1.2仕様のすべてはサポートしていません。特に、インスタンス・ドキュメントが特定のスキーマに準拠することを強制する機能は実装されていません。ただし、仕様のうち検証の部分は、インスタンス・ドキュメント内でスキーマ・ヒントと一緒に使用できます。