如何使用markdown.extensions.attr_list获取空标签?

时间:2017-05-23 16:08:11

标签: python markdown

我正在尝试将微数据添加到生成的HTML中,并找到了attr_list扩展名。它几乎可以满足我的所有需求。

以下是我使用的示例代码:

>>> text = """This is a paragraph.
... {: itemscope itemtype="http://schema.org/Movie"}
... """
>>> markdown.markdown(text, extensions=['markdown.extensions.attr_list'])
u'<p itemscope="itemscope" itemtype="http://schema.org/Movie">This is a paragraph.</p>'

我遇到的一个问题是itemscope="itemscope"。根据schema.org提供的examples,它应该是:

<p itemscope itemtype="http://schema.org/Movie">This is a paragraph.</p>

我最接近的是

text = """This is a paragraph.
... {: itemscope="" itemtype="http://schema.org/Movie"}
... """

生成输出

u'<p itemscope="" itemtype="http://schema.org/Movie">This is a paragraph.</p>'

使用此扩展程序有没有办法将其保留为裸标记(只有itemscope没有等号)?

1 个答案:

答案 0 :(得分:5)

使用html output_format(您可能想要的),而不是默认的xhtml格式:

t = """This is a paragraph.
... { itemscope itemtype="http://schema.org/Movie"}
... """
>>> markdown.markdown(t, extensions=['attr_list'], output_format="html")
u'<p itemscope itemtype="http://schema.org/Movie">This is a paragraph.</p>'

由于Markdown是在XHTML成为新热点时首次开发的,因此规则和参考实现都期望XHTML格式化输出。由于Python-Markdown是一个老式的Markdown解析器,它也默认使用XHTML作为默认输出格式(因为XHTML规范只引用了HTML4 spec,详情请见。)

最近更新了非默认html输出格式以输出HTML5并使用最小化的格式。

顺便说一句,您不需要在属性列表中包含冒号(请参阅上面的示例)。最近,它被选择为与其他实现兼容。