2009年5月31日星期日

Astinus 文档格式

Astinus 文档格式

Astinus 项目需要支持相对复杂的通用文档格式,要能够描述多种格式化或带有元信息的文档。因此,需要约定一种通用文档格式。

数据格式

基本格式

Astinus文档的基本单位为条目,使用XML格式存储。根元素为 <entry id='uid'/>

文档条目的主体为 xpath:entry/content 在正文中允许嵌入元信息节点。

<entry/> 节点下允许加入其它节点,提供map类型的属性映射。

content 的 map 属性通过 xpath:entry/content[@*] 设置。

<entry/> 节点下不写入text属性

<cotent/> 节点下的信息是有序的

允许在 <entry/>内部嵌入<entry/>,或在 xpath:entry/content 内嵌入 <entry/>

数据退化

没有附加属性的情况下,可以没有<entry/>节点,根直接为 <content id='uid'/>

可以以XML字符串格式传递,默认的头是 <?xml version="1.0" encoding="utf-8"?>

数据表现层或新建文档输入项可以不提供uid,这样数据结构进一步退化为 <entry><content></content></entry>

JSON 转换

Astinus 文档允许表达为JSON 格式,也接受JSON格式的数据转入

JSON 格式的根是{id:'uid', cotent:[]},

数据表现层或新建文档输入项可以不提供uid,这样数据结构最大可退化为 [...]

content序列内,以字符串序列表达正文内容,序列元信息通过文本元素间嵌入的{}元素表达。

设计原则

Astinus 文档格式的设计遵循如下的原则:https://bitbucket.org/March/astinus/wiki/edit/AstinusDocumentFormat

  • 对应用层编程友好,尽可能支持通用编程接口。
  • 对存储层友好,容易存储和优化性能,允许在数据库端编程管理。
  • 自描述,在离开服务器支持的环境下可以解读
  • 非SQL表格,支持条目的非结构化字段表述
  • 允许文本化,添加全文索引支持
  • 尽可能少的保留字
  • 允许DAL信息的使用

Astinus 的文档处理环境遵循如下的原则:

  • 在应用层保持文档数据完整性
  • 允许提取元信息进行计算
  • 允许元信息编程
  • 允许版本化支持(考虑并发处理)
  • 允许解释DAL和嵌入式编程


--
杀人放火金腰带,补路修桥无尸骸。

……

劉鑫
March.Liu

没有评论: