| pre { | |
| var doc : new Xml!Document; | |
| doc.rootElement = TVApp!Application.allInstances.first().equivalent(); | |
| } | |
| @abstract | |
| rule NamedElement2Element | |
| transform ne : TVApp!NamedElement | |
| to n : Xml!Element { | |
| n.addAttribute("name", ne.name); | |
| } | |
| rule Application2Element | |
| transform a : TVApp!Application | |
| to n : Xml!Element extends NamedElement2Element{ | |
| n.name = "Application"; | |
| n.contents = a.contents.equivalent(); | |
| } | |
| rule Vote2Element | |
| transform v : TVApp!Vote | |
| to n : Xml!Element extends NamedElement2Element { | |
| n.name = "Vote"; | |
| n.contents = v.contents.equivalent(); | |
| } | |
| rule Choice2Element | |
| transform c : TVApp!Choice | |
| to n : Xml!Element extends NamedElement2Element { | |
| n.name = "Choice"; | |
| } | |
| rule Label2Element | |
| transform c : TVApp!Label | |
| to n : Xml!Element extends NamedElement2Element { | |
| n.name = "Label"; | |
| } | |
| rule Text2Element | |
| transform t : TVApp!Text | |
| to e : Xml!Element extends NamedElement2Element { | |
| e.name = "Text"; | |
| var text : new Xml!Text; | |
| text.cdata = t.information; | |
| e.contents.add(text); | |
| } | |
| rule Menu2Element | |
| transform m : TVApp!Menu | |
| to e : Xml!Element extends NamedElement2Element { | |
| e.name = "Menu"; | |
| e.contents = m.contents.equivalent(); | |
| } | |
| operation Xml!Element addAttribute(name : String, value : String) { | |
| var attr : new Xml!Attribute; | |
| attr.name = name; | |
| attr.value = value; | |
| self.attributes.add(attr); | |
| } |