Dường như giá trị thuộc tính là loại Seq[Node]
.Scala XML API: Tại sao cho phép NodeSeq làm giá trị thuộc tính?
scala> <a b="1"/>.attribute("b")
res11: Option[Seq[scala.xml.Node]] = Some(1)
Điều này có nghĩa là bạn có thể gán XML làm giá trị thuộc tính.
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>
Điều này có vẻ rất thú vị đối với tôi. Tôi chưa bao giờ thấy XML là các giá trị thuộc tính trong thế giới thực. Tại sao nó được phép? Tại sao giá trị thuộc tính không phải là loại String
?