docs: def parse_xhtml_notes(entry):
      """Yield key, value pairs parsed from the XHTML notes section.
  
      Each key, value pair must be defined in its own text block, e.g.
      ``<p>key: value</p><p>key2: value2</p>``. The key and value must be
      separated by a colon. Whitespace is stripped from both key and value, and
      quotes are removed from values if present. The key is normalized by
      conversion to lower case and spaces replaced with underscores.
  
      Args:
          entry: :class:`_SBMLEntry`.
      """
      for note in entry.xml_notes.itertext():
          m = re.match(r'^([^:]+):(.+)$', note)
          if m:
              key, value = m.groups()
              key = key.strip().lower().replace(' ', '_')
              value = value.strip()
              m = re.match(r'^"(.*)"$', value)
              if m:
                  value = m.group(1)
              if value != '':
                  yield key, value