Вы можете использовать Group для группировки элементов XML. В XML-литерале это будет выглядеть так:
val xml =
<xml:group>
<div>
<div class="title">title a</div>
<div class="content">content a</div>
</div>
<div>
<div class="title">title b</div>
<div class="content">content b</div>
</div>
</xml:group>
Обновление
Вы можете создавать XML динамически следующим образом:
case class Article(title: String, content: String)
val articles = List(Article("A1", "A1 content"), Article("A2", "A2 content"))
val xml =
<xml:group>{articles map { a =>
<div>
<div class="title">{a title}</div>
<div class="content">{a content}</div>
</div>
}}</xml:group>
Обновление 1
Вот еще один вариант с использованием шаблона. Шаблон это просто функция, которая возвращает XML. В этом случае я использую карри для того, чтобы создать список шаблонов для каждой статьи (для этого еще нужно кое-что предоставить):
case class Article(title: String, content: String)
val articles = List(Article("A1", "A1 content"), Article("A2", "A2 content"))
def articleTemplate[T](article: Article)(stuff: T) =
<div>
<div class="title">{article title}</div>
<div class="content">{article content}</div>
<div class="stuff">{stuff}</div>
</div>
val allArticles = articles map articleTemplate
val allArticlesWithStuff: NodeSeq =
allArticles.zipWithIndex map {case (f, i) => f(i)}