我最近发现了genshi.builder模块。它让我想起了Divmod Nevow的Stan模块。如何使用genshi.builder.tag构建一个具有特定文档类型的HTML文档?或者这是一件好事吗?如果没有,对的方式是什么?如何使用genshi.builder以编程方式构建HTML文档?
3
A
回答
4
这是不可能只使用genshi.builder.tag
构建整个页面 - 你需要执行对产生的流进行一些手术以插入文档类型。此外,由此产生的代码看起来很可怕。推荐使用Genshi的方法是使用单独的模板文件,根据它生成流,然后将该流渲染为所需的输出类型。
genshi.builder.tag
主要用于需要从Python内部生成简单标记的情况,比如当您构建表单或对输出进行某种逻辑重大修改时。
见文档:
如果你真的想生成只使用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')
生成的页面将不会有空白 - 看起来很正常,但您将很难阅读源代码,因为它完全位于同一行。实现合适的过滤器来添加空格作为练习留给读者。
2
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')
见其他DOCTYPES这里:http://genshi.edgewall.org/wiki/ApiDocs/genshi.output#genshi.output:DocType
[1] genshi.builder.__doc__
+0
有没有办法使用genshi构建html文档?我正在寻找类似斯坦的东西。如果这不适合使用genshi,那很好,但我想知道是否是这种情况。 – 2008-09-22 01:21:42
相关问题
- 1. 以编程方式打印HTML文档
- 2. 如何以编程方式在Google文档中创建文档?
- 3. 如何使用Sandcastle构建HTML文档
- 4. 如何以编程方式构建AngleSharp CSS(或HTML)DOM
- 5. 以编程方式创建Word(.docx)文档使用docx4j
- 6. 使用XSD以编程方式创建XML文档
- 7. 如何以编程方式使用TeX生成文档?
- 8. 如何通过模板以编程方式创建Word文档
- 9. 如何以编程方式上传Google文档上的文档?
- 10. 如何从C#中以编程方式调用“文档格式”?
- 11. 如何以编程方式将构建文件添加到Xcode4?
- 12. 使用Java以编程方式将HTML/MXML文件转换为Word文档
- 13. 如何以编程方式使用Win32创建快捷方式
- 14. 以编程方式打印文档
- 15. 以编程方式下载Google文档?
- 16. 以编程方式比较word文档
- 17. 以编程方式生成Excel文档
- 18. 以编程方式打印PDF文档
- 19. 以编程方式更新excel文档
- 20. 以便携式方式以编程方式打开文档
- 21. 以编程方式使用MSBuild构建解决方案
- 22. 如何以编程方式向Word文档添加样式
- 23. 如何以编程方式编辑界面构建器对象?
- 24. 如何以编程方式用Form和UserControl构建System.Web.UI.Page?
- 25. 如何以编程方式构建数组/对象调用
- 26. HTML如何自动创建/以编程方式创建div?
- 27. 以编程方式构建工件URL
- 28. 以编程方式构建solrj查询
- 29. 以编程方式构建htpasswd
- 30. 以编程方式构建SQL查询
这是有道理的。听起来像你可能用来建立一个HTML片段加载到页面使用AJAX或东西? – 2008-09-22 02:22:11