src/Pure/General/xml.scala
changeset 34871 e596a0b71f3c
parent 34133 17554065f3be
child 36011 3ff725ac13a4
equal deleted inserted replaced
34870:e10547372c41 34871:e596a0b71f3c
     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) =>