XSLT エラーの解決

W3C 勧告『XSL Transformations (XSLT) Version 1.0』には、対処方法を実装者が決定できる事項があります。 このような事項は、随意動作と見なされています。 たとえば、XSLT 1.0 Recommendation は、セクション 7.3「Creating Processing Instructions」で、xsl:processing-instruction の内容をインスタンス化したときに、テキスト ノード以外のノードが作成されるのはエラーであるとしています。 いくつかの問題に関しては、プロセッサがエラー状態から回復するときにどのような対処をするべきかを、XSLT 1.0 Recommendation が規定しています。 セクション 7.3 に記述されている問題に関しては、W3C では、作成されたノードとその内容を無視することで、このエラーから回復できるとしています。

随意動作

XSLT 1.0 Recommendation で許可されている随意動作と XslCompiledTransform クラスによるこれらの動作の処理方法を次の表に示します。

XSLT の状態 セクション XslCompiledTransform の動作
テキスト ノードが xsl:strip-spacexsl:preserve-space の両方に適合している。 3.4 復元
ソース ノードが複数のテンプレート規則に適合している。 5.5 復元
1 つの名前空間 URI が同じインポート優先順位を持つ複数の名前空間 URI のエイリアスとして宣言されている。 7.1.1 復元
属性値から生成された namexsl:attribute 内の xsl:element 属性が QName ではない。 7.1.2, 7.1.3 エラー*
同じインポートおよび展開名を持つ 2 つの属性セットに共通の属性が含まれており、これらの属性セット以外に、同じ名前で優先順位の高い共通属性を含む属性セットがない。 7.1.4 復元
要素に子が既に追加されているにもかかわらず、その要素に属性が追加される。 7.1.3 エラー*
'xmlns' という名前を持つ属性が作成される。 7.1.3 エラー*
要素ではないノードに属性が追加される。 7.1.3 エラー*
xsl:attribute 属性の内容をインスタンス化する際にテキスト ノード以外のノードが作成される。 7.1.3 エラー*
namexsl:processing-instruction 属性が NCName と処理命令ターゲットのどちらも生成しない。 7.3 エラー*
xsl:processing-instruction の内容をインスタンス化すると、テキスト ノード以外のノードが作成される。 7.3 エラー*
xsl:processing-instruction の内容をインスタンス化した結果に文字列 "?>" が含まれている 7.3 復元
xsl:processing-instruction の内容をインスタンス化した結果に文字列 "--" が含まれているか、または "-" で終了している。 7.4 復元
xsl:comment の内容をインスタンス化した結果、テキスト ノード以外のノードが作成される。 7.4 エラー*
変数バインディング要素内のテンプレートが属性ノードまたは名前空間ノードを返す。 11.2 エラー*
document 関数に渡された URI からのリソースの取得時にエラーが発生する。 12.1 Error
document 関数内の URI 参照にフラグメント ID が含まれており、その ID を処理するとエラーが発生する。 12.1 復元*
同じ名前とさまざまな値を持つ複数の属性があり、これらの属性が同じインポート優先順位を持つ xsl:output の名前付き cdata-section 要素にならない。 16 復元
プロセッサが xsl:output の encoding 属性のエンコーディングをサポートしない。 16.1 復元
テキスト ノードの出力エスケープが無効で、そのテキスト ノードが結果ツリーのテキスト ノード以外のもののために使用されている。 16.4 復元*
出力エスケープが有効に設定されているテキスト ノードが結果ツリー フラグメントに含まれている場合に、そのフラグメントが数値や文字列に変換される。 16.4 復元*
XSLT プロセッサが出力に使用しているエンコーディングで表すことができない文字に対して、出力エスケープが無効に設定される。 16.4 復元*
要素に子または属性が追加された後で、その要素に名前空間ノードが追加される。 errata 25 エラー*
valuexsl:number 属性が NAN、無限、または 0.5 未満である。 errata 24 復元
document 関数への 2 番目の引数ノード セットが空であり、URI 参照が相対 URI 参照である。 errata 14 復元

* この動作は、XslTransform クラスの動作とは異なります。 詳細については、「XslTransform クラスの随意動作の実装」を参照してください。

関連項目