[Gauche-devel-jp] Re: SXMLで属性値文字列にアポストロフィが含まれる場合の変換処理

Back to archive index

Nobuo Yamashita nobsu****@sampo*****
2004年 8月 27日 (金) 13:21:09 JST


> ここは混乱が多いところなので、整理しておきましょう。
> 
> uriを含むHTML文書を作成する場合の順序は、
> 
> (1) uriを構成する各要素 (パス名のコンポーネントや、
>     queryの属性名、属性値等) に対してuri-encodeをかける。
> (2) uriの要素をくっつける (ここで、query-stringのセパレータである'?'や'&'、
>     fragmentのセパレータである'#'が挿入される。これらのセパレータは
>     uri-encodeしてはいけない)
> (3) html-encodeする
> 
> HTMLを受け取り、uriを解釈する側の順序はこの逆で、
> 
> (1') html-decodeする
> (2') uriを要素毎に切り離す
> (3') uriの各要素についてuri-decodeする
> 
> となります。但し、cgiの場合は受け取るのがhtmlではないので、
> 上記(2'), (3')の手順だけです。(1')はクライアント側で行われます。

あっそうか、cgi とのやりとりの際の(1')は通常ブラウザがやってくれのね。

ううむ。現在の SXML の sxml:sxml->html や sxml:sxml->xml を使って、SXML を
HTML や XML に変換する場合、元になる SXML を構成するときに、属性値文字列は、
(3)までを済ませた文字列を、コンテンツ部分の文字列は、(3)を済ませていない
文字列を使って構成しなけばならないですね。

sxml:attr->html や sxml:attr->xml が属性値文字列の HTML (XML)エスケープを
やるということにして、SXML を構成する文字列は、属性値、コンテンツに
かかわらず、HTML(XML)エスケープをしていない文字列を使うという仕様の方が
使いよい気もするけど。。。どうなんだろ。

--nobsun



Gauche-devel-jp メーリングリストの案内
Back to archive index