import java.io.StringReader import org.xml.sax.InputSource import scala.xml.{Node, NodeSeq, Elem, Text, XML} object Test { /** returns true if exception was thrown */ def catcher(att: Function1[Unit, scala.xml.MetaData]): Boolean = { var ex = false try { att.apply({}) } catch { case scala.xml.MalformedAttributeException(msg) => println(msg) ex = true } ex } def main(args: Array[String]) { println("NodeSeq") val p = ; val pelems_1 = for (x <- p \ "bar"; y <- p \ "baz" ) yield { Text(x.attributes("value").toString + y.attributes("bazValue").toString+ "!") }; val pelems_2 = new NodeSeq { val theSeq = List(Text("38!"),Text("58!")) }; assert(pelems_1 sameElements pelems_2) assert(Text("8") sameElements (p \\ "@bazValue")) val books = Blabla Blubabla Baaaaaaalabla ; val reviews = Blabla Hallo Welt. Blubabla Hello Blu Blubabla rem 2 ; println( new scala.xml.PrettyPrinter(80, 5).formatNodes ( for (t <- books \\ "title"; r <- reviews \\ "entry" if (r \ "title") xml_== t) yield { t } { r \ "remarks" } )); // example println( for (t @ Blabla <- new NodeSeq { val theSeq = books.child }.toList) yield t ); val phoneBook = This is the phonebook of the ACME corporation. John +41 21 693 68 67 +41 79 602 23 23 ; val addrBook = This is the addressbook of the ACME corporation. John Elm Street Dolphin City ; println( new scala.xml.PrettyPrinter(80, 5).formatNodes ( for (t <- addrBook \\ "entry"; r <- phoneBook \\ "entry" if (t \ "name") xml_== (r \ "name")) yield { t.child } { r \ "phone" } )); /* namespaces */ // begin tmp println("namespaces") val cuckoo = ; assert(cuckoo.namespace == "http://cuckoo.com") for (n <- cuckoo \ "_" ) { //println("n = "+n); //println("n.prefix = "+n.prefix); //.println("n.scope = "+n.scope); assert( n.namespace == "http://cuckoo.com") } println("validation - elements") val vtor = new scala.xml.dtd.ElementValidator(); { import scala.xml.dtd.ELEMENTS import scala.xml.dtd.ContentModel._ vtor.setContentModel( ELEMENTS( Sequ( Letter(ElemName("bar")), Star(Letter(ElemName("baz"))) ))); } assert(vtor( )) { import scala.xml.dtd.MIXED import scala.xml.dtd.ContentModel._ vtor.setContentModel( MIXED( Alt(Letter(ElemName("bar")), Letter(ElemName("baz")), Letter(ElemName("bal"))))); } assert(vtor( )) assert(vtor(abcdedgh )) assert(!vtor( )) println("validation - attributes") vtor.setContentModel(null) vtor.setMetaData(List()) assert(!vtor( )) { import scala.xml.dtd._ vtor setMetaData List(AttrDecl("bar", "CDATA", IMPLIED)) } assert(!vtor()) assert(vtor()) { import scala.xml.dtd._ vtor.setMetaData(List(AttrDecl("bar","CDATA",REQUIRED))) } assert(!vtor( )) assert( vtor( )) } }