我正在编写一个基本的文字处理应用程序,并试图解决本机“内部”格式,即我的代码解析以呈现到屏幕的格式。我希望这是XML,以便将来可以编写XSLT将其转换为ODF或XHTML等等。
在搜索现有标准时,唯一看起来很有前途的是ODF。但这看起来像我需要的大量矫枉过正。我需要的只是段落标签,字体选择,字体大小和装饰......那就是它。我需要很长时间才能实现最小的ODF渲染器,我不确定这是值得的。
现在我正在考虑制作自己的XML格式,但这不是一个好的做法。最好使用标准,特别是从那以后我可能会发现将来可能需要的XSLT已经写好。
或者我应该咬紧牙关并实施ODF?
编辑:关于答案
之前我了解过XSL-FO,但由于规格的重量并没有真正消除它。但是你是对的,一个子集会给我我需要的一切工作和成长空间。非常感谢提醒。
另外,通过包含像FOP或RenderX这样的渲染库,我可以免费获得PDF生成。还不错......
答案 0 :(得分:4)
由于您确定需要代表事物的演示方面,因此可能值得查看XSL-FO W3C建议书。这是一个完整的页面描述语言和(深度不合时宜的)另一半更知名的XSLT。
显然,整个事情不过是“光明”,但如果你只是合并了一个 非常有限的子集 - 甚至可能只是(符合您的“段落标记,字体选择,字体大小和装饰”)fo:block和common font properties的规范,如:
<yourcontainer xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:block font-family="Arial, sans-serif" font-weight="bold"
font-size="16pt">Example Heading</fo:block>
<fo:block font-family="Times, serif"
font-size="12pt">Paragraph text here etc etc...</fo:block>
</yourcontainer>
这可能比仅仅滚动自己有一些优势。有一个开放的规范可供使用,所有这些都意味着。它将CSS属性重用为XML属性(以类似于SVG的方式),因此许多格式化细节看起来有些熟悉。如果您后来决定智能分页是必备功能,那么您将拥有升级路径 - 包括规范的更多部分,因为它们与您的应用程序相关。
你可以从调查XSL-FO中得到另一件事 - 看看即使只是做段落和字体也会非常复杂。尝试为各种不同的语言和用例进行文本布局和换行“正确的方法”对我来说似乎非常艰巨。
答案 1 :(得分:1)
如果仅用于文字处理,那么DocBook可能比ODF轻一点吗?
然而,维基条目声明:
DocBook是一种用于技术文档的语义标记语言。它最初用于编写与计算机硬件和软件相关的技术文档,但它可用于任何其他类型的文档。
所以它可能不适合通用的文字处理器?
使用DocBook的优势在于一些DocBook - &gt;其他格式转换器应该可用吗?希望这会有所帮助。
答案 2 :(得分:1)
我喜欢DocBook,但它并不适合。它力求独立于表示,意图是使用XSLT将其呈现为表示格式。
在文字处理器中,用户正在编辑演示文稿以及内容。例如,用户不希望标记“关键字”,他们希望将某些文本设为粗体。
DocBook编辑器将是一件非常好的事情(我不确定是否存在一个好的),但它并不是我正在做的事情。
答案 3 :(得分:0)
嗯,对...但是因为我还需要能够转换为XML,为什么我的文档树和DOM树都在内存中,什么都没有阻止我在DOM树上工作?
特别是因为我的程序的一个独特功能是在您键入时始终保存所有内容,而且每次按键时我都不希望运行整个转换为XML。更容易将输入和输出直接绑定到我的内存中的DOM树。
编辑: 哦,XHTML的唯一问题是我确实想支持基本的分页。虽然我觉得没有什么可以阻止我使用一些额外的标签...
答案 4 :(得分:-1)
XML是外部格式,而不是内部。
XHTML出了什么问题?这很简单,而且无处不在(至少是HTML)。您的实施将很容易调试,您的用户将永远是伟大的。