equal
deleted
inserted
replaced
47 } |
47 } |
48 |
48 |
49 |
49 |
50 /* document object model (DOM) */ |
50 /* document object model (DOM) */ |
51 |
51 |
52 def DOM(tree: Tree) = { |
52 def document(tree: Tree, styles: String*) = { |
53 val doc = DocumentBuilderFactory.newInstance.newDocumentBuilder.newDocument |
53 val doc = DocumentBuilderFactory.newInstance.newDocumentBuilder.newDocument |
|
54 doc.appendChild(doc.createProcessingInstruction("xml", "version=\"1.0\"")) |
|
55 |
|
56 for (style <- styles) { |
|
57 doc.appendChild(doc.createProcessingInstruction("xml-stylesheet", |
|
58 "href=\"" + style + "\" type=\"text/css\"")) |
|
59 } |
|
60 |
|
61 // main body |
54 def dom_tree(tr: Tree): Node = tr match { |
62 def dom_tree(tr: Tree): Node = tr match { |
55 case Elem(name, atts, ts) => { |
63 case Elem(name, atts, ts) => { |
56 val node = doc.createElement(name) |
64 val node = doc.createElement(name) |
57 for ((name, value) <- atts) node.setAttribute(name, value) |
65 for ((name, value) <- atts) node.setAttribute(name, value) |
58 for (t <- ts) node.appendChild(dom_tree(t)) |
66 for (t <- ts) node.appendChild(dom_tree(t)) |
65 case Text(_) => dom_tree(Elem("root", Nil, List(tree))) |
73 case Text(_) => dom_tree(Elem("root", Nil, List(tree))) |
66 } |
74 } |
67 doc.appendChild(root_elem) |
75 doc.appendChild(root_elem) |
68 doc |
76 doc |
69 } |
77 } |
70 |
|
71 } |
78 } |