7.3 结构化文档表示
来源:互联网 发布:能隐藏号码打电话软件 编辑:程序博客网 时间:2024/06/04 00:34
7.3 结构化文档表示
我们将在这一节设计的数据结构从 HTML 格式获得灵感,这是大家熟悉的,并成功创建文档的语言。就像 HTML,我们的表示有几种类型的内容,并且可能以适当的方法嵌套某些部分。图 7.3 显示了带注释的示例文档,它可以给你一个概念,格式包括哪些内容。
有两种不同的部分。简单的部分,如 TextPart 和 ImagePart,包含内容,但是不能包含嵌套的部分。在另一侧,TitledPart 包含一个嵌套部分,添加标题,而 SplitPart 包含一个或多个嵌套的部件和定位的规格。你可能已经猜到了,我们将使用差别联合,来表示不同部分。因为,两个部分可以包含嵌套的部分,类型将是递归的。清单 7.9 显示了类型声明,给我们更多的具体详细讨论。
图 7.3 我们的文档格式中可用的四种不同部件:TitledPart 添加标题到另一个部件,使用 SplitPart,我们可以创建列和行。TextPart 和 ImagePart 指定实际内容。
Listing 7.9 Hierarchical document representation (F#)
type Orientation =
| Vertical
| Horizontal
type DocumentPart =
| SplitPart of Orientation * list
| TitledPart of TextContent * DocumentPart
| TextPart of TextContent
| ImagePart of string
我们非正式的规范,来自上一段 F# 代码的转录是非常简单的。这绝对是一个标准 F# 类型声明的最具吸引力的方面。我们首先声明一个简单的差别联合,有两个选项,表示拆分部分的定位,然后,再声明 DocumentPart 类型,有四个可选的选项。
两个选项以递归方式包含其他文件的部分。SplitPart 包含列表中的几个其他部分,一个定位确定区域应如何划分;TitledPart 包含一个其他部分,一个装饰用的标题。使用上一节的 TextContent 类型,来存储文本,这是一个记录,包含一个字符串,以及一起使用的字体。
DocumentPart 类型表示作为一个整体的文档。因为,该类型是递归的,我们可以在一个文档的部件中,嵌套任意数量的内容部分。这不同于以前的做法,在那儿,我们为一个元素创建类型,然后,文档表示为元素的列表。在那种表示形式中,列表成为数据结构的"根",元素不进一步嵌套。使用新的数据类型,我们可以像这样来写 7.2 节的文档:
let doc =
TitledPart({ Text = "Functional Programming for the Real World";
Font = fntHead },
SplitPart(Vertical,
[ ImagePart("cover.jpg");
TextPart({ Text = "..."; Font = fntText }) ]
)
)
我们省略了位于图像下面的 TextPart 的内容,但仍可以看到,表示是乘法的,因为,我们不需要自己计算矩形边框。然而,我们没有实现绘制这个数据类型。我们不打算写,或者 — — 我们为什么,什么时候,已经为早先的表示得到了很好的绘制函数?我们所要做的就是,提供一个转换,从“建筑设计“的形式到的“绘制设计“。
- 7.3 结构化文档表示
- 7.3 表示结构化文档
- Proxima:一个面向表示的结构化文档编辑器
- 文档表示
- 7.3.2 用 XML 表示文档
- 7.3.2 用 XML 表示文档
- 分享我的设计: jxt (强结构文档数据表示协议),源码适时开放
- Dom元素基本操作方法API,先记录下,方便以后使用。 W3C DOM和JavaScript很容易混淆不清。DOM是面向HTML和XML文档的API,为文档提供了结构化表示,并定义了如何通过脚本
- Hive复杂结构表示
- redis对象结构表示
- 【脚本化文档】——文档结构和遍历
- 7.2 平面文档的表示
- vsm表示文档的特征
- 7.2 平面文档的表示
- 结构化存储-复合文档-永久对象
- 【软件工程】 文档 - 银行业务管理 - 结构化设计
- 对于结构体 用位域表示
- Network C++表示网络结构
- Cookie和Session
- Writing a Winsock 2 Layered Service Provider
- 分区方法的分区消除
- 日本与中国的编程教育不同
- Android实现下载图片并保存到SD卡中
- 7.3 结构化文档表示
- ListBox使用说明
- 改良单片机程序的11个技巧
- 端午有感
- Win7绑定网关IP和MAC地址时显示“ARP项添加失败:拒绝访问”的解决办法
- win32 Application SDK窗口 WNDCLASS 自定义鼠标、图标、菜单
- 努力,加油
- ADO 数据库
- 在ASP.NET 2.0中使用样式、主题和皮肤