Scala XML API: зачем разрешать NodeSeq в качестве значений атрибутов?

Кажется, что значения атрибутов имеют тип Seq [Node] .

scala> <a b="1"/>.attribute("b")             
res11: Option[Seq[scala.xml.Node]] = Some(1)

Это означает, что вы можете назначить XML как значение атрибута.

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>

Мне это кажется забавным. Я никогда не видел XML как значения атрибутов в реальном мире. Почему это разрешено? Почему значение атрибута просто не относится к типу String ?

8
задан Deduplicator 10 February 2015 в 22:41
поделиться