Provide the CSS features of speaking and speech properties in element.

        :param element: The element.
        :type element: hatemile.util.html.htmldomelement.HTMLDOMElement
        :param rule: The stylesheet rule.
        :type rule: hatemile.util.css.stylesheetrule.StyleSheetRule

def _provide_speak_properties_with_rule(self, element, rule):
        """
        Provide the CSS features of speaking and speech properties in element.

        :param element: The element.
        :type element: hatemile.util.html.htmldomelement.HTMLDOMElement
        :param rule: The stylesheet rule.
        :type rule: hatemile.util.css.stylesheetrule.StyleSheetRule
        """

        if rule.has_property('speak'):
            declarations = rule.get_declarations('speak')
            for declaration in declarations:
                property_value = declaration.get_value()
                if property_value == 'none':
                    self._speak_none_inherit(element)
                elif property_value == 'normal':
                    self._speak_normal_inherit(element)
                elif property_value == 'spell-out':
                    self._speak_as_spell_out_inherit(element)
        if rule.has_property('speak-as'):
            declarations = rule.get_declarations('speak-as')
            for declaration in declarations:
                speak_as_values = declaration.get_values()
                self._speak_as_normal(element)
                for speak_as_value in speak_as_values:
                    if speak_as_value == 'spell-out':
                        self._speak_as_spell_out_inherit(element)
                    elif speak_as_value == 'literal-punctuation':
                        self._speak_as_literal_punctuation_inherit(element)
                    elif speak_as_value == 'no-punctuation':
                        self._speak_as_no_punctuation_inherit(element)
                    elif speak_as_value == 'digits':
                        self._speak_as_digits_inherit(element)
        if rule.has_property('speak-punctuation'):
            declarations = rule.get_declarations('speak-punctuation')
            for declaration in declarations:
                property_value = declaration.get_value()
                if property_value == 'code':
                    self._speak_as_literal_punctuation_inherit(element)
                elif property_value == 'none':
                    self._speak_as_no_punctuation_inherit(element)
        if rule.has_property('speak-numeral'):
            declarations = rule.get_declarations('speak-numeral')
            for declaration in declarations:
                property_value = declaration.get_value()
                if property_value == 'digits':
                    self._speak_as_digits_inherit(element)
                elif property_value == 'continuous':
                    self._speak_as_continuous_inherit(element)
        if rule.has_property('speak-header'):
            declarations = rule.get_declarations('speak-header')
            for declaration in declarations:
                property_value = declaration.get_value()
                if property_value == 'always':
                    self._speak_header_always_inherit(element)
                elif property_value == 'once':
                    self._speak_header_once_inherit(element)