XML入门基础

    学习XML的时候,我们自然而然的就想起了HTML,HTML在前面的博客已经做了介绍,下面主要是介绍XML的相关基础。

XML入门基础

一、XML?

HTML(Hyper Text Markup Language)超文本标记语言,是用来描述网页文档的一种语言。

XML(EXtensible Markup Language)是一种类似HTML的可扩展标记语言,但是它不是用来显示数据的,而是用来包含和传输数据。一般用来配置文件,携带方面。 


1.世界上任何事物都是变化发展的——XML发展历史:


XML入门基础


2.XML与HTML的差异:

  • XML不是用来替换HTML的技术
  • XML和HTML为不同的目的而设计
  • XML设计的核心是包含与传输数据
  • HTML设计的核心是显示数据


3.XML的树状结构

XML文档形成了一种树结构,从“根部”开始,扩展到“枝叶”。例如:


XML入门基础

    

   从上面的实例我们可以看出,XML的组成包括:声明、标签(尖括号)、元素(根元素、父元素、子元素)等等。XML文档中的元素形成一颗文档树。这棵树从根部开始,并扩展到树的最低端。好处是: 结构清晰、易于读取、处理、添加和修改子节点。 


4.XML构建模块——元素、属性、实体、PCDATA、CDATA


(1)元素

元素指的是从(且包括)开始标签直到(且包括)结束标签的部分。 

元素可包含其他元素、文本或者两者的混合物。 元素也可拥有属性。 

命名空间:解决名称冲突问题

(2)属性

属性提供关于元素的额外(附加)信息。

XML属性值必须被引号包围,不过单引号和双引号均可使用。

(3)实体

    实体是用于定义引用普通文本或特殊字符的快捷方式的变。

    实体引用是对实体的引用,为了避免把字符数据和标签中需要用到的一些特殊符号相混淆。


在XML中有5个被预定义的实体引用:

XML入门基础

注释:在XML中仅有字符:“<"和”&“是非法的。省略号、引号和大于号是合法的,但是把它们替换为实体引用是一个好习惯。通常来说,所有XML文档中的文本均会被解析器解析。只有CDATA区段(CDATA section)中的文本会被解析器忽略。


(4)CDATA

    CDATA指的是不应由XML解析器解析的文本数据(UCDATAUnparsed Character Data)。

    在 XML 元素中,"<" 和 "&" 是非法的。"<" 会产生错误,因为解析器会把该字符解释为新元素的开始。

"&" 也会产生错误,因为解析器会把该字符解释为字符实体的开始。CDATA 部分由 "<![CDATA[" 开始,由 "]]>" 结束。

  关于 CDATA 部分的注释:

     CDATA 部分不能包含字符串 "]]>"。也不允许嵌套的 CDATA 部分。

     标记 CDATA 部分结尾的 "]]>" 不能包含空格或折行。

(5)PCDATA

    PCDATA 指的是被解析的字符数据(Parsed Character Data)。

    XML 解析器通常会解析 XML 文档中所有的文本。

    当某个 XML 元素被解析时,其标签之间的文本也会被解析,所以非法的XML 字符必须被替换为实体引用(entity reference)。

5、XML语法规则:

  • XML 文档必须有根元素XML 文档必须有一个元素是所有其他元素的父元素。该元素称为根元素
  • XML文件必须有关闭标签
  • XML标记对大小写敏感
  • XML元素必须被正确的嵌套
  • XML属性必须加引号

    上面介绍了XML相关的语法结构以及语法规则。但是这些都是由谁来定义和提供的呢?XML文档是一种结构化的标记文档,其文档的规范性由:DTD (Document Type Definition)和Schema两种方式进行制定 。 


二、DTD

1.定义、用途?
    文档类型定义(DTD)定义XML文件的结构,为XML文件提供语法与规则;内容既可以定义在XML文件中,也可以定义在XML文件外,使用XML进行数据交换的行业或组织可定义自己的DTD,DTD对于XML是可选内容。 
   为什么要使用DTD呢? 
    为了正确交换数据,XML需要确定的结构,所以通过DTD,每一个XML文件可携带一个又关其自身格式的描述;独立的团体可一致的使用某个标准的DTD来交互数据;使用DTD来验证外部接受到的数据或是验证自身的数据。 

