我最近发现的genshi.生成器模块。这让我想起我的Divmod Nevow斯坦的模块。如何将一个使用genshi.建设者。标记,以建立一个HTML文档与特定doctype?或是这甚至是一个好事情吗?如果不是,什么是的 方式?

有帮助吗?

解决方案

这是不可能建立一个完整的网页,使用只是 genshi.builder.tag -你会需要执行有些手术的所得的流入doctype.此外,产生的代码看起来可怕的。建议的方式使用Genshi是使用一个单独的模板文件,产生一个流离它,然后呈现,流的输出类型。

genshi.builder.tag 主要是有用的,当你需要生成简单的标记内蟒蛇,比如当你建设的一种形式或做某种逻辑-重修改的产出。

请参阅文件:

如果你真的想要产生一个完整的文件使用的只有 builder.tag, 这(完全未经测试)的代码可能是一个很好的起点:

from itertools import chain
from genshi.core import DOCTYPE, Stream
from genshi.output import DocType
from genshi.builder import tag as t

# Build the page using `genshi.builder.tag`
page = t.html (t.head (t.title ("Hello world!")), t.body (t.div ("Body text")))

# Convert the page element into a stream
stream = page.generate ()

# Chain the page stream with a stream containing only an HTML4 doctype declaration
stream = Stream (chain ([(DOCTYPE, DocType.get ('html4'), None)], stream))

# Convert the stream to text using the "html" renderer (could also be xml, xhtml, text, etc)
text = stream.render ('html')

得到的页面会有任何空白在这-这会看起来正常的,但是你会有一个艰苦的时间阅读的源代码,因为它将完全在线之一。实施适当的过滤器来增加空白留给读者。

其他提示

Genshi.builder用于“以编程方式生成标记流”[1]。我相信它的目的是作为模板语言的后端。您可能正在寻找用于生成整页的模板语言。

但是,您可以执行以下操作:

>>> import genshi.output
>>> genshi.output.DocType('html')
('html', '-//W3C//DTD HTML 4.01//EN', 'http://www.w3.org/TR/html4/strict.dtd')

请在此处查看其他文档: http:// genshi。 edgewall.org/wiki/ApiDocs/genshi.output#genshi.output:DocType

[1] genshi.builder.__doc__
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top