XML¶
Scala позволяет использовать XML литералы. Xitrum позволяет использовать такую возможность как своеобразный “шаблонизатор”:
- Scala проверяет синтаксис XML во время компиляции: представления безопасны относительно типа.
- Scala автоматически экранирует XML: представления по умолчанию защищены от XSS атак.
Ниже приведены некоторые советы.
Отключения экранирования 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 отображает представления как XHTML автоматически. Допускается делать это самостоятельно:
import scala.xml.Xhtml
val br = <br />
br.toString // => <br></br>, some browsers will render this as 2 <br />s
Xhtml.toXhtml(<br />) // => "<br />"