2005-07-05 ========== ruby-xslt undefined reference to -------------------------------- Reference URI: http://lowreal.net/logs/2005/07/05/1 Written Time: 2005-07-05T13:51:07+09:00 Tags: web 何度やってもできない。わけわかんないです。-lxml2 -lxslt ついてますよ? /lib に li bxslt.dll.a libxml2.dll.a とかありますよ? つまり今うちの環境で動く XSLT (XSL Transformations) on Ruby はないわけですか。Ruby で XML (Extensible Markup Language) しちゃダメですか…… にぎやかな孤独。 ちなみに、こういうケースでは-lで指定せずに直接*.aファイルを一緒に指定するとうまく いくことがあります。裏技ですが。 とかいうのを見つけたのでやってみたら成功?した。 Makefile の OBJS の最後に /lib/libxml2.dll.a /lib/libxslt.dll.a を追記。 でもこれ tests/ 以下のやつ実行するとエラーでまくるんだけど…… -\ruby-xslt\tests>ruby test_parameters.rbXPath error : Invalid expressionthe firs t parameter ... ^runtime errorEvaluating user parameter p1 failedniltest_param eters.rb:13:in `serve': cannot convert nil into String (TypeError) from te st_parameters.rb:13-\ruby-xslt\tests>ruby test_functions.rbEntity: line 1: parser error : Start tag expected, '<' not foundFloat^Entity: line 1: parser error : St art tag expected, '<' not foundString^Entity: line 1: parser error : Start tag ex pected, '<' not foundstring^Entity: line 1: parser error : Start tag expected, '< ' not foundTrueClass^Entity: line 1: parser error : Start tag expected, '<' not f oundArray^1 is a Float and becomes 1'string' is a String and becomes stringtrue() is a TrueClass and becomes truenodes are type Array and are passed through: Hello, (1) World!(2)'なんか parameters に渡すやつが XPath 式として評価されているようだからクオートして みたらとりあえず動くけど、一度 xslt.serve したあと、parameters に新しく値をセット して xslt.serve しても xsl:param は更新されてない。正しい挙動? 違う気がするけど 、いちいち xslt インスタンス作り直せってことなんだろうか? function のほうはよくわからない。function からの返り値を XML (Extensible Markup Language) として評価しているように見える。そのようだ。"" +arg.class.to_s + "" とかいう文字列を返してやると string( returned value ) みたい (これは xsl:value-o f の効果=xsl:value-of は最終結果を string 関数に渡す) になる。おそらく node-set っ ぽいのを返したりできるようになってる?