SXML
SXML是为了方便在Lisp和Scheme中使用XML而设计开发的,用于将XML数据(XML Infosets [1])编写为S-表达式的一种替代语法。 下面的对比表格显示了XML、SXML之间的异同:
与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 >>example<< to show XHTML & 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中,由于所有的值都被视为没有标签的纯字符串,“&”和“<>”这样的字符无需转义写成“&/</>”。从好的方面来讲,这意味着插入自动生成的内容要容易得多,并且不存在忘记为用户显示的内容转义的问题,但同时也可能导致各种跨站点脚本攻击的泛滥或其他开发时候的麻烦。 参考资料
外部链接 |
Index:
pl ar de en es fr it arz nl ja pt ceb sv uk vi war zh ru af ast az bg zh-min-nan bn be ca cs cy da et el eo eu fa gl ko hi hr id he ka la lv lt hu mk ms min no nn ce uz kk ro simple sk sl sr sh fi ta tt th tg azb tr ur zh-yue hy my ace als am an hyw ban bjn map-bms ba be-tarask bcl bpy bar bs br cv nv eml hif fo fy ga gd gu hak ha hsb io ig ilo ia ie os is jv kn ht ku ckb ky mrj lb lij li lmo mai mg ml zh-classical mr xmf mzn cdo mn nap new ne frr oc mhr or as pa pnb ps pms nds crh qu sa sah sco sq scn si sd szl su sw tl shn te bug vec vo wa wuu yi yo diq bat-smg zu lad kbd ang smn ab roa-rup frp arc gn av ay bh bi bo bxr cbk-zam co za dag ary se pdc dv dsb myv ext fur gv gag inh ki glk gan guw xal haw rw kbp pam csb kw km kv koi kg gom ks gcr lo lbe ltg lez nia ln jbo lg mt mi tw mwl mdf mnw nqo fj nah na nds-nl nrm nov om pi pag pap pfl pcd krc kaa ksh rm rue sm sat sc trv stq nso sn cu so srn kab roa-tara tet tpi to chr tum tk tyv udm ug vep fiu-vro vls wo xh zea ty ak bm ch ny ee ff got iu ik kl mad cr pih ami pwn pnt dz rmy rn sg st tn ss ti din chy ts kcg ve