docs: def check_height(self, dataset):
          '''
          float z(time) ;//........................................ Depending on the precision used for the variable, the data type could be int or double instead of float. Also the variable "z" could be substituted with a more descriptive name like "depth", "altitude", "pressure", etc.
                  z:long_name = "" ; //........................................ RECOMMENDED - Provide a descriptive, long name for this variable.
                  z:standard_name = "" ; //.................................... REQUIRED    - Usually "depth" or "altitude" is used.
                  z:units = "" ; //............................................ REQUIRED    - Use UDUNITS.
                  z:axis = "Z" ; //............................................ REQUIRED    - Do not change.
                  z:positive = "" ; //......................................... REQUIRED    - Use "up" or "down".
                  z:valid_min = 0.0f ; //...................................... RECOMMENDED - Replace with correct value.
                  z:valid_max = 0.0f ; //...................................... RECOMMENDED - Replace with correct value.
                  z:_FillValue = 0.0f;//....................................... REQUIRED  if there could be missing values in the data.
                  z:ancillary_variables = "" ; //.............................. RECOMMENDED - List other variables providing information about this variable.
                  z:comment = "" ; //.......................................... RECOMMENDED - Add useful, additional information here.
                  '''
          results = []
  
          exists_ctx = TestCtx(BaseCheck.HIGH, 'Variable for height must exist')
          var = util.get_z_variable(dataset)
          exists_ctx.assert_true(var is not None, "A variable for height must exist")
          if var is None:
              return exists_ctx.to_result()
  
          # Check Height Name
          required_ctx = TestCtx(BaseCheck.HIGH, 'Required attributes for variable {}'.format(var))
  
          # Check Standard Name
          standard_name = getattr(dataset.variables[var], 'standard_name', '')
          required_ctx.assert_true(
              standard_name in ('depth', 'height', 'altitude'),
              '{} is not a valid standard_name for height'.format(standard_name)
          )
  
          axis = getattr(dataset.variables[var], 'axis', '')
          required_ctx.assert_true(
              axis == 'Z',
              '{} must have an axis of Z'.format(var)
          )
  
          # Check Units
          valid_units = False
          units = getattr(dataset.variables[var], 'units', '1')
          try:
              # If cf_units fails to read the units, then it's not a valid unit
              Unit(units)
              valid_units = True
          except:
              pass
          required_ctx.assert_true(valid_units, '{} are not valid units for height'.format(units))
  
          positive = getattr(dataset.variables[var], 'positive', '')
          required_ctx.assert_true(positive in ('up', 'down'), 'height must have a positive attribute that is equal to "up" or "down"')
          results.append(required_ctx.to_result())
  
          # Check has these attributes
          # We ommit checking ancillary_variables because that only applies if this variable HAS ancillary variables
          recommended_ctx = TestCtx(BaseCheck.MEDIUM, 'Recommended attributes for coordinate variable {}'.format(var))
          self._check_min_max_range(dataset.variables[var], recommended_ctx)
  
          if hasattr(dataset.variables[var], 'comment'):
              recommended_ctx.assert_true(getattr(dataset.variables[var], 'comment', '') != '', 'comment attribute should not be empty if specified')
  
          results.append(recommended_ctx.to_result())
          return results