この機能で制限できる項目を次に示します。これらの項目は制限値を変更できます。
XMLPではエンティティ展開時に制限をする機能を提供します。制限する項目を次に示します。
エンティティ参照の展開回数を制限します。XML解析処理で制限値を超えた場合のエラー通知(fatalErrorイベント)または例外発生時のエラーメッセージはKECX01225-Eエラーとなります。
エンティティ参照の展開回数を制限するXML例を次に示します。
表3-15 エンティティ参照の展開回数のXML例
<!DOCTYPE root [ |
上記XML例ではエンティティ参照の展開回数は&x1; &x2; &x3; &x3; &x2; &x3; &x3;の7回となります。
一般エンティティ実体の文字列長を制限します。XML解析処理で制限値を超えた場合のエラー通知(fatalErrorイベント)または例外発生時のエラーメッセージはKECX01232-Eエラーとなります。
一般エンティティの文字列長を制限するXML例を次に示します。
表3-16 一般エンティティ実体の文字列長のXML例
<!DOCTYPE root [ |
上記XML例ではエンティティ参照しているエンティティGE1やGE2について”lmn”(3文字),GE3展開後の”efghabcdijk”(11文字)の文字列長をチェックします。GE3だけのチェックはしません。参照していないGE4についてはチェックされません。
パラメータエンティティ展開後の文字列長を制限します。XML解析処理で制限値を超えた場合のエラー通知(fatalErrorイベント)または例外発生時のエラーメッセージはKECX01232-Eエラーとなります。
パラメータエンティティの文字列長を制限するXML例を次に示します。
表3-17 パラメータエンティティの文字列長のXML例
<!ENTITY % PE2 "abcd"> |
上記XML例では,エンティティPE1はPE2のパラメータエンティティ展開後の”abcdefgh”(8文字)の文字列長を,PE2は“abcd”(4文字)の文字列長をチェックします。エンティティPEG1は一般エンティティGE1を参照しますが,パラメータエンティティから一般エンティティへの参照は展開されず,”&GE1;klmn”(9文字)の文字列長をチェックします。参照されていない外部パラメータエンティティPEEXTのチェックはしません。
一般エンティティとパラメータエンティティの展開後のすべての文字列長の合計の値を制限します。XML解析処理で制限値を超えた場合のエラー通知(fatalErrorイベント)または例外発生時のエラーメッセージはKECX01233-Eエラーとなります。
一般エンティティとパラメータエンティティの展開後の文字列長の合計を制限するXML例を次に示します。
表3-18 エンティティの展開後の文字列長の合計の制限のXML例
<!ENTITY GE3 "abcd"> |
上記XML例では, GE1,GE2だけが参照されている場合,参照されている一般エンティティGE1,GE2と定義されているパラメータエンティティPE1,PE2の展開後の文字列長の合計となるため次のとおり26となります。
XMLスキーマの内容モデルで作成されるノードの最大数を制限する機能を提供します。XML解析処理で制限値を超えた場合のエラー通知(fatalErrorイベント)または例外発生時のエラーメッセージはKECX06248-Eエラーとなります。XMLスキーマの内容モデルで作成されるノードの最大数を制限するXMLスキーマ例を次に示します。
表3-19 内容モデルに関するXMLスキーマ例
<xsd:complexType> |
上記例のとおりXMLスキーマの複合型の大域定義(一番外側に定義された<xsd:complexType>)に対しmaxOccursに大きな値を指定した場合エラーとなります。ただし,maxOccursに制限値より小さな値の場合でもネストの深さやその他のmaxOccursの指定によって内部のカウンタが制限値を超える場合エラーとなります。