指向性メモ::2004-12-31

ページ情報
制作日
2004-12-31T16:03:18+09:00
最終更新日
2004-12-31T16:03:18+09:00

Sablotronはバギー

Created:
2004-12-31T16:03:18+09:00

「名前が違う」だけではアレなので、結果ツリーフラグメント(RTF)だと何が不味いのか、について捕捉。

本来RTFに対して許されている演算は、文字列に対して許されている演算のみなので、ノード集合を値に取るxsl:for-eachselect属性にRTFを放り投げると、まともなプロセッサ(Saxonとか)はエラーを吐く。

しかし、PHP4に搭載されているSablotronは(例によって)RTFをまるでノード集合を扱ってるかのように処理してしまい、エラーは吐かない。困ったプロセッサだ。

ちなみに、いくつかのプロセッサ(Xalanとか)ではXSLT1.0でも結果ツリーフラグメントをノード集合として扱えるような特別な方法が準備されている(バグではないので、明示的に指定する必要がある)。また、XSLT2.0ではRTFに対する制限が取り除かれる予定。

なお、前に1度書いたが、xsl:paramselect属性で(内容ではない!)ノード集合を指定した場合は、RTFではなくて、ノード集合として扱われるので注意が必要。

Comments
0
Trackbacks
0
PermaLink
http://yudai.arielworks.com/memo/2004/12/31/160318
連絡先、リンク、転載や複製などについては『サイト案内』をご覧ください。Powered by HIMMEL

I ♥ Validator