equal
deleted
inserted
replaced
7 package isabelle |
7 package isabelle |
8 |
8 |
9 import java.util.WeakHashMap |
9 import java.util.WeakHashMap |
10 import java.lang.ref.WeakReference |
10 import java.lang.ref.WeakReference |
11 import javax.xml.parsers.DocumentBuilderFactory |
11 import javax.xml.parsers.DocumentBuilderFactory |
12 |
|
13 import org.w3c.dom.{Node, Document} |
|
14 |
12 |
15 |
13 |
16 object XML |
14 object XML |
17 { |
15 { |
18 /* datatype representation */ |
16 /* datatype representation */ |
149 } |
147 } |
150 |
148 |
151 |
149 |
152 /* document object model (W3C DOM) */ |
150 /* document object model (W3C DOM) */ |
153 |
151 |
154 def get_data(node: Node): Option[XML.Tree] = |
152 def get_data(node: org.w3c.dom.Node): Option[XML.Tree] = |
155 node.getUserData(Markup.DATA) match { |
153 node.getUserData(Markup.DATA) match { |
156 case tree: XML.Tree => Some(tree) |
154 case tree: XML.Tree => Some(tree) |
157 case _ => None |
155 case _ => None |
158 } |
156 } |
159 |
157 |
160 def document_node(doc: Document, tree: Tree): Node = |
158 def document_node(doc: org.w3c.dom.Document, tree: Tree): org.w3c.dom.Node = |
161 { |
159 { |
162 def DOM(tr: Tree): Node = tr match { |
160 def DOM(tr: Tree): org.w3c.dom.Node = tr match { |
163 case Elem(Markup.DATA, Nil, List(data, t)) => |
161 case Elem(Markup.DATA, Nil, List(data, t)) => |
164 val node = DOM(t) |
162 val node = DOM(t) |
165 node.setUserData(Markup.DATA, data, null) |
163 node.setUserData(Markup.DATA, data, null) |
166 node |
164 node |
167 case Elem(name, atts, ts) => |
165 case Elem(name, atts, ts) => |