def METHOD_NAME(file, root_path) -> List[dict]:
    with open(file, 'r', encoding='utf-8') as f:
        md_text = f.read()
    entries = []
    html = md.render(md_text)
    soup = BeautifulSoup(html, features="html.parser")
    category = None
    for item in soup.find_all():
        if item.name in ['h1', 'h2', 'h3', 'h4', 'h5', 'h6']:
            category = item.text
        # Skip the explanations of rule types in introduction section
        if category == 'Prescriptive Guidance':
            continue
        if item.name == 'p':
            text, id = _split_tags(item, file)
            text = _add_links(text, item)
            text = _expand_include_tags(text, root_path, os.path.dirname(file))
            if id:
                entries.append({
                    'id': id,
                    'category': category,
                    'text': text,
                })
            else:
                try:
                    entries[-1]['text'] += '\n\n' + text
                except IndexError:
                    continue
        elif item.name in ["pre"]:
            raw_html = ''.join(str(tag) for tag in item.contents)
            markdown_text = _convert_code_tag_to_markdown(raw_html)
            markdown_text = _expand_include_tags(markdown_text, root_path, os.path.dirname(file))
            try:
                entries[-1]['text'] += '\n\n' + markdown_text
            except IndexError:
                continue
        elif item.name in ['ol', 'ul']:
            items = item.find_all('li')
            for item in items:
                item_text, id = _split_tags(item, file)
                item_text = _add_links(item_text, item)
                item_text = _expand_include_tags(item_text, root_path, os.path.dirname(file))
                if id:
                    entries.append({
                        'id': id,
                        'category': category,
                        'text': item_text,
                    })
                else:
                    try:
                        entries[-1]['text'] += '\n' + item_text
                    except IndexError:
                        continue
        else:
            continue
    return entries