モジュールjava.xml


モジュールjava.xml
Java API for XML Processing (JAXP)、Streaming API for XML (StAX)、Simple API for XML (SAX)、およびW3C Document Object Model (DOM) APIを定義します。

JAXPルックアップ・メカニズム

JAXPでは、順序付けされたルックアップ・プロシージャを定義して、JAXPファクトリ用にロードする実装クラスを決定します。 メカニズムをサポートするファクトリは、次の表に、プロシージャで使用されるメソッド、システム・プロパティ名、構成ファイルおよびシステム・デフォルト・メソッドとともにリストされています。
JAXPファクトリ
Factory メソッド システム・プロパティ名 構成ファイル システム・デフォルト
DatatypeFactory newInstance() javax.xml.datatype.DatatypeFactory jaxp.properties newDefaultInstance()
DocumentBuilderFactory newInstance() javax.xml.parsers.DocumentBuilderFactory jaxp.properties newDefaultInstance()
SAXParserFactory newInstance() javax.xml.parsers.SAXParserFactory jaxp.properties newDefaultInstance()
XMLEventFactory newFactory() javax.xml.stream.XMLEventFactory stax.propertiesjaxp.properties newDefaultFactory()
XMLInputFactory newFactory() javax.xml.stream.XMLInputFactory stax.propertiesjaxp.properties newDefaultFactory()
XMLOutputFactory newFactory() javax.xml.stream.XMLOutputFactory stax.propertiesjaxp.properties newDefaultFactory()
TransformerFactory newInstance() javax.xml.transform.TransformerFactory jaxp.properties newDefaultInstance()
SchemaFactory newInstance(schemaLanguage) javax.xml.validation.SchemaFactory:schemaLanguage[1] jaxp.properties newDefaultInstance()
XPathFactory newInstance(uri) DEFAULT_PROPERTY_NAME + ":uri"[2] jaxp.properties newDefaultInstance()
[1] ここで、schemaLanguagenewInstance(schemaLanguage)メソッドのパラメータです。

[2] ここで、urinewInstance(uri)メソッドのパラメータです。

jaxp.properties

jaxp.propertiesは、標準のProperties形式の構成ファイルで、通常はJavaインストールのconfディレクトリにあります。 これには、実装クラスの完全修飾名が含まれ、キーが前述の「表」で定義されたシステム・プロパティ名になります。

jaxp.propertiesファイルは実装によって1回のみ読み取られ、その値は将来の使用のためにキャッシュされます。 最初の読込み時にファイルが存在しないと、そのあとにその存在がチェックされることはない。 初めて読み込まれたプロパティの値は変更できません。

stax.properties

stax.propertiesは、StAXファクトリ・ルックアップでのみ使用されることを除き、jaxp.propertiesと同じ機能を持つ構成ファイルです。

ルックアップ・プロシージャ

「JAXPファクトリ」は、次に示す手順に従って実装クラスを特定およびロードします:
実装上のノート:

実装固有の機能およびプロパティ

このモジュールのパブリックAPIに記述された標準の機能やプロパティに加えて、JDK実装では、実装固有の多くの機能とプロパティがサポートされています。 このセクションでは、ネーミング規則、システム・プロパティ、jaxp.properties、スコープと順序、およびプロパティが適用されるプロセッサについて説明します。 現在実装でサポートされている実装固有の機能およびプロパティの一覧表については、このノートを参照してください。

ネーミング規則

機能およびプロパティの名前は、プレフィクスと名前で構成される完全修飾名になります。

接頭辞

JDKの機能とプロパティのプレフィクス、および対応するシステム・プロパティ(存在する場合)の定義は次のとおりです:
     jdk.xml.
 

名前

名前は、大文字と小文字が区別される1つまたは複数の単語で構成されます。 最初の単語のすべての文字は小文字ですが、後続の単語の最初の文字は大文字で始まります。

XML文書がスタンドアロンであるかどうかを示すプロパティの例は、次のような形式になります:

     jdk.xml.isStandalone
 
対応するシステム・プロパティ:
     jdk.xml.isStandalone
 

システム・プロパティ

プロパティは、同じ名前の対応するシステム・プロパティを持つことができます。 システム・プロパティはプロセッサを作成する前に設定する必要があり、あとでクリアできます。

jaxp.properties

jaxp.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.setFeature(name, value);

実装固有の機能およびプロパティ

実装固有の機能およびプロパティには、API仕様に準拠しながらリソースに関する制限を管理できるJDKの選択肢が反映されています。また、アプリケーションでは、標準に必要な動作以外に動作を変更できます。

次の表に、JDKで現在サポートされている実装固有のプロパティを示します。 必要に応じて、将来的にプロパティを追加できます。

実装固有のプロパティ
フル・ネーム (プレフィクス+名前) [1] 説明 APIプロパティ [2] システム・プロパティ [3] jaxp.properties [3] [4] セキュリティ [5] サポートされるプロセッサ [6] 以降 [7]
デフォルト Enforced
jdk.xml.entityExpansionLimit エンティティの展開数を制限します。 yes yes yes 整数 正の整数 0以下の値は、制限がないことを示します。 値が整数でない場合、NumberFormatExceptionがスローされます。 64000 64000 はい DOM
SAX
StAX
Validation
Transform
8
jdk.xml.elementAttributeLimit 1つの要素で使用できる属性の数を制限します。 10000 10000
jdk.xml.maxOccurLimit "制限なし"以外の値を持つ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宣言を書き出すかどうかには影響しません。 yes yes yes boolean true/false false 該当なし No DOMLS 17
jdk.xml.xsltcIsStandalone 「XSLTCシリアライザ」が出力をスタンドアロン文書として扱うことを示します。 このプロパティを使用して、XML宣言のあとに改行を記述できます。 OMIT_XML_DECLARATIONプロパティとは異なり、このプロパティはXML宣言を書き出すかどうかには影響しません。

このプロパティは、「XSLTCシリアライザ」およびその値がStringである点を除き、前述のDOMLSと同様に動作します。

yes yes yes String yesまたはno no 該当なし No XSLTCシリアライザ 17
jdk.xml.cdataChunkSize プロパティがゼロまたは指定されていない場合、またはゼロより大きい場合は複数のチャンクでCDataセクションにデータを返すようにパーサーに指示します。 パーサーは、データを改行で分割し、指定したサイズよりも大きいチャンクをサイズ以下に分割します。 yes yes yes 整数 正の整数 0以下の値は、プロパティが指定されていないことを示します。 値が整数でない場合、NumberFormatExceptionがスローされます。 0 該当なし No SAX
StAX
9
jdk.xml.extensionClassLoader XSLTC java拡張関数のロードに使用するnull以外のClassLoaderインスタンスを設定します。 yes no no Object ClassLoaderオブジェクトへの参照。 値が指定されていない場合はNULL。 null 該当なし No Transform 9
jdk.xml.xpathExprGrpLimit XPath式に含めることができるグループの数を制限します。 Transform:yes
XPath:no
yes yes 整数 正の整数 0以下の値は、制限がないことを示します。 値が整数でない場合、NumberFormatExceptionがスローされます。 10 10 はい Transform
XPath
19
jdk.xml.xpathExprOpLimit XPath式に含めることができる演算子の数を制限します。 100 100
jdk.xml.xpathTotalOpLimit XSLスタイル・シート内のXPath演算子の合計数を制限します。 yes 10000 10000 Transform

次の表に、JDKで現在サポートされている実装固有の機能を示します。 必要に応じて、将来的にさらなる機能を追加できます。

実装固有の機能
フル・ネーム (プレフィクス+名前) [1] 説明 APIプロパティ [2] システム・プロパティ [3] jaxp.properties [3] [4] セキュリティ [5] サポートされるプロセッサ [6] 以降 [7]
デフォルト Enforced
jdk.xml.enableExtensionFunctions XSLTおよびXPath拡張関数を許可するかどうかを決定します。 yes yes yes Boolean trueまたはfalse。 Trueは拡張関数が許可されることを示します。それ以外の場合はFalseです。 true false はい Transform
XPath
8
jdk.xml.overrideDefaultParser サード・パーティのパーサー実装を使用して、JDK変換、検証およびXPath実装のシステム・デフォルト・パーサーをオーバーライドできます。 trueまたはfalse。 Trueを使用すると、サード・パーティ・パーサー実装を使用して、XML変換、検証またはXPath操作中にシステム・デフォルト実装をオーバーライドできます。 Falseを指定すると、サードパーティのパーサー実装を使用できなくなります。 false false はい 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] プロパティが導入された初期リリースを示します。

レガシー・プロパティ名 (非推奨)

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

モジュール・グラフ:
java.xmlのモジュール・グラフjava.xmlのモジュール・グラフ
導入されたバージョン:
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をJava Objectへ、あるいはJava Objectからマップする新しいjavax.xml.datatype Objectを作成するファクトリです。
    アプリケーションでXMLドキュメントからDOMオブジェクト・ツリーを生成するパーサーを取得できるファクトリAPIを定義します。
    アプリケーションがSAXベースのパーサーを構成および取得してXMLドキュメントを構文解析できるようにするファクトリAPIを定義します。
    Schemaオブジェクトを作成するファクトリです。
    TransformerFactoryインスタンスを使用して、TransformerおよびTemplatesオブジェクトを作成できます。
    このインタフェースは、XMLEventのインスタンスを作成するためのユーティリティ・クラスを定義します。
    ストリームを取得するためのファクトリの抽象実装を定義します。
    XMLEventWriterおよびXMLStreamWriterを取得するためのファクトリの抽象実装を定義します。
    コールバックを使ってXML文書を読み取るためのインタフェースです。
    XPathFactoryインスタンスを使用して、XPathオブジェクトを作成できます。