code: func (ce *CompoundElement) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
  	if err := e.EncodeToken(ce.StartElement); err != nil {
  		return err
  	}
  	for _, c := range ce.children {
  		if err := e.EncodeElement(c, ce.StartElement); err != nil {
  			return err
  		}
  	}
  	return e.EncodeToken(ce.End())
  }
docs: // MarshalXML marshals ce to e. start is ignored.