fbpx
维基百科

SXML

SXML是为了方便在LispScheme中使用XML而设计开发的,用于将XML数据(XML Infosets [1])编写为S-表达式的一种替代语法。

SXML
扩展名.sxml, .scm
类型代码英语Type code文本
格式类型标记语言

下面的对比表格显示了XML、SXML之间的异同:

XML SXML
<tag attr1="value1"  attr2="value2">  <nested>Text node</nested>  <empty/> </tag> 
(tag (@ (attr1 "value1")  (attr2 "value2"))(tag (@ (attr1 "value1")  (attr2 "value2"))  (nested "Text node")  (empty)) 

与XML(和其他类似XML的语言)相比,SXML的优点是可以被Scheme解析器直接解析。尽管SXML的系统略显不成熟,文档也比较简单,David Mertz还是在他的IBM developerWorks专栏中盛赞SXML的相关工具和文档。 [2]

实例 编辑

下面是一个简单的XHTML页面:

 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>An example page</title> </head> <body> <h1 id="greeting">Hi, there!</h1> <p>This is just an &gt;&gt;example&lt;&lt; to show XHTML &amp; SXML.</p> </body> </html>

使用SXML编写的同一页面如下所示:

 (*TOP* (@ (*NAMESPACES* (x "http://www.w3.org/1999/xhtml")))  (x:html (@ (xml:lang "en") (lang "en"))  (x:head  (x:title "An example page"))  (x:body  (x:h1 (@ (id "greeting")) "Hi, there")  (x:p "This is just an >>example<< to show XHTML & SXML.")))) 

在SXML中,原本元素的标签对(“<标签名>和</标签名>”)都由一组括号代替。 标签名只是列表中的第一个字符串,末尾不重复。 元素的属性和/或值则直接跟在后面,不需要通过特殊的语法(比如添加“=”)标记出来。在SXML中,属性、值都是节点,使用@来标记哪些节点是属性,而且由于XML中@不能作为元素名,也就不存在@与元素名冲突的问题。 在SXML中经常可以见到把XML中定义的非法名称作为特殊标识符使用的情况。

此外,在SXML中,由于所有的值都被视为没有标签的纯字符串,“&”和“<>”这样的字符无需转义写成“&amp/&lt/&gt”。从好的方面来讲,这意味着插入自动生成的内容要容易得多,并且不存在忘记为用户显示的内容转义的问题,但同时也可能导致各种跨站点脚本攻击的泛滥或其他开发时候的麻烦。

参考资料 编辑

  1. ^ Kiselyov, Oleg. SXML Specification. ACM SIGPLAN Notices. 2002, 37 (6): 52–58. doi:10.1145/571727.571736. 
  2. ^ Mertz, David. XML Matters: Investigating SXML and SSAX. IBM developerWorks. 23 October 2003 [10 January 2015]. (原始内容于2004-12-04). 

外部链接 编辑

sxml, 是为了方便在lisp和scheme中使用xml而设计开发的, 用于将xml数据, infosets, 编写为s, 表达式的一种替代语法, 扩展名, sxml, scm类型代码, 英语, type, code, 文本格式类型标记语言, 下面的对比表格显示了xml, 之间的异同, attr1, value1, attr2, value2, nested, text, node, nested, empty, attr1, value1, attr2, value2, attr1, value1, attr2. SXML是为了方便在Lisp和Scheme中使用XML而设计开发的 用于将XML数据 XML Infosets 1 编写为S 表达式的一种替代语法 SXML扩展名 sxml scm类型代码 英语 Type code 文本格式类型标记语言 下面的对比表格显示了XML SXML之间的异同 XML SXML lt tag attr1 value1 attr2 value2 gt lt nested gt Text node lt nested gt lt empty gt lt tag gt tag attr1 value1 attr2 value2 tag attr1 value1 attr2 value2 nested Text node empty 与XML 和其他类似XML的语言 相比 SXML的优点是可以被Scheme解析器直接解析 尽管SXML的系统略显不成熟 文档也比较简单 David Mertz还是在他的IBM developerWorks专栏中盛赞SXML的相关工具和文档 2 实例 编辑下面是一个简单的XHTML页面 lt html xmlns http www w3 org 1999 xhtml xml lang en lang en gt lt head gt lt title gt An example page lt title gt lt head gt lt body gt lt h1 id greeting gt Hi there lt h1 gt lt p gt This is just an amp gt amp gt example amp lt amp lt to show XHTML amp amp SXML lt p gt lt body gt lt html gt 使用SXML编写的同一页面如下所示 TOP NAMESPACES x http www w3 org 1999 xhtml x html xml lang en lang en x head x title An example page x body x h1 id greeting Hi there x p This is just an gt gt example lt lt to show XHTML amp SXML 在SXML中 原本元素的标签对 lt 标签名 gt 和 lt 标签名 gt 都由一组括号代替 标签名只是列表中的第一个字符串 末尾不重复 元素的属性和 或值则直接跟在后面 不需要通过特殊的语法 比如添加 标记出来 在SXML中 属性 值都是节点 使用 来标记哪些节点是属性 而且由于XML中 不能作为元素名 也就不存在 与元素名冲突的问题 在SXML中经常可以见到把XML中定义的非法名称作为特殊标识符使用的情况 此外 在SXML中 由于所有的值都被视为没有标签的纯字符串 amp 和 lt gt 这样的字符无需转义写成 amp amp amp lt amp gt 从好的方面来讲 这意味着插入自动生成的内容要容易得多 并且不存在忘记为用户显示的内容转义的问题 但同时也可能导致各种跨站点脚本攻击的泛滥或其他开发时候的麻烦 参考资料 编辑 Kiselyov Oleg SXML Specification ACM SIGPLAN Notices 2002 37 6 52 58 doi 10 1145 571727 571736 Mertz David XML Matters Investigating SXML and SSAX IBM developerWorks 23 October 2003 10 January 2015 原始内容存档于2004 12 04 外部链接 编辑SXML Tools Tutorial by Dmitry Lizorkin SXML package for Racket 页面存档备份 存于互联网档案馆 取自 https zh wikipedia org w index php title SXML amp oldid 72734015, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。