+ -
当前位置:首页 → 问答吧 → 发布SML简单标记语言标准,发布符合SML规范的函数库,发布SML数据绑定工具(for C)

发布SML简单标记语言标准,发布符合SML规范的函数库,发布SML数据绑定工具(for C)

时间:2010-08-23

来源:互联网

本帖最后由 BetonArmEE 于 2010-08-23 23:49 编辑

SML简单标记语言

〇、由XML认识SML
        以下是一段XML文本
                <book status=” sale”>
                        <name>SML简单标记语言</name>
                        <author>calvin</author>
                        <price>25.00</price>
                        <location>07,10,79</location>
                </book>
        我们把它简化一下,语法采用类似c语言,就变成了
                book ( status = ” sale” )
                {
                        name = “SML简单标记语言” ;
                        author = “calvin” ;
                        price = 25.00 ;
                        location = “07,10,79” ;
                } ;
        希望你还能识别出原XML文本中的标记、属性和值,以及它们之间的结构关系,恭喜您,你成功把XML转换为SML了,很简单吧 ^_^。
        这就是SML!!!

一、SML概述
        SML(Simple Markup Language)是一种语法参考于c语言,又拥有XML结构化描述数据能力的标记语言。
        SML语法接近于c、JAVA等语言,更能被主流程序员熟识。
        SML跟XML一样,既便于结构化展现给人阅读,也能字节流化便于程序处理,同时去除了XML的标记开闭冗余,因此节省了数据存储和网络流量。

二、SML表达规范
(当前SML表达规范版本为“1.0.0”)
2.1.SML词法
        最简单的SML语法是:“标记名 = 标记值”,其中“标记名”和“标记值”都是SML标识,”=”是SML关键字。
        SML标识可以是除SML关键字以外的字母数字组合(暂时不支持双字节)。如果SML标识包含关键字或者白字符(空格、TAB、回车),用一对“””“’”括起来,如果里面再包含“””“’”,用“\”转义,“\”用自己转义即“\\”。以下是一些合法的SML标识:
        abc
        “ABC 123”
        “DEF\”456”
        “DEF\\456””
        ‘DEF”456’
        “=”
        因为第一个SML解析器是用c写的,c对字符串大小敏感,所以SML标识大小写敏感。
        SML关键字有赋值“=”、属性区域“(”“)”、子节点区域“{”“}”、结束“;”,以下是一个比较综合的表达式:
        tag ( attr1 = attr1_value ; attr2 = attr2_value )
{
subtag1 = subtag1_value ;
subtag2 = subtag2_value ;
} ;
        SML标识和SML关键字之间可以直接连接,如果会引起歧义则用白字符(空格、TAB、回车)隔开,解析器在解析SML词法时会忽略白字符。

2.2.SML语法
        SML语法遵循以下表达式规则:
                表达式 := 表达式1 ; 表达式2
                表达式 ;
                ... 表达式 )
                ... 表达式 }
        由此看出表达式是可以迭代的,只要中间用“;”隔开。表达式最后用“;”结束。如果最后是“)”或者“}”则可省略“;”。
                标记表达式 := 标记名 ( 属性表达式 ) = 标记值 ;
                标记表达式 := 标记名 ( 属性表达式 )  { 子节点标记表达式 } ;
                属性表达式 := 属性名 = 属性值 ;
        比如:
                name = “SML简单标记语言” ;
                book
                {
                        ...
                } ;
                book ( status = ” sale” ; publish = “yes” ) { ... } ;

2.3.SML节点树
        和XML一样,SML逻辑上是以树结构铺开,且必须至少有一个根节点,每一个树枝树叶都是一个节点,节点拥有属性集合,节点要不作为子节点的父节点,要不直接挂接节点数据,最常用的节点数据类型是字符串。
        一棵完整的SML节点树在存储上称为一个SML文档(SML Document) ,每个SML树枝树叶称为SML节点(SML Node),SML节点上有SML节点属性(SML Attrerty),SML节点是个抽象对象,真正存放SML数据的对象是SML元素(SML Element),挂接在SML节点上。

三、SML附加规范
3.1.SML头信息
        和XML一样,SML把一些头信息放在文档首个标记的属性中,其中包括表达规范版本、标识编码类型等,如下:
        !sml ( version = 1.0.0 ; coding = GB18030 ) ;

四、SML应用接口
4.1.iSML函数库
        iSML是官方发布的第一个符合SML表达规范的函数库,目前包含了一个SML树操作函数集合和一个DOM方式解析器。
        (具体请参见《iSML函数库参考手册》)

4.2.SML数据绑定工具sml2c(for C)
        sml2c是官方发布的符合SML表达规范的基于c语言的数据绑定工具。使用sml2c处理模板文件生成c结构定义头文件、SML节点树与c结构相互数据映射函数以及一些其它实用函数源代码文件,使得应用开发人员把操作SML节点树转变为操作c结构体变量,封装了SML数据和应用代码耦合层,简化了应用处理SML数据。
        (具体请参见《sml2c数据绑定工具使用手册》)

五、SML周边
5.1.SML网络资源
        SML目前只有官方论坛 http://tieba.baidu.com/f?kw=calv ... search&ie=utf-8 (暂时放在百度贴吧),上面还可以下载到最新版的iSML函数库和sml2c工具。

-----------------------------------

基础扩展函数库iLibX(被iSML依赖)
http://www.163disk.com/fileview_63659.html

第一个符合SML标准的函数库iSML
http://www.163disk.com/fileview_63660.html

SML数据绑定工具sml2c
http://www.163disk.com/fileview_63661.html

作者: BetonArmEE   发布时间: 2010-08-23

不向 IETF 提交标准的标记语言不是好标记语言。
JSON 比这个好用多了。

作者: langue   发布时间: 2010-08-24

自己搞一个意义何在,有何优势?

作者: hellioncu   发布时间: 2010-08-24

我也喜欢json。  当json 遇到javascript时。更是无敌了。

作者: zhangsuozhu   发布时间: 2010-08-24

相关阅读 更多

热门下载

更多