|
项目提要 |
1. 缘起
DocBook 是种非常好学好用的技术图书组织工具!
但 Windows 下 DocBook 转换环境的搭建比较繁琐。
CDBE 是 OsmondLiang 在 2005-10-10 使用 FLOSS 构建的一个 Windows 环境下用于 DOCBOOK XML 进行文档创作的集成环境。
遗憾的是,目前它还没有 GUI ,希望大家共同努力,改进 CDBE,进一步促进 DocBook 文档技术在国内的发展。
1.1. 目标
1.2. 计划
第一步:先做一个简单的GUI前端,调用 CDBE 的.bat 批处理命令完成现有的功能(CDBE V1.0)
第二步:进一步完善 CDBE (CDBE V2.0)
使用 ANT 完成从 文档校验->文档转换->文档发布 等更加完善的功能(用GUI实现一个操作界面生成ANT所用的 build.xml)
使 CDBE 具备一些文档格式转换的附加功能(用Python实现),如:
to docbook xml
rest 到 docbook xml
moin 到 docbook xml
t2t 到 docbook xml
S5 到 docbook slides
to xhtml
rest 到 xhtml
moin 到 xhtml
t2t 到 xhtml
html 到 xhtml
to S5
rest 到 S5
moin 到 S5
t2t 到 S5
to rss/atom
rest 到 rss/atom
moin 到 rss/atom
t2t 到 rss/atom
创建 Windows 下的 CDBE 安装程序,而不是现在所使用的zip包
说明: 1、我对Python和Ant都不熟悉(正在学习中),所以建议先实现第一步。 2、xsltproc虽然执行速度快,但他目前不支持对DocBook的几个扩展,所以为了减小CDBE的体积, 将来可能会在 CDBE V2.0 中只使用saxon XSLT 而放弃xsltproc。
1.2.1. CDBE GUI
下面描述CDBE V1.0 对 GUI 的需求
交互性界面元素设计需求
bookname: 一个指定书名或站点名的文本框
type: 一个转换类型选择列表:包括
xml to chunk (值:'chunk')
xml to html (值:'html')
xml to pdf (值:'pdf')
xml to slides (值:'plain')
xml to website (值:'web')
lang: 一个语言选择列表:包括
简体中文 (值:'zh-cn')
英文 (值:'en')
xslt: 一个XSLT选择列表:包括
saxon (值:'bdj_')
libxslt (值:'bd_')
output: 一个输出路径选择的文本框(可选项)
默认值为空
msg: 一个在转换过程中给出提示信息的多行文本框
trans: 执行转换按钮
quit: 退出按钮
详细说明
CDBE 所使用的批处理文件名称 (默认存放在 D:\obp\CDBE\bat 目录下)
bd_chunk
bdj_chunk
bd_html
bdj_html
bd_fo
bdj_fo
bdj_pdf
bd_plain
bdj_plain
bd_web
bdj_web
命令行字符串生成算法:
cd D:\obp\CDBE\bat if (type=='web') cmd = xslt+type+" "+bookname+" "+output elseif (type=='pdf') # 需顺序执行 cmd1、cmd2 cmd1 = xslt+'fo '+bookname+" "+lang+" "output cmd2 = 'bdj_pdf '+bookname+" "+lang+" "output else cmd = xslt+type+" "+bookname+" "+lang+" "+output fi
参考: CDBE批处理命令的使用方法
1.2.1.1. CDBEasyGUI
使用 EasyGui 生成的界面:
目前不能实现message消息框,只能是运行在Dos窗口,或另开窗口专门用来显示输出。即界面选择与输出是分离的。
使用 EasyGui 的代码,主程序 run_cdbe.py
1 from EasyGui import EasyCommander
2 import resource
3 import os
4
5 easy = EasyCommander.EasyCommander(None, resource, inline=True)
6 if easy.run():
7 values = easy.GetValue()
8
9 if values['type'] == 'web':
10 cmd = ["%(xslt)s%(type)s %(bookname)s %(output)s" % values]
11 elif values['type'] == 'pdf':
12 cmd = ["%(xslt)sfo %(bookname)s %(language)s %(output)s" % values]
13 cmd.append("%bdj_pdf %(bookname)s %(language)s %(output)s" % values)
14 else:
15 cmd = ["%(xslt)s%(type)s %(bookname)s %(language)s %(output)s" % values]
16
17
18 print cmd
19 for c in cmd:
20 os.system(c)
资源文件 resource.py
1 dialog = [
2 ('string', 'bookname', '', 'Book Name:', None),
3 ('single', 'type', 'chunk', 'Convert XML to Type:', ['chunk', 'html', 'pdf', 'plain', 'web']),
4 ('single', 'language', 'zh-cn', 'Target Language:', [('Simplified Chinese', 'zh-cn'), ('English', 'en')]),
5 ('single', 'xslt', 'bdj_', 'Target Language:', [('Saxon', 'bdj_'), ('libxslt', 'bd_')]),
6 ('dir', 'output', '', 'Output Directory:', None),
7 ]
8
9 title = "XML Docbook Convertor"
目前还只是生成命令行,但没有在实际的环境下进行测试。需要安装wxPython + EasyGui
1.2.2. 反馈
好哪!!!先实现一个原型,好用的话,再封装为 安装版本的! 不过俺非常倾向于使用 setuptool 创建的自动下载的.egg 安装包! -- ZoomQuiet
setuptools 适合于模块安装。非模块的东西不知道要如何实现。需要进一步学习。 -- Limodou
插入你的网页下载什么的,自动下载软件,设置…………其实就是没有GUI 的installer 是也乎!? -- ZoomQuiet
1.3. 成员
1.4. 成果
2. 反馈
项目讨论