Check the global required and highly recommended attributes for 1.1 templates. These go an extra step besides
        just checking that they exist.

        :param netCDF4.Dataset dataset: An open netCDF dataset


        :Conventions = "CF-1.6" ; //......................................... REQUIRED    - Always try to use latest value. (CF)
        :Metadata_Conventions = "Unidata Dataset Discovery v1.0" ; //........ REQUIRED    - Do not change. (ACDD)
        :featureType = "timeSeries" ; //..................................... REQUIRED - CF attribute for identifying the featureType.
        :cdm_data_type = "Station" ; //...................................... REQUIRED (ACDD)
        :nodc_template_version = "NODC_NetCDF_TimeSeries_Orthogonal_Template_v1.1" ; //....... REQUIRED (NODC)
        :standard_name_vocabulary = "NetCDF Climate and Forecast (CF) Metadata Convention Standard Name Table "X"" ; //........ REQUIRED    - If using CF standard name attribute for variables. "X" denotes the table number  (ACDD)

def check_base_required_attributes(self, dataset):
        '''
        Check the global required and highly recommended attributes for 1.1 templates. These go an extra step besides
        just checking that they exist.

        :param netCDF4.Dataset dataset: An open netCDF dataset


        :Conventions = "CF-1.6" ; //......................................... REQUIRED    - Always try to use latest value. (CF)
        :Metadata_Conventions = "Unidata Dataset Discovery v1.0" ; //........ REQUIRED    - Do not change. (ACDD)
        :featureType = "timeSeries" ; //..................................... REQUIRED - CF attribute for identifying the featureType.
        :cdm_data_type = "Station" ; //...................................... REQUIRED (ACDD)
        :nodc_template_version = "NODC_NetCDF_TimeSeries_Orthogonal_Template_v1.1" ; //....... REQUIRED (NODC)
        :standard_name_vocabulary = "NetCDF Climate and Forecast (CF) Metadata Convention Standard Name Table "X"" ; //........ REQUIRED    - If using CF standard name attribute for variables. "X" denotes the table number  (ACDD)
        '''
        test_ctx = TestCtx(BaseCheck.HIGH, 'Required global attributes')

        conventions = getattr(dataset, 'Conventions', '')
        metadata_conventions = getattr(dataset, 'Metadata_Conventions', '')
        feature_type = getattr(dataset, 'featureType', '')
        cdm_data_type = getattr(dataset, 'cdm_data_type', '')
        standard_name_vocab = getattr(dataset, 'standard_name_vocabulary', '')

        accepted_conventions = 'CF-1.6'

        test_ctx.assert_true(conventions == accepted_conventions,
                             'Conventions attribute is missing or is not equal to CF-1.6: {}'.format(conventions))
        test_ctx.assert_true(metadata_conventions == 'Unidata Dataset Discovery v1.0',
                             "Metadata_Conventions attribute is required to be 'Unidata Dataset Discovery v1.0': {}".format(metadata_conventions))
        test_ctx.assert_true(feature_type in ['point', 'timeSeries', 'trajectory', 'profile', 'timeSeriesProfile', 'trajectoryProfile'],
                             'Feature type must be one of point, timeSeries, trajectory, profile, timeSeriesProfile, trajectoryProfile: {}'.format(feature_type))
        test_ctx.assert_true(cdm_data_type.lower() in ['grid', 'image', 'point', 'radial', 'station', 'swath', 'trajectory'],
                             'cdm_data_type must be one of Grid, Image, Point, Radial, Station, Swath, Trajectory: {}'.format(cdm_data_type))

        regex = re.compile(r'[sS]tandard [nN]ame [tT]able')
        test_ctx.assert_true(regex.search(standard_name_vocab),
                             "standard_name_vocabulary doesn't contain 'Standard Name Table': {}".format(standard_name_vocab))

        return test_ctx.to_result()