<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def compile_dmtf_schema(self, schema_version, schema_root_dir, class_names, use_experimental=False, namespace=None, verbose=False):
 """ Compile the classes defined by `class_names` and their dependent classes from the DMTF CIM schema version defined by `schema_version` and keep the downloaded DMTF CIM schema in the directory defined by `schema_dir`. This method uses the :class:`~pywbem_mock.DMTFCIMSchema` class to download the DMTF CIM schema defined by `schema_version` from the DMTF, into the `schema_root_dir` directory, extract the MOF files, create a MOF file with the `#include pragma` statements for the files in `class_names` and attempt to compile this set of files. It automatically compiles all of the DMTF qualifier declarations that are in the files `qualifiers.mof` and `qualifiers_optional.mof`. The result of the compilation is added to the specified CIM namespace of the mock repository. If the namespace does not exist, :exc:`~pywbem.CIMError` with status CIM_ERR_INVALID_NAMESPACE is raised. Parameters: schema_version (tuple of 3 integers (m, n, u):
 Represents the DMTF CIM schema version where: * m is the DMTF CIM schema major version * n is the DMTF CIM schema minor version * u is the DMTF CIM schema update version This must represent a DMTF CIM schema that is available from the DMTF web site. schema_root_dir (:term:`string`):
 Directory into which the DMTF CIM schema is installed or will be installed. A single `schema_dir` can be used for multiple schema versions because subdirectories are uniquely defined by schema version and schema_type (i.e. Final or Experimental). Multiple DMTF CIM schemas may be maintained in the same `schema_root_dir` simultaneously because the MOF for each schema is extracted into a subdirectory identified by the schema version information. class_names (:term:`py:list` of :term:`string` or :term:`string`):
 List of class names from the DMTF CIM Schema to be included in the repository. A single class may be defined as a string not in a list. These must be classes in the defined DMTF CIM schema and can be a list of just the leaf classes required The MOF compiler will search the DMTF CIM schema MOF classes for superclasses, classes defined in reference properties, and classes defined in EmbeddedInstance qualifiers and compile them also. use_experimental (:class:`py:bool`):
 If `True` the expermental version of the DMTF CIM Schema is installed or to be installed. If `False` (default) the final version of the DMTF CIM Schema is installed or to be installed. namespace (:term:`string`):
 The name of the target CIM namespace in the mock repository. This namespace is also used for lookup of any existing or dependent CIM objects. If `None`, the default namespace of the connection is used. verbose (:class:`py:bool`):
 If `True`, progress messages are output to stdout Raises: ValueError: The schema cannot be retrieved from the DMTF web site, the schema_version is invalid, or a class name cannot be found in the defined DMTF CIM schema. TypeError: The 'schema_version' is not a valid tuple with 3 integer components :exc:`~pywbem.MOFParseError`: Compile error in the MOF. :exc:`~pywbem.CIMError`: CIM_ERR_INVALID_NAMESPACE: Namespace does not exist. :exc:`~pywbem.CIMError`: Failure related to the CIM objects in the mock repository. """


        schema = DMTFCIMSchema(schema_version, schema_root_dir,
                               use_experimental=use_experimental,
                               verbose=verbose)
        schema_mof = schema.build_schema_mof(class_names)
        search_paths = schema.schema_mof_dir
        self.compile_mof_string(schema_mof, namespace=namespace,
                                search_paths=[search_paths],
                                verbose=verbose)