XML === ScalaではXMLリテラルを記述することが可能です。Xitrumではこの機能をテンプレートエンジンとして利用しています。 * ScalaコンパイラによるXMLシンタックスチェックは、Viewの型安全につながります。 * ScalaによるXMLの自動的なエスケープは、`XSS <http://en.wikipedia.org/wiki/Cross-site_scripting>`_ 攻撃を防ぎます。 いくつかのTipsを示します。 XMLのアンエスケープ ------------------- ``scala.xml.Unparsed`` を使用する場合: :: import scala.xml.Unparsed <script> {Unparsed("if (1 < 2) alert('Xitrum rocks');")} </script> ``<xml:unparsed>`` を使用する場合: :: <script> <xml:unparsed> if (1 < 2) alert('Xitrum rocks'); </xml:unparsed> </script> ``<xml:unparsed>`` は実際の出力には含まれません: :: <script> if (1 < 2) alert('Xitrum rocks'); </script> XMLエレメントのグループ化 ------------------------- :: <div id="header"> {if (loggedIn) <xml:group> <b>{username}</b> <a href={url[LogoutAction]}>Logout</a> </xml:group> else <xml:group> <a href={url[LoginAction]}>Login</a> <a href={url[RegisterAction]}>Register</a> </xml:group>} </div> ``<xml:group>`` は実際の出力には含まれません。ユーザーがログイン状態の場合、以下のように出力されます: :: <div id="header"> <b>My username</b> <a href="/login">Logout</a> </div> XHTMLの描画 ----------- XitrumはviewとレイアウトはXHTMLとして出力します。 レアケースではありますが、もしあなたが直接、出力内容を定義する場合、以下のコードが示す内容に注意してください。 :: import scala.xml.Xhtml val br = <br /> br.toString // => <br></br>, この場合ブラウザによってはbrタグが2つあると認識されることがあります。 Xhtml.toXhtml(<br />) // => "<br />"