@0xe4b927d74c41a61e;

struct Map(Value) {
  entries @0 :List(Entry);
  struct Entry {
    key @0 :Text;
    value @1 :Value;
  }
}

struct Node {
  tag @0 :Text;
  attributes @1 :Map(Text);
  children @2 :List(Node);
  text @3 :Text; # 直接内容，比如 text 元素的直接内容
}

struct Template {
  meta @0 :Text; # 比如，要求的引擎版本，供能力协商/版本兼容
  struct @1 :Node; # 结构
  style @2 :Map(Map(Text)); # 样式
  binding @3 :Text; # 特殊绑定逻辑
  logic @4 :Text; # 业务逻辑，留未来扩展
}
