Category xml.

Studying XML -- second step -- [ エスケープ ] (via XML の CDATA 中では ]]> のエスケープが必要)で ]]> を書くときは ]]> のようにエスケープすればよいみたいなことが書かれているけど、CDATA セクション内ではそもそも & の扱いもなくなる (CDATA セクション内では ]]> のみがマークアップとして扱われる。Within a CDATA section, only the CDEnd string is recognized as markup) ので意図した挙動 (]]> がアンエスケープ) にならない。

結論をいうと CDATA セクションに ]]> をそのまま含めることは不可能で、どうしても CDATA セクションを書きたいよぅって時は二つにわけないとダメ。すなわち <!CDATA[[]]]]><CDATA[[>]]> とするしかない。

  1. トップ
  2. web
  3. CDATA セクション内に ]]>
  1. トップ
  2. xml
  3. CDATA セクション内に ]]>

ruby-xslt 使うと XSLT から Ruby のメソッドを呼べるみたいなので、とても使ってみたい。(何をするか、はともかく)

ただ、ちょっと実装が残念な形。

class XML::XSLT
def round_trip( arg )
arg
end
def type( arg )
arg.class.to_s
end
end
xslt = XML::XSLT.new()
xslt.xsl = "functions.xsl"
xslt.xml = "test.xml"
xslt.extFunction("roundTrip", "http://test.none", xslt, "round_trip")
xslt.extFunction("type", "http://test.none", xslt, "type")

俺としては Proc オブジェクトとか、ブロックを直接渡したい。すなわち次のように

xslt.extFunction("roundTrip", "http://test.none/", xslt) do |arg|
arg
end
#または
round_trip = lambda {|arg| arg}
xslt.extFunction("roundTrip", "http://test.none", xslt, round_trip)
# あるいはまとめたクラス / インスタンスを登録する形。
# もとのヤツに似ているけど名前が衝突しない。
class XSLTFunctions
def round_trip(arg)
arg
end
def type(arg)
arg.class.to_s
end
end
xslt.set_ext_functions("http://test.none", XSLTFunctions) # XSLTFunctions.new
# この場合 XSLT から呼ぶ関数名は Ruby でのメソッド名と同じになる。とか。
# やはり Ruby は書いていて気持ちいい。

ちょっとどうでもいいけど、なんかこの PC 描画がおかしい。温度のせい?

再起動したらなおった? ちょっと時間おかないと分からない。

限りなく不安定な PC だ。グラフィックボードにもファンがついているから、グラフィックボードが暑くて困っているのかもしれない。しかしゲームのとき気にならない (or 症状が出ていない?) のはなぜだろう。最も影響うけやすそうなんだけど。

  1. トップ
  2. web
  3. リハビリと ruby-xslt
  1. トップ
  2. xml
  3. リハビリと ruby-xslt
  1. トップ
  2. xslt
  3. リハビリと ruby-xslt

別にほら XML Master のまわしもんじゃないですよ?

詳しくは哀さんが、『XML マスター』受験オフ会のお誘い~2005 年初夏~ とか書いてます。

いやこれここ数ヶ月 XML っていったら日記書くときしか使ってないよっていう。やばいね。やばい。

あとは #XSLT @ IRCNet あたりをてけとーに眺めると分かるのかな。知らない。

  1. トップ
  2. xml
  3. XML Master 受験オフ
  1. トップ
  2. web
  3. XML Master 受験オフ