2

Rails Builder テンプレートがあります。

# in app/views/foos/index.xml.builder:
xml.Module do |mod|
  ...
  mod.Content :type => 'url',
          :href => foos_url(:bar => 'baz',
                            :yoo => 'hoo')
end

(OpenSocial モジュール ファイルの XML を作成しますが、これは重要ではありません。)

問題は、レンダリングされた XML が次のようになることです。

<Module>
  ...
  <Content type="url" href="http://myapp.com/foos?bar=baz&amp;amp;yoo=hoo"/>
</Module>

その URL サフィックスは「bar=baz&yoo=hoo.」である必要があります。Builder がアンペアサンドをエスケープしないようにするにはどうすればよいですか?

後で

bar=baz&amp;yoo=hooXML 妥当性規則のソースでは、おそらく URL サフィックスは " " である必要がありますが、ダブルエスケープするべきではありません。

4

3 に答える 3

2

XHTML では(URL であっても)&としてエスケープする必要があり、URL を格納する XML でもこれが必要であり、URL でデコードされる&amp;二重エスケープメント ( ) が必要なためだと思います。 XHTML では必須)。&amp;amp;&amp;

たとえば、次のコードは への有効な XHTML リンクですhttp://example.com/?a=b&c=d

<a href="http://example.com/?a=b&amp;c=d">link</a>

だから私の推測ではfoos_url、すでに を含む URL が返さ&amp;れ、XML モジュールによって再びエスケープされます。

于 2009-09-28T20:33:24.260 に答える
2

私はここで遅れていることを知っています-しかし、(私のような)Googleから来る人にとっての秘訣は、 :escape => false をurl_forに追加することです-そうすれば、URLは一度だけエスケープされます。

于 2010-07-18T16:57:32.160 に答える
0

いいえ、そうすべきではありません。そうしないと、生成された XML ファイルが無効になり、正しいパーサーが変換して &; ファイルの解析時に & に戻ります。

編集:決して気にしないでください。最初のメッセージで & に翻訳されました。

于 2009-09-28T20:18:48.770 に答える