XML的总结
概要本篇文字比较多,希望读者能够耐心看下去!
为什么有了XML?你用Word应用程序创建了一个Word文档,并在里面写了一些具体的数据,然后,你再用NotePad程序打开它,你说NotePad中显示的数据是源Word文档中的真实数据吗?答案当然不是,那么,为什么不是呢?因为Word文档中的数据编码含义不单单有具体数据,还有它的格式,那么,如何才可以让NotePad应用程序中正确的显示Word文件的具体数据呢? 方法一:在Word应用程序中添加一个将数据转化为NotePad数据的功能,或在NotePad应用程序中添加一个可以正确打开Word文件的功能,当然,这种情况不可能实现,因为,现实中已经存在的大型程序很多,你不能说都这样吧;方法二:在Word和NotePad之间传送的数据格式是唯一的,也就是说,Word应用程序中有一个功能,先把Word文档中的数据转化为一个格式的数据类型,然后传给NotePad应用程序,NotePad应用程序里也添加了一个功能就是把传递的数据格式转化为自己特有的格式,这样就ok了,不仅他们两个可以,其他的应用程序如果也添加处理该数据格式类型的功能,也可以进行数据之间的交互。 上面中的那个数据格式的名字就叫XML,之所出现不同应用程序之间进行数据之间的交互,主要还是因为互联网的发展。
XML和HTML的区别HTML主要是用来显示数据的,具体数据中有些标签,这些标签的作用用来显示数据的布局,这些标签的集合就是HTML;XML主要是用来传递数据的,只在中间起作用,举例:各个国家都说自己的母语,但是只说母语没法和别的国家的人交流,然后,出一个SB语言,不同国家交流用SB语言,但是,同国内的使用,还是要把SB转换为母语的,SB语言就好像是XML。
XML文档的基本组成部分声明<?xml version="1.0" encoding="utf-8">;解释:version表示XML文件的版本;encoding表示XML文件使用的字符编码方式。 注释<!-- 这个就是注释格式 --> 元素元素是“开始标签”、“结束标签”以及位于二者之间的所有“内容”。 标签左尖括号(<)和右尖括号(>)之间的文本,是文本,XML中的标签是自己定义的,可以为汉字,也可以为英语。标签可以有自己的属性,属性只是标签的一部分,当使用属性的时候,其属性一定要赋值,其值必须用引号(成对的单引号或双引号都行)括起。 开始标签左尖括号、右尖括号以及位于二者之间的内容。例:<书籍> 结束标签左尖括号、反斜杠、右尖括号以及开始标签中的标签。例:</书籍> 内容位于开始标签和结束标签之间的内容可以是元素,也可以是具体的数据,具体数据时需要注意,有些特殊的字符数据与开始标签(除标签)和结束标签(除标签)中需要用到的一些特殊符号相混淆,XML提供了一些特殊的字符串来代替他们,这些特殊字符串就是实体引用。如果出现转要换的符号太多的话可以使用CDATE,语法为:“<![cdata[文本内容]]>”,将源文本内容换成那个就行。下图为实体引用中的特殊符号之间的转化
示例
<?xml version = "1.0" encoding="utf-8"?> <书籍列表> <计算机书> <书名>.net编程入门</书名> <单价>23.20</单价> <作者 性别="男">青山</作者> </计算机书> <生科书> <书名>生物学</书名> <单价>23.10</单价> <作者 sex="男">青山</作者> </生科书> </书籍列表>
DTD(Document Type Definition)XML的标签是自定义的,不像HTML中的标签是固定的,看了这句话后,你可以能有这么一个疑问:XML中的标签是自定义的,那是不是我想在XML文件中写几个标签就写几个标签,且标签的先后顺序和名称等等都是可变的吗?这个不能这么说,要知道,无规矩不成方圆,再说了,没有规矩,没有规则也编不了程序啊,你想,我这程序是针对A标签的,你在XML中却写了B,那么程序怎么会正确的处理它,当然,在我们制造这个程序之前,规定具体的标签的时候,我们可以随我们的意思,任意的弄,但是,弄好了之后,你的XML文件就必须根据这个来,否则,程序对你的XML文件不起作用。规定的具体的标签的形式会以DTD的格式存在。DTD可以嵌在XML中,也可以以单独的文件存在,不过,想一想,还是以单端的文件存在的形式居多,大家都可以看看做嘛,这样大家要想和你的程序进行数据之间的交互时,就将自己的数据按照你的DTD格式的XML进行转化,然后传送就可以了,当然,也可以将你的DTD格式下的XML转化为自己的数据格式存放。 DTD为XML制作规则,就是制作XML的元素、属性和实体。这里元素值得是除属性后的标签,实体就是具体那些特殊字符串(替代那些和XML格式中冲突的字符串) 元素关键字为:ELEMENT,PCDATA,PDATA。还有一些具有特殊意义的字符,如下图:
举一例,剩下的可以自己去推
<!--DTD中--> <!element 计算机书籍(书名|价格)*> <!element 书名(#pcdata)> <!element 价格(#pcdata)> <--XML中--> <书籍列表> <计算机书籍> <书名>J2EE教程</书名> <价格>100</价格> </计算机书籍> </书籍列表> 属性关键字:ATTLIST,属性默认值,属性类型。 属性默认值
属性类型如下图
举例
语法:<!ATTLIST 元素名称 属性名称 属性类型 #IMPLIED> DTD文件:<!ATTLIST payment type cdata #IMPLIED> XML文件:<payment type = "cash" /> <payment/> 语法:<!ATTLIST 元素名称 属性名称 属性类型 #FIXED "value"> DTD文件:<!ATTLIST payment type CDATA #FIXED "cash"> XML文件:<payment type = "cash" /> <payment> 语法:<!ATTLIST 元素名称 属性名称 属性类型 默认值> DTD中 <!ATTLIST payment type CDATA "cash"> XML中 <payment type="cash" /> 实体说到实体,在这里说一下DTD的存在形式:内部DTD和外部DTD;外部DTD根据其作用的范围又分为:普通外部DTD和特殊外部DTD。 内部DTDDTD和XML放在同一份文档中,也就是说DTD定义在XML文档内部,在XML中的存在位置:XML文档的声明和元素之间。
普通外部DTD以单独的文件存放DTD,这样可以方便地被多个XML文档所共享。文件扩展名为“.dtd”。
特殊外部DTD也可以成为公共DTD,是由某个权威机构制定,供特定行业或公司使用。<!DOCTYPE根元素名 PUBLIC "DTD-Name" "DTD-URL">。公用DTD和普通外部DTD的区别:公用DTD使用PUBLID代替了原来的SYSTEM,并增加了DTD标识名。 实体的定义
内部实体声明的 语法: <!entity 实体名称 "实体的值"> DTD文件中 <!entity writer "Bill Gates"> <!entity copyright "Copyright jobedu.com.cn"> XML文件中 <author> &writer;?right;</author> 外部实体声明 语法:<!entity 实体名称 system "uri/url"> DTD中 <!entity writer system "http://www.jobedu.com.cn/dtd/person.dtd"> XML中 <author>&writer;</author> 命名空间如果XML要引入多个外部DTD文档话,可能会出现元素同名的情况,为了避免这种混淆,在DTD中引入了命名空间的概念,当然,XML文档中的具体就是前缀名了。
schemaschema是DTD的替代品,它是基于XML格式,支持更多的数据类型的新一代技术,它区别于DTD的根本一点就是支持更多的数据类型,使数据格式更加的标准。
总结XML还没有相应的应用,先了解些,等到日后用时,在好好弄。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |