モジュールjava.xml
JAXPルックアップ・メカニズム
JAXPでは、順序付けされたルックアップ・プロシージャを定義して、JAXPファクトリ用にロードする実装クラスを決定します。 メカニズムをサポートするファクトリは、次の表に、プロシージャで使用されるメソッド、システム・プロパティ名、構成ファイルおよびシステム・デフォルト・メソッドとともにリストされています。 [1]。ここで、schemaLanguageはnewInstance(schemaLanguage)メソッドのパラメータです。
 
 [2]。ここで、uriはnewInstance(uri)メソッドのパラメータです。
 
jaxp.properties
jaxp.propertiesは、標準のProperties形式の構成ファイルで、通常はJavaインストールのconfディレクトリにあります。 これには、実装クラスの完全修飾名が含まれ、キーが前述の「表」で定義されたシステム・プロパティ名になります。 
 
 jaxp.propertiesファイルは実装によって1回のみ読み取られ、その値は将来の使用のためにキャッシュされます。 最初の読込み時にファイルが存在しないと、そのあとにその存在がチェックされることはない。 初めて読み込まれたプロパティの値は変更できません。 
 
stax.properties
stax.propertiesは、StAXファクトリ・ルックアップでのみ使用されることを除き、jaxp.propertiesと同じ機能を持つ構成ファイルです。
 ルックアップ・プロシージャ
「JAXPファクトリ」は、次に示す手順に従って実装クラスを特定およびロードします:- 前述の表「JAXPファクトリ」のシステム・プロパティ列の説明に従って、システム・プロパティを使用します。
- 
 表「JAXPファクトリ」に示すように、構成ファイルjaxp.propertiesを使用します。 StAXの場合、stax.propertiesが存在する場合、ファクトリはまずjaxp.propertiesではなく読取りを試行します。 
- 
 ServiceLoaderクラスで定義されているサービス・プロバイダ・ローディング機能を使用して、デフォルトのロード・メカニズムを使用してサービスの実装を特定してロード: サービス・プロバイダ・ローディング機能は、現在のスレッド・コンテキスト・クラス・ローダーを使用してサービスをロードしようとします。 コンテキスト・クラス・ローダーがnullの場合、システム・クラス・ローダーが使用されます。SchemaFactorySchemaFactoryの場合、メソッドisSchemaLanguageSupported(String schemaLanguage)を実装するには、潜在的な各サービス・プロバイダが必要です。 指定されたスキーマ言語をサポートする最初に検出されたサービス・プロバイダが返されます。XPathFactoryXPathFactoryの場合、メソッドisObjectModelSupported(String objectModel)を実装するには、潜在的な各サービス・プロバイダが必要です。 指定されたオブジェクト・モデルをサポートする最初に検出されたサービス・プロバイダが返されます。
- 
 それ以外の場合、 system-default実装が返されます。これは、前述の表「JAXPファクトリ」のシステム・デフォルト列に示すように、newDefaultInstance() or newDefaultFactory()メソッドをコールすることと同じです。SchemaFactorySchemaFactoryの場合、W3C XMLスキーマには「プラットフォームのデフォルト」SchemaFactoryが必要です。XPathFactoryXPathFactoryの場合、W3C DOMには「プラットフォームのデフォルト」XPathFactoryが必要です(DEFAULT_OBJECT_MODEL_URI)。
- 実装上のノート:
- 実装固有の機能およびプロパティこのモジュールのパブリックAPIに記述された標準の機能やプロパティに加えて、JDK実装では、実装固有の多くの機能とプロパティがサポートされています。 このセクションでは、ネーミング規則、システム・プロパティ、jaxp.properties、スコープと順序、およびプロパティが適用されるプロセッサについて説明します。 現在実装でサポートされている実装固有の機能およびプロパティの一覧表については、このノートを参照してください。- ネーミング規則機能およびプロパティの名前は、プレフィクスと名前で構成される完全修飾名になります。- 接頭辞JDKの機能とプロパティのプレフィクス、および対応するシステム・プロパティ(存在する場合)の定義は次のとおりです:- jdk.xml.- 名前名前は、大文字と小文字が区別される1つまたは複数の単語で構成されます。 最初の単語のすべての文字は小文字ですが、後続の単語の最初の文字は大文字で始まります。- XML文書がスタンドアロンであるかどうかを示すプロパティの例は、次のような形式になります: - jdk.xml.isStandalone- jdk.xml.isStandalone- システム・プロパティプロパティは、同じ名前の対応するシステム・プロパティを持つことができます。 システム・プロパティはプロセッサを作成する前に設定する必要があり、あとでクリアできます。- jaxp.propertiesjaxp.propertiesファイルでシステム・プロパティを指定して、JDKのすべての呼出しの動作を設定できます。 形式は- system-property-name=valueです。 たとえば:- jdk.xml.isStandalone=true- スコープとオーダーDOM、SAX、スキーマ検証、XSLTおよびXPathを含むXMLプロセッサには、- XMLConstants.FEATURE_SECURE_PROCESSING機能(今後、セキュア処理と呼ばれます)が必要です。 セキュア処理がtrueに設定されている場合は、表「実装固有の機能」およびPropertiesの- "security: yes"(この後、セキュリティ・プロパティと呼ばれます)としてフラグ設定されたようなセキュリティ関連の機能とプロパティが適用されます。 このような強制には、表の- "Value"のサブ列- "Enforced"に示されているように、セキュリティ・プロパティおよび機能をより限定的な値と制限値に設定することが含まれます。 ただし、セキュア処理がfalseに設定されている場合、プロパティ値は影響を受けません。- Java Security Managerが存在する場合は、セキュア処理がtrueに設定され、オフにできません。 そのため、セキュリティ・プロパティが実施されます。 - jaxp.propertiesファイルで指定されたプロパティは、JDKのすべての呼出しに影響し、デフォルト値、またはセキュア処理によって設定された値を上書きします。 - システム・プロパティは、設定するとJDKの起動に影響し、デフォルト設定やjaxp.propertiesまたはセキュア処理で設定された可能性のある設定を上書きします。 - JAXPファクトリまたはプロセッサによって指定されるJAXPプロパティは、(例: SAXParser)によって、システム・プロパティ、jaxp.propertiesファイル、およびセキュア処理が優先されます。 - プロセッサのサポート機能とプロパティは、1つ以上のプロセッサでサポートされる可能性があります。 次の表に、参照に使用できるID別にプロセッサを一覧表示します。- プロセッサ - ID - 名前 - プロパティを設定する方法 - 機能の設定方法 - DOM - DOMパーサー - DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
 - dbf.setAttribute(name, value);- DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
 - dbf.setFeature(name, value);- SAX - SAXパーサー - SAXParserFactory spf = SAXParserFactory.newInstance();
 - SAXParser parser = spf.newSAXParser();
 - parser.setProperty(name, value);- SAXParserFactory spf = SAXParserFactory.newInstance();
 - spf.setFeature(name, value);
 - StAX - StAXパーサー - XMLInputFactory xif = XMLInputFactory.newInstance();
 - xif.setProperty(name, value);- XMLInputFactory xif = XMLInputFactory.newInstance();
 - xif.setProperty(name, value);- Validation - XML Validation API - SchemaFactory schemaFactory = SchemaFactory.newInstance(schemaLanguage);
 - schemaFactory.setProperty(name, value);- SchemaFactory schemaFactory = SchemaFactory.newInstance(schemaLanguage);
 - schemaFactory.setFeature(name, value);- 変換 - XML Transform API - TransformerFactory factory = TransformerFactory.newInstance();
 - factory.setAttribute(name, value);- TransformerFactory factory = TransformerFactory.newInstance();
 - factory.setFeature(name, value);- XSLTCシリアライザ - XSLTCシリアライザ - Transformer transformer = TransformerFactory.newInstance().newTransformer();
 - transformer.setOutputProperty(name, value);- DOMLS - DOM Load and Save - LSSerializer serializer = domImplementation.createLSSerializer();
 - serializer.getDomConfig().setParameter(name, value);- XPath - XPath - XPathFactory factory = XPathFactory.newInstance();
 - factory.setProperty(name, value);- XPathFactory factory = XPathFactory.newInstance();
 - factory.setFeature(name, value);- 実装固有の機能およびプロパティ実装固有の機能およびプロパティには、API仕様に準拠しながらリソースに関する制限を管理できるJDKの選択肢が反映されています。また、アプリケーションでは、標準に必要な動作以外に動作を変更できます。- 次の表に、JDKで現在サポートされている実装固有のプロパティを示します。 必要に応じて、将来的にプロパティを追加できます。 - 実装固有のプロパティ - フル・ネーム(「プレフィクス+名前」) [1] - 説明 - APIプロパティ[2] - システム・プロパティ[3] - jaxp.properties [3] - 値[4] - セキュリティ[5] - サポートされるプロセッサ[6] - [7]以降 - 型 - 値 - デフォルト - Enforced - jdk.xml.entityExpansionLimit- エンティティの展開数を制限します。 - はい - はい - はい - 整数 - 正の整数 0以下の値は、制限がないことを示します。 値が整数でない場合、NumberFormatExceptionがスローされます。 - 64000 - 64000 - Yes - DOM 
 SAX
 StAX
 Validation
 Transform- 8 - jdk.xml.elementAttributeLimit- 1つの要素で使用できる属性の数を制限します。 - 10000 - 10000 - jdk.xml.maxOccurLimit- "unbounded"以外の値を持つmaxOccurs属性を含むW3C XMLスキーマの文法の構築時に作成できるコンテンツ・モデル・ノードの数を制限します。 - 5000 - 5000 - jdk.xml.totalEntitySizeLimit- 一般エンティティとパラメータ・エンティティを含むすべてのエンティティの合計サイズを制限します。 サイズはすべてのエンティティの集約として計算されます。 - 5x10^7 - 5x10^7 - jdk.xml.maxGeneralEntitySizeLimit- すべての一般エンティティの最大サイズを制限します。 - 0 - 0 - jdk.xml.maxParameterEntitySizeLimit- 複数のパラメータ・エンティティのネストの結果を含む、パラメータ・エンティティの最大サイズを制限します。 - 10^6 - 10^6 - jdk.xml.entityReplacementLimit- すべてのエンティティ参照のノードの合計数を制限します。 - 3x10^6 - 3x10^6 - jdk.xml.maxElementDepth- 要素の最大の深さを制限します。 - 0 - 0 - jdk.xml.maxXMLNameLimit- 要素名、属性名、名前空間の接頭辞やURIなど、XML名の最大サイズを制限します。 - 1000 - 1000 - jdk.xml.isStandalone- シリアライザが出力をスタンドアロン文書として扱うことを示します。 このプロパティを使用して、XML宣言のあとに改行を記述できます。 - xml-declarationプロパティとは異なり、このプロパティはXML宣言を書き出すかどうかには影響しません。- はい - はい - はい - boolean - true/false - false - 該当なし - No - DOMLS - 17 - jdk.xml.xsltcIsStandalone- 「XSLTCシリアライザ」が出力をスタンドアロン文書として扱うことを示します。 このプロパティを使用して、XML宣言のあとに改行を記述できます。 - OMIT_XML_DECLARATIONプロパティとは異なり、このプロパティはXML宣言を書き出すかどうかには影響しません。- このプロパティは、「XSLTCシリアライザ」およびその値がStringである点を除き、前述のDOMLSと同様に動作します。 - はい - はい - はい - String - yesまたはno - no - 該当なし - No - XSLTCシリアライザ - 17 - jdk.xml.cdataChunkSize- プロパティがゼロまたは指定されていない場合、またはゼロより大きい場合は複数のチャンクでCDataセクションにデータを返すようにパーサーに指示します。 パーサーは、データを改行で分割し、指定したサイズよりも大きいチャンクをサイズ以下に分割します。 - はい - はい - はい - 整数 - 正の整数 0以下の値は、プロパティが指定されていないことを示します。 値が整数でない場合、NumberFormatExceptionがスローされます。 - 0 - 該当なし - No - SAX 
 StAX- 9 - jdk.xml.extensionClassLoader - XSLTC java拡張関数のロードに使用するnull以外のClassLoaderインスタンスを設定します。 - はい - no - no - Object - ClassLoaderオブジェクトへの参照。 値が指定されていない場合はNULL。 - null - 該当なし - No - Transform - 9 - jdk.xml.xpathExprGrpLimit - XPath式に含めることができるグループの数を制限します。 - Transform:yes 
 XPath:no- はい - はい - 整数 - 正の整数 0以下の値は、制限がないことを示します。 値が整数でない場合、NumberFormatExceptionがスローされます。 - 10 - 10 - Yes - Transform 
 XPath- 19 - jdk.xml.xpathExprGrpLimit - XPath式に含めることができる演算子の数を制限します。 - 100 - 100 - jdk.xml.xpathTotalOpLimit - XSLスタイル・シート内のXPath演算子の合計数を制限します。 - はい - 10000 - 10000 - Transform 
 - 次の表に、JDKで現在サポートされている実装固有の機能を示します。 必要に応じて、将来的にさらなる機能を追加できます。 - 実装固有の機能 - フル・ネーム(「プレフィクス+名前」) [1] - 説明 - APIプロパティ[2] - システム・プロパティ[3] - jaxp.properties [3] - 値[4] - セキュリティ[5] - サポートされるプロセッサ[6] - [7]以降 - 型 - 値 - デフォルト - Enforced - jdk.xml.enableExtensionFunctions- XSLTおよびXPath拡張関数を許可するかどうかを決定します。 - はい - はい - はい - Boolean - trueまたはfalse Trueは拡張関数が許可されることを示します。それ以外の場合はFalseです。 - true - false - Yes - Transform 
 XPath- 8 - jdk.xml.overrideDefaultParser- サード・パーティのパーサー実装を使用して、JDK変換、検証およびXPath実装のシステム・デフォルト・パーサーをオーバーライドできます。 - trueまたはfalse Trueを使用すると、サード・パーティ・パーサー実装を使用して、XML変換、検証またはXPath操作中にシステム・デフォルト実装をオーバーライドできます。 Falseを指定すると、サードパーティのパーサー実装を使用できなくなります。 - false - false - Yes - Transform 
 Validation
 XPath- 9 - jdk.xml.resetSymbolTable- 各解析操作時に、パーサーに内部シンボル表をリセットするように指示します。 - trueまたはfalse Trueは、各解析操作中に、パーサーに関連付けられたSymbolTableを再割当てする必要があることを示します。 
 Falseは、後続の解析操作でパーサーSymbolTableインスタンスが再利用されることを示します。- false - 該当なし - No - SAX - 9 - [1]プロパティのフルネームを使用して、プロパティを設定する必要があります。 - [2] 値"yes"は、このプロパティをプロセッサまたはファクトリで設定できることを示します。それ以外の場合も設定しません。 - [3] 値"yes"は、プロパティに対応するシステム・プロパティがあることを示します。それ以外はありません。 - [4] この値は、この表に示すとおり、大/小文字を区別する必要があります。 対応するシステム・プロパティの値は、プロパティ値の文字列表現です。 タイプがブールの場合、システム・プロパティは"true"である場合にのみtrueになります。タイプがStringの場合、システム・プロパティは、正の値(例: - xsltcIsStandaloneの場合は"yes")を表す文字列とまったく同じ文字列である場合にのみtrueになります。それ以外の場合はfalseです。 型がIntegerの場合、システム・プロパティの値は、値(例:- entityExpansionLimitの場合は"64000")の文字列表現です。- [5] 値"yes"は、プロパティがセキュリティ・プロパティであることを示します。 セキュア処理がセキュリティ・プロパティの値に与える影響については、「スコープと順序」を参照してください。 - [6] プロパティをサポートする1つ以上のプロセッサ。 フィールドの値は、表「プロセッサ」で説明されているIDです。 - [7] プロパティが導入された初期リリースを示します。 - レガシー・プロパティ名 (deprecated)JDK 17より前のJDKリリースでは、プロパティのURIスタイル・プレフィクスの使用がサポートされています。 これらのレガシー・プロパティ名は、JDK 17の時点でdeprecatedであり、将来のリリースで削除される可能性があります。 新しいプロパティとレガシー・プロパティの両方が設定されている場合は、設定方法や設定場所に関係なく、新しいプロパティ名が優先されます。 「スコープとオーダー」で定義されたオーバーライド順序は降順になります:- デフォルト値;
- FEATURE_SECURE_PROCESSING;によって設定された値
- Value set in jaxp.properties;
- Value set as System Property;
- 「レガシー・プロパティ名」を使用するファクトリまたはプロセッサの値セット
- 新規プロパティ名を使用したファクトリまたはプロセッサの値セット。
 - 次の表に、プロパティとそれに対応するレガシー名を一覧表示します。 - レガシー・プロパティ名 (17以降非推奨) - プロパティ - レガシー・プロパティ名 - jdk.xml.entityExpansionLimit- http://www.oracle.com/xml/jaxp/properties/entityExpansionLimit- jdk.xml.elementAttributeLimit- http://www.oracle.com/xml/jaxp/properties/elementAttributeLimit- jdk.xml.maxOccurLimit- http://www.oracle.com/xml/jaxp/properties/maxOccurLimit- jdk.xml.totalEntitySizeLimit- http://www.oracle.com/xml/jaxp/properties/totalEntitySizeLimit- jdk.xml.maxGeneralEntitySizeLimit- http://www.oracle.com/xml/jaxp/properties/maxGeneralEntitySizeLimit- jdk.xml.maxParameterEntitySizeLimit- http://www.oracle.com/xml/jaxp/properties/maxParameterEntitySizeLimit- jdk.xml.entityReplacementLimit- http://www.oracle.com/xml/jaxp/properties/entityReplacementLimit- jdk.xml.maxElementDepth- http://www.oracle.com/xml/jaxp/properties/maxElementDepth- jdk.xml.maxXMLNameLimit- http://www.oracle.com/xml/jaxp/properties/maxXMLNameLimit- jdk.xml.isStandalone- http://www.oracle.com/xml/jaxp/properties/isStandalone- jdk.xml.xsltcIsStandalone- http://www.oracle.com/xml/is-standalone
 - http://www.oracle.com/xml/jaxp/properties/xsltcIsStandalone- jdk.xml.extensionClassLoader- jdk.xml.transform.extensionClassLoader- jdk.xml.enableExtensionFunctions- http://www.oracle.com/xml/jaxp/properties/enableExtensionFunctions
- モジュール・グラフ:
- 導入されたバージョン:
- 9
- 
パッケージエクスポートパッケージ説明XML処理の定数を定義します。「XMLカタログOASIS Standard V1.1、2005年10月7日」を実装するためのクラスを提供します。XML/Java型マッピングを定義します。XMLネームスペースの処理を定義します。SAX (XML用シンプルAPI)パーサーまたはDOM (ドキュメント・オブジェクト・モデル)ドキュメント・ビルダーを使用してXMLドキュメントを処理するためのクラスを提供します。Streaming API for XML (StAX)のインタフェースとクラスを定義します。Streaming API for XML (StAX)のイベント・インタフェースを定義します。Streaming API for XML (StAX)のユーティリティ・クラスを提供します。変換命令の処理、およびソースから結果への変換を実行するための汎用APIを定義します。DOM固有の変換クラスを提供します。SAX固有の変換クラスを提供します。StAX固有の変換クラスを提供します。ストリームおよびURIに固有の変換クラスを提供します。XML文書の検証のためのAPIを提供します。XPath式の評価と評価環境へのアクセス用の「オブジェクトモデル・ニュートラル」 APIを提供します。Document Object Model (DOM)のインタフェースを提供します。DOMImplementationのインスタンスを取得するためのファクトリを提供します。DOM Level 2イベントのインタフェースを提供します。DOM Level 3の読み込みと保存のためのインタフェースを提供します。DOM Level 2 Rangeのインタフェースを提供します。DOM Level 2 Traversalのインタフェースを提供します。DOM Level 2 Viewsのインタフェースを提供します。XML (SAX)のシンプルAPIのインタフェースを提供します。適合するSAXドライバが必ずしもサポートしないSAX2機能へのインタフェースを提供します。SAXベースのアプリケーションのブートストラップをサポートするなど、ヘルパー・クラスを提供します。
- 
サービス使用型説明XMLをJavaObjectへ、あるいはJava Objectからマップする新しいjavax.xml.datatypeObjectを作成するファクトリです。アプリケーションでXMLドキュメントからDOMオブジェクト・ツリーを生成するパーサーを取得できるファクトリAPIを定義します。アプリケーションがSAXベースのパーサーを構成および取得してXMLドキュメントを構文解析できるようにするファクトリAPIを定義します。Schemaオブジェクトを作成するファクトリです。TransformerFactoryインスタンスを使用して、TransformerおよびTemplatesオブジェクトを作成できます。このインタフェースは、XMLEventのインスタンスを作成するためのユーティリティ・クラスを定義します。ストリームを取得するためのファクトリの抽象実装を定義します。XMLEventWriterおよびXMLStreamWriterを取得するためのファクトリの抽象実装を定義します。コールバックを使ってXML文書を読み取るためのインタフェースです。XPathFactoryインスタンスを使用して、XPathオブジェクトを作成できます。