Полагаю, это моя вина, я пытался сделать вопрос как можно более общим. Ответ, который я искал, был каким-то образом обновить литералы XML из внешнего хранилища во время выполнения.
Лучший способ сделать это - шаблоны. Есть несколько вариантов для Scala:
Для моего проекта я нашел Scalate как нельзя лучше подходящим. Итак, отвечая на мой вопрос, это выглядело бы примерно так:
import scala.xml._
import org.fusesource.scalate._
def foo(bar:String) = s"The FOO is $bar"
val engine = new TemplateEngine
val template = engine.load("test.ssp", List(Binding("foo", "String")))
val str1 = engine.layout("test.ssp",Map("foo"-> foo("bar")))
val str2 = engine.layout("test.ssp",Map("foo"-> foo("updated")))
с шаблоном "test.ssp" просто:
<a>${foo}</a>