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