2.DTD结构
(1)元素
     在一个DTD中元素声明使用下面的语法:
        <!ELEMENT 元素名称 类别>或者<!ELEMENT 元素名称(元素内容)>
         例如:<!ELEMENT 书名(#PCDATA)><!ELEMENT 计算机书籍 (书名,价格,简要介绍)>
   a.空元素声明: 
        <!ELEMENT 元素名称 EMPTY>
        例如:<!ELEMENT br EMPTY>
   b.带有任何元素的声明: 
        <!ELEMENT 元素名称 ANY>
        例如:<!ELEMENT note ANY> 
   c.带有子元素的声明:
<!ELEMENT 元素名称 (子元素名称1,子元素名称2...)> 
例如:<!ELEMENT note (to,from,heading,body)>
       注释:当子元素按照由逗号分隔开的序列进行声明时,这些子元素必须按照相同的顺序出现在文档中。在一个完整的声明中,子元素也必须被声明,同时子元素也可拥有子元素。
    d.声明只出现一次的元素:
        <!ELEMENT 元素名称 (子元素名称)>
        例如:<!ELEMENT note (message)>

   e.声明最少出现一次的元素

        <!ELEMENT 元素名称 (子元素名称+)>
        例如:<!ELEMENT note (message+)>

   f.声明出现零次或多次的元素
        <!ELEMENT 元素名称 (子元素名称*)>
        例如:<!ELEMENT note (message*)>
    g.声明出现零次或一次的元素
       <!ELEMENT 元素名称 (子元素名称?)>
       例子:<!ELEMENT note (message?)>
    h.声明“非.../既...”类型的内容
       <!ELEMENT 元素名称(子元素名称|子元素名称2)>
       例子:<!ELEMENT note (to,from,header,(message|body))>
   i.声明混合型的内容
       <!ELEMENT 元素名称(#PCDATA|子元素名称)*>
       例如:<!ELEMENTnote (#PCDATA|to|from|header|message)*>
(2)属性
        在DTD中,属性通过ATTLIST来进行声明
        语法:<!ATTLIST 元素名称 属性名称 属性类型 默认值>
        例如:<!ATTLIST payment type CDATA "cash">

     属性类型:
XML入门基础

      默认值:
XML入门基础
(3)实体

     是用于定义引用普通文本或特殊字符的快捷方式的变量

     实体引用是对实体的引用

     实体可在内部或外部进行声明


    a.内部实体声明的语法: 

           <!ENITY 实体名称 “实体的值”>

           例子:<!ENITY writer "Bill Gates">

                 <!ENTITY copyright "Copyright W3School.com.cn">

     b.外部实体声明的语法
           <!ENITY 实体名称 SYSTEM "URI/URL">
           例如:<!ENTITY writer SYSTEM "http://www.w3school.com.cn/dtd/entities.dtd">

三、Schema技术

1.定义、作用?
    Schema是用来描述XML文档的结构,是基于XML的DTD替代者,XML Schema 语言也可作为 XSD(XML Schema Definition)来引用。使用Schema可保护数据通信。

2.Schema是DTD的继任者
  • 可针对未来的需求进行扩展
  • 更完善,功能更强大
  • 基于XML编写
  • 支持数据类型
  • 支持命名空间
总结:XML是一种可扩展的标记语言,DTD是一种保证XML文档格式正确的有效方法,可以通过比较XML文档和DTD文件来看XML文档是否符合规范,元素和标签是否正确。一个DTD文档包含:元素、元素间关系的定义规则,元素可使用的属性,可使用的实体或符号规则。Shcema模式,是DTD的继任者,比DTD的功能更为强大。

XML入门基础

上一篇:浅谈服务端脚本和客户端脚本


下一篇:快速排序的非递归算法(使用队列)