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

And*_*ndy 3 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>'
Run Code Online (Sandbox Code Playgroud)

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

<p itemscope itemtype="http://schema.org/Movie">This is a paragraph.</p>
Run Code Online (Sandbox Code Playgroud)

我得到的最接近的是

text = """This is a paragraph.
... {: itemscope="" itemtype="http://schema.org/Movie"}
... """
Run Code Online (Sandbox Code Playgroud)

其中生成输出为

u'<p itemscope="" itemtype="http://schema.org/Movie">This is a paragraph.</p>'
Run Code Online (Sandbox Code Playgroud)

有没有办法itemscope使用此扩展名将其保留为裸标签(只是没有等号)?

Way*_*lan 5

使用htmloutput_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>'
Run Code Online (Sandbox Code Playgroud)

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

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

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