[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[kahua-dev:00748] 属性値文字列に '( アポストロフィ) が含まれている場合
属性値文字列に'(アポストロフィ)が含まれている場合、
kahua-web では属性値文字列が'の位置で終端されて解釈されてしまいます。
たとえば、[[/User's Manual]]というページを作ろうとすると、
User's Manual<a href='http:/localhost/cgi-bin/kahua.cgi/kahua-web/edit/User's%20Manual'>?</a>
のようなリンクができてしまい、href の属性が
「http://localhost/cgi-bin/kahua.cgi/kahua-web/edit/User's%20Manual」ではなく
「http://localhost/cgi-bin/kahua.cgi/kahua-web/edit/User」と解釈されています。;
このようなことが起こるのは、sxml.tools モジュールで定義されている
sxml:attr->xml が属性値を常に'(シングルクウォート=アポストロフィ)で
囲みますが、uri-encode(-string)が ' をエスケープしないことに起因します。
対処法は以下のようなものが考えました。
(1) sxml:attr->xml を書き換えて、属性値文字列の中に ' が含まれている場合
"(ダブルクウォート)で属性値を囲むようにする。
(2) sxml:attr->xml を使わず、自前の sxml:attr->xml 相当を(1)のように定義して
それを使う。
(3) uri-encode(-string) を拡張して、:escape キーワード引数で、' などの
unreserved 文字をエスケープできるようにして、それを使う。
(4) uri-encode(-string) を使わず、自前の uri-encode(-string)相当を(3)のように
定義してそれを使う。
結局、(2)を選択しました。
--nobsun