付録A.4 スキーマ検証の動作の差異

スキーマ検証の動作の差異を次の表に示します。

表A-4 スキーマ検証の動作の差異

項番条件XML Processorの動作
バージョン06-00の場合バージョン07-00以降の場合
1スキーマ文書にxsd:key要素が存在し,かつ,インスタンス文書にキーに該当するテキストが存在しない場合エラーにならないことがあります。エラーになります。
2スキーマ文書にxsd:key要素とxsd:keyref要素の組み合わせを指定していて,xsd:key要素とxsd:keyref要素の双方のfield要素の順序と型が一致していない場合エラーにならないことがあります。エラーになります。
3xsd:field要素のxpath属性がchild軸を含むXPath式の場合エラーになりません。child軸が指定できない旨のエラーになります。
4xsd:selector要素のxpath属性が「| ns1:element」のように不当な | 演算子を含むXPath式の場合エラーにならないか,または,XML文書の妥当性検証のエラーになります。スキーマ文書のエラーになります。
5xsd:redefine要素またはxsd:import要素のschemaLocation属性に空文字列を指定した場合エラーになりません。エラーになります。
6xsd:schema要素のtargetNamespace属性に"http://www.w3.org/2001/XMLSchema-instance"を指定している場合-(該当しない)
  • 08-00ではKECX06509-Eのエラーを通知します。
  • 08-50以降ではエラーを通知しません。ただし,広域属性が存在するときには,KECX06198-Eのエラーを通知します。
7次のすべての条件に該当する場合
  1. XMLスキーマ文書でanyURI型またはその派生型を使用している
  2. 1.の定義に対応するデータがRFC2396およびRFC2732の規定に反する文字を含んでいる
KECX06036-Eのエラーを通知します。データ型宣言に適合した値として処理されます。
8次のすべての条件に該当する場合
  1. XMLスキーマ文書でtime型またはdateTime型を使用している
  2. 1.の定義に対応するデータに,秒の値として「60」が指定されている
データ型宣言に適合した値として処理されます。データ型宣言の範囲外の値と見なされて,KECX06036-Eエラーを通知します。
9次のすべての条件に該当する場合
  1. XMLスキーマ文書でtime型またはdateTime型を使用している
  2. 1.の定義に対応するデータに,タイムゾーンオフセットとして-14:01~-14:59または+14:01~+14:59の範囲の値が指定されている
データ型宣言に適合した値として処理されます。データ型宣言の範囲外の値と見なされて,KECX06036-Eエラーを通知します。
10lengthファセットが指定された単純型を基底として,制限による派生でminLengthまたはmaxLengthが指定されている場合エラーになります。エラーになりません。
11次のすべての条件に該当する場合
  1. 検証パース時にエラーハンドラを設定している
  2. 検証パース中に1.のエラーハンドラのerrorまたはfatalErrorメソッドが呼ばれる
  3. 2.のメソッドの中で例外をスローしていない
06-00と07-00以降で通知される妥当性検証エラーが異なる場合があります。
12次の両方の条件に該当する場合
  1. xsd:unique要素のセレクタに指定した要素の型がxsd:anyTypeである
  2. インスタンス文書でxsi:typeグローバル属性を使用して1.の要素の型を単純型に変更する
エラーになります。エラーになりません。
13xsd:anyURI型のインスタンスデータ中に空白がある場合エラーになります。エラーになりません。
14xsd:simpleType要素のfinal属性が空文字列または空白だけの場合エラーになります。エラーになりません。
15xsd:notation要素のpublic属性がない場合KECX06230-Eのエラーを通知します。KECX06256-Eのエラーを通知します。
16xsd:pattern要素のvalue属性の正規表現で「[-」や「-]」を指定した場合エラーになります。エラーになりません。
17次のすべての条件に該当する場合
  1. 要素に対して,xsd:uniqueで一意性を指定する
  2. 1.の要素の型が単純型でない
  3. インスタンス文書内でxsi:typeグローバル属性で,1.の要素の型を単純型に置き換える
  4. 検証パースを実行する
エラーになります。エラーになりません。
18xsd:selector要素に不当なxpath属性を指定した場合KECX06243-Eのエラーを通知します。KECX06241-Eのエラーを通知します。
19xsd:key要素のフィールド(xsd:field要素)のxpath属性に,「要素名/.」というパス式を指定した場合エラーになります。エラーになりません。
20xsd:key要素のセレクタ(xsd:selector要素)に型が異なる複数の要素を指定し,インスタンス文書でキーとなる要素に同じ値を与えた場合エラーになります。エラーになりません。
21xsd:anyURI型の要素に対して長いURI文字列(63バイト以上)を指定した場合エラーになります。エラーになりません。
22xsd:simpleType要素のfinal属性に,"list restriction union"のように空白で区切ったリストを指定した場合エラーになります。エラーになりません。
23xsd:anyURIを基底として制限による派生を行った要素に2バイト文字を含むURIを入れた場合エラーになります。エラーになりません。
24xsd:timeを基底型として制限による派生を行った要素に,秒の値を小数点以下10桁以上で与えた場合(例:13:20:15.2147483648​)エラーになります。エラーになりません。
25xsd:IDREFを基底として制限による派生でxsd:lengthを2以上に固定した場合エラーになります。エラーになりません。
26次の条件に該当するXML文書に対して検証パースを行う場合
  • 入力XML文書中のxsi:schemaLocation属性またはxsi:noNamespaceSchemaLocation属性に存在しない,または読み込めないスキーマ文書が指定されている
ワーニングになりません。KECX06069-Eのワーニングを通知します。
27次のどちらかの条件に該当するスキーマ文書を使って,XML文書の検証パースを行う場合
  • xs:import,xs:includeのschemaLocation属性に存在しない,または読み込めないスキーマ文書が指定されている
  • xs:redefine要素が次の(i)(ii)のどちらかの条件に該当し,schemaLocation属性に存在しない,または読み込めないスキーマ文書が指定されている
    (i) xs:redefine要素の子要素がxs:annotation要素だけである
    (ii)xs:redefine要素に子要素が存在しない
エラーになりません。KECX06069-Eのワーニングを通知します。
28次の個所のどれかに不正な構文のURIを指定した場合
  • インスタンス文書のxsi:schemaLocation属性またはxsi:noNamespaceSchemaLocation属性
  • include要素,import要素またはredefine要素のschemaLocation属性
06-00と07-00以降とでは,URI指定個所と不正な構文のURIの組み合わせによって動作が異なります。例えば,通知するエラーが異なったり,06-00では発生しなかった例外が07-00以降で発生したりする場合があります。
29次の個所のどれかに不正な構文のURIを指定した場合
  • anyAttribute要素のnamespace属性
  • any要素のnamespace属性
  • notation要素のsystem属性
  • appinfo要素のsource属性
  • documentation要素のsource属性
  • import要素のnamespace属性
KECX06229-Eのエラーを通知します。エラーになりません。
30次の個所のどちらかに不正な構文のURIを指定した場合
  • schema要素のtargetNamespace属性
  • redefine要素のschemaLocation属性
KECX06229-Eのエラーを通知します。KECX06039-EまたはKECX06069-Eのエラーを通知します。
メッセージの詳細については,マニュアル「アプリケーションサーバ メッセージ(構築/運用/開発用)」の「11. KECX(XML Processorが出力するメッセージ)」を参照してください。