blob: cd6ac1cdb0e2823c9f500782804ac14117d1fb3b [file] [log] [blame]
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);
}