XML
SGML常用来定义针对HTML的文档类型定义(DTD),同时它也常用于编写XML的DTD。SGML的问题就在于,它允许出现一些奇怪的语法,这让创建HTML的解析器成为一个大难题:
1、某些起始标签不允许出现结束标签,例如HTML中标签。包含了结束标签就会出现错误。
2、某些起始标签可以选择性出现结束标签或者隐含了结束标签,例如HTML中标签,当出现另一个标签或者某些其他标签时,便假设在这之前有一个结束标签。
3、某些起始标签要求必须出现结束标签,例如HTML中标签。
4、标签可以以任何顺序嵌套。即使结束标签不按照起始标签的逆序出现也是允许的,例如,Thisisasamplestring是正确的。
5、某些特性要求必须包含值,例如中的src特性。
6、某些特性不要求一定有值,例如[td]中的nowrap特性。
7、定义特性的两边有没有加上双引号都是可以的,所以和都是允许的。
这些问题使建立一个SGML语言的解析器变成了一项艰巨的任务。判断何时应用以上规则的困难导致了SGML语言的定义一直停滞不前。以这些问题作为出发点,XML逐渐步入视野。
XML去掉了之前令许多开发人员头疼的SGML的随意语法。在XML中,采用了如下的语法:
8、任何的起始标签都必须有一个结束标签。
9、可以采用另一种简化语法,可以在一个标签中同时表示起始和结束标签。这种语法是在大于符号之前紧跟一个斜线(/),例如。XML解析器会将其翻译成。
10、标签必须按合适的顺序进行嵌套,所以结束标签必须按镜像顺序匹配起始标签,例如thisisasamplestring。这好比是将起始和结束标签看作是数学中的左右括号:在没有关闭所有的内部括号之前,是不能关闭外面的括号的。
11、所有的特性都必须有值。
12、所有的特性都必须在值的周围加上双引号。
这些规则使得开发一个XML解析器要简便得多,而且也除去了解析SGML中花在判断何时何地应用那些奇怪语法规则上的工作。仅仅在XML出现后的前六年就衍生出多种不同的语言,包括MathML、SVG、RDF、RSS、SOAP、XSLT、XSL-FO,而同时也将HTML改进为XHTML。XML已经是世界上发展最快的技术之一。它的主要目的是使用文本以结构化的方式来表示数据。在某些方面,XML文件也类似于数据库,提供数据的结构化视图。
上面的写法表示genre是book的属性它的是属性值是reference,<book><title>是平级的子节点
取值“reference”的路径是:./books/book[name='genre']的values
这个路径语法不一定对大概是这个样子。
下面的写法表示genre是book的子节点它的文本值是reference
<genre>是<book>的子节点多了一层结构关系
取值“reference”的路径是:./books/book/genre下的innertext
这个路径语法不一定对大概是这个样子。
一个节点可以有多个属性和一个文本值,具体设计的时候看层次结构和使用的方便程度,如果是上面的简单使用没什么打的区别。呵呵。
有不明白的地方继续补充
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)