表6-10 XSLTCに関する注意事項(XSLT要素)
項番 | 注意事項 |
---|---|
1 | xsl:apply-imports要素が処理されません。 |
2 | テンプレートがxsl:with-paramによってパラメタとしてノード集合を受け取った場合,そのパラメタをxsl:apply-templates要素のselect属性で参照すると,それ以降,同じパラメタを参照してもノード集合を取得できなくなります。 |
3 | xsl:attribute要素の子要素がxsl:copyの場合,出力される属性値が空になります。 |
4 | xsl:attribute要素の内容にxsl:value-of要素を指定する場合は,select属性に指定するXPath式を絶対ロケーションパスで記述してください。 |
5 | xsl:attribute-set要素がuse-attribute-sets属性で自分自身を参照(循環参照)する場合,XSLTCではスタックオーバーフローが発生します。 |
6 | すべての属性の属性値が等しいxsl:decimal-format要素を複数個定義した場合,XSLTCはエラーを通知します。 |
7 | xsl:element要素またはxsl:attribute要素のname属性には属性値テンプレートを指定しないでください。 |
8 | 次の条件がすべて重なるとき,要素が属する名前空間が不正になります。
<xsl:template match="/"> |
9 | xsl:for-each要素のselect属性に述部を持つXPath式を指定する場合,述部に「ノードを比較対象とする式」を指定しないでください。この場合,スタイルシートを次のように変更してください。
(変更前) <xsl:template match="/"> <xsl:template match="/"> |
10 | xsl:for-each要素のselect属性に「"descendant::node()"または"descendant-or-self::node()"を含むXPath式」を指定しないでください。要素ノードおよびテキストノードを選択する目的でこのようなXPath式を使用する場合は,スタイルシートを次のように変更してください。
|
11 | xsl:if要素またはxsl:when要素のtest属性に「self軸と述部を両方持つXPath式」を指定しないでください。この場合,スタイルシートを次のように変更してください。
(変更前) <xsl:template match="/element/sub"> <xsl:template match="/element/sub"> |
12 | xsl:import要素のhref属性の値が空文字列または空白だけの場合,errorイベントが発生し,エラーメッセージとして"null"が出力されます。 |
13 | xsl:number要素のcount属性に"node()"を含むパターンを指定しないでください。要素ノードを番号付けする目的で"node()"を使用する場合は,代わりに"*"または"要素名"を使用してください。 |
14 | xsl:number要素またはxsl:decimal-format要素のgrouping-separator属性に複数の空白文字列や1文字以上の文字列,または全角文字を指定した場合,エラーにはならず,指定した文字列で区切られた値が出力されます。 |
15 | xsl:number要素のcount属性に"/"を指定した場合,XSLTでは"1"が出力されますが,XSLTCではjava.lang.VerifyErrorが発生します。 |
16 | xsl:number要素のfrom属性に"/"を指定した場合,XSLTでは"1"が出力されますが,XSLTCではjava.lang.VerifyErrorが発生します。 |
17 | xsl:output要素のdoctype-public属性には空文字列以外の文字列を指定してください。同様に,TransformerクラスのsetOutputPropertyメソッドを用いてdoctype-publicプロパティを設定する場合も,空文字列以外の文字列を指定してください。 |
18 | xsl:processing-instruction要素のname属性に,処理命令のターゲット名として許されない"XML"を指定した場合,"<?XML?>"という不正な処理命令が出力されます。 |
19 | xsl:sortのdata-type属性に不正な値"NUMBER"(大文字)を指定した場合,デフォルト動作("text"が指定された場合と同じ順序でソートする)が行われません。 |
20 | xsl:sortのorder属性に不正な値"DESCENDING"(大文字)を指定した場合,デフォルト動作("ascending"が指定された場合と同じ順序でソートする)が行われません。 |
21 | xsl:template要素のmatch属性に「"node()"を含み,かつ,その後ろにロケーションパスが続くXPath式」を指定しないでください。要素ノードを選択する目的で"node()"を使用する場合は,代わりに"*"を使用してください。スタイルシートの変更例を次に示します。 (変更前) <xsl:template match="/node()/sub"> <xsl:template match="/*/sub"> |
22 | xsl:template要素の子要素としてトップレベル要素を書いた場合,無視されずに有効な子要素として処理されます。 |
23 | xsl:value-of要素のselect属性に,負のゼロを引数とするstring関数を記述した場合,XSLTでは"0"が出力されますが,XSLTCでは"-0"が出力されます。 |
24 | xsl:variable要素の子要素にxsl:call-template要素を指定し,かつ,xsl:call-templateで呼び出されたテンプレート内に名前空間接頭辞を持つリテラル要素がある場合,xsl:copy-of要素でその変数が示す要素をコピーすると,要素の名前空間宣言が正しくコピーされません。 |
25 | リテラル結果要素にxsl:extension-element-prefixes属性を指定して拡張要素とした場合,拡張要素の子要素として書かれたxsl:fallback要素が無視されます。代わりにxsl:stylesheet要素にextension-element-prefixes属性を指定してください。 |
26 | スタイルシート内で仕様上,許されない場所に子要素を書いた場合(例:xsl:stylesheet要素の子要素としてリテラル要素を書いた場合,xsl:namespace-alias要素の子要素としてxsl:text要素が現れた場合など),エラーにはならないで,不正な子要素が無視されます。 |