ruby-xslt undefined reference to
何度やってもできない。わけわかんないです。-lxml2 -lxslt ついてますよ? /lib に libxslt.dll.a libxml2.dll.a とかありますよ?
つまり今うちの環境で動く XSLT on Ruby はないわけですか。Ruby で XML しちゃダメですか……
にぎやかな孤独。
ちなみに、こういうケースでは-lで指定せずに直接*.aファイルを一緒に指定するとうまくいくことがあります。裏技ですが。
とかいうのを見つけたのでやってみたら成功?した。
Makefile の OBJS の最後に /lib/libxml2.dll.a /lib/libxslt.dll.a を追記。
でもこれ tests/ 以下のやつ実行するとエラーでまくるんだけど……
-\ruby-xslt\tests>ruby test_parameters.rb XPath error : Invalid expression the first parameter ... ^ runtime error Evaluating user parameter p1 failed nil test_parameters.rb:13:in `serve': cannot convert nil into String (TypeError) from test_parameters.rb:13 -\ruby-xslt\tests>ruby test_functions.rb Entity: line 1: parser error : Start tag expected, '<' not found Float ^ Entity: line 1: parser error : Start tag expected, '<' not found String ^ Entity: line 1: parser error : Start tag expected, '<' not found string ^ Entity: line 1: parser error : Start tag expected, '<' not found TrueClass ^ Entity: line 1: parser error : Start tag expected, '<' not found Array ^ 1 is a Float and becomes 1 'string' is a String and becomes string true() is a TrueClass and becomes true nodes are type Array and are passed through: Hello, (1) World!(2) '
なんか parameters に渡すやつが XPath 式として評価されているようだからクオートしてみたらとりあえず動くけど、一度 xslt.serve したあと、parameters に新しく値をセットして xslt.serve しても xsl:param は更新されてない。正しい挙動? 違う気がするけど、いちいち xslt インスタンス作り直せってことなんだろうか?
function のほうはよくわからない。function からの返り値を XML として評価しているように見える。そのようだ。"<dummy>" +arg.class.to_s + "</dummy>" とかいう文字列を返してやると string( returned value ) みたい (これは xsl:value-of の効果=xsl:value-of は最終結果を string 関数に渡す) になる。おそらく node-set っぽいのを返したりできるようになってる?
関連エントリー
- ruby-xslt 0.9.1 ちゃんとエラークラス吐くバージョンがリリース。kiyoya さんのパッチ。 ruby extconf.rb --enable-error-h...
- ruby-xslt 0.8.2 新しくなっているのに気付いた。 ruby extconf.rb --enable-error-handler (off by default...
- Ruby/XSLT て パラメータ渡せないくさいんだけど、もし本当にそうならあんまりこのまま使えないなぁ。XSLT ファイルを一回パースして xsl:param に...
- ruby-xslt の parameters= parameters= に渡す値はすべて自分でクオートしとこう。 libxslt はもともとパラメータの値に XPath そのまんま書けるん...
- ruby-xslt on XREA make がうまくいったっぽいのでメモ。ちなみに数度要望の末 ruby-xslt を入れてもらってある (この過程で別の鯖と違う点があるかも...