XML
什么是置标语言
超文本置标语言HTML(HyperText Markup Language),HTML的精髓在于“置标”(Markup),“置标”的一个精确定义是:就数据本身的信息对数据进行编码的方法(例:黄色荧光笔把课本上的某些句子加亮,就是将语句置标),所有人都遵循着和你一样的置标标准(难道你见过专门挑那些不重要的课文加亮的人吗?)而在HTML中,标记就是所谓的“标签”(tag)。
一段HTML代码,<center><b>天路信息技术有限公司</b></center>
什么是XML
正象HTML一样,可扩展置标语言XML(Extensible Markup Language)也是一种置标语言。功能要强于HTML,“人”如其名,XML的强大功能来自于“X”。XML并非象HTML那样,提供了一组事先已经定义好了的标签,而是提供了一个标准,利用这个标准,你可以根据实际需要定义自己的新的置标语言,并为你的这个置标语言规定它特有的一套标签。准确的说,XML是一种源置标语言。
让我们来考虑一个非常简单的例子。如果我们需要定义一个新的置标语言叫做TCLML(TopDigi Company s Client List Markup Language)——TopDigi公司的客户列表置标语言。
<联系人列表>
<联系人>
<姓名>张三</姓名>
<ID>001</ID>
<公司>A公司</公司>
<EMAIL>zhang@aaa.com</EMAIL>
<电话>(010)62345678</电话>
<地址>
<街道>五街1234号</街道>
<城市>北京市</城市>
<省份>北京</省份>
<ZIP>100001</ZIP>
</地址>
</联系人>
<联系人>
<姓名>李四</姓名>
<ID>002</ID>
<公司>B公司</公司>
<EMAIL>li@bbb.org</EMAIL>
<电话>(021)87654321</电话>
<地址>
<街道>南京路9876号</街道>
<城市>上海</城市>
<省份>上海</省份>
<ZIP>200002</ZIP>
</地址>
</联系人>
</联系人列表>
为了让别人读懂这些数据,置标语言中的置标标准还需包括:
- 置标的语法
- 每个置标的含义
在XML中,置标的语法是通过文件类型定义DTD(Document Type Definition)来描述的。也就是说,我们通过DTD来描述什么是有效的标签,从而进一步定义置标语言的结构。在用XML定义的置标语言中,DTD与数据文件是分离的部分。
tclml.dtd:
<?xml version="1.0" encoding="GB2312"?>
<!ELEMENT 联系人列表 (联系人)*>
<!ELEMENT 联系人 (姓名,ID,公司,EMAIL,电话,地址)>
<!ELEMENT 地址 (街道,城市,省份)>
<!ELEMENT 姓名 (#PCDATA)>
<!ELEMENT ID (#PCDATA)>
<!ELEMENT 公司 (#PCDATA)>
<!ELEMENT EMAIL (#PCDATA)>
<!ELEMENT 电话 (#PCDATA)>
<!ELEMENT 街道 (#PCDATA)>
<!ELEMENT 城市 (#PCDATA)>
<!ELEMENT 省份 (#PCDATA)>
为了明确各个标签的意义,XML使用与之相连的样式单(style sheet),由它来向应用程序,比如浏览器,提供如何处理显示的指示说明。一个样式单的具体格式我们在第四章再具体描述,现在我们只需知道,样式单所作的规定可能是这样的:
1. 每当看到一个〈联系人〉标签,用一个〈UL〉标签显示它。同样,〈/联系人〉转换为一个〈/UL〉标签。
2. 所有的〈姓名〉标签被转换为〈LI〉标签加以显示。同样,〈/姓名〉转换?LI〉标签。
3. 所有的〈EMAIL〉标签被转换为〈LI〉标签加以显示。同样,〈/EMAIL〉转换为〈/LI〉标签。
这说明我们不但要把三个文件合一,还要制作或购买一个新的应用处理程序。太恐怖了!这些都是值得的。
HTML蕴藏了许多危机