Wygląda na to, że wartości atrybutów są typu Seq[Node]
.Scala XML API: Dlaczego zezwolić na NodeSeq jako wartości atrybutów?
scala> <a b="1"/>.attribute("b")
res11: Option[Seq[scala.xml.Node]] = Some(1)
Oznacza to, że można przypisać kod XML jako wartość atrybutu.
scala> <a b={<z><x/></z>}/>.attribute("b")
res16: Option[Seq[scala.xml.Node]] = Some(<z><x></x></z>)
scala> <a b={<z><x/></z>}/>.attribute("b").map(_ \ "x")
res17: Option[scala.xml.NodeSeq] = Some(<x></x>)
scala> new xml.PrettyPrinter(120, 2).format(<a b={<z><x/></z>}/>)
res19: String = <a b="<z><x></x></z>"></a>
Wydaje mi się to zabawne. Nigdy nie widziałem XML jako wartości atrybutów w prawdziwym świecie. Dlaczego jest dozwolone? Dlaczego wartość atrybutu nie jest po prostu typu String
?