初识XML 多功能语言

来源:互联网 发布:白t恤 知乎 编辑:程序博客网 时间:2024/06/10 06:00

                               XML 

XML概述

网际交换数据的语言

广泛的应用于:数据描述、网络交换数据、和系统配置文件。

XML有三层元素:

数据、结构和显示样式。

比起HTML同宗兄弟,有很多优点,如:将显示和数据的描述分开,这样就增强了灵活性,便于程序重构等等。

初识XML

一个XML文档:

<?xml version="1.0" encoding="gb2312" standalone="no"?>

<!DOCTYPE books SYSTEM "Char_2_books.dtd">

<books>

<book>

<title>Java程序设计</title>

<author>魏去惰</author>

<print>东北大学出版社</print>

<price unit="人民币元">28.50</price>

<book>

<book>

<title>C++网路程序</title>

<author>姜永乐</author>

<print>东北大学出版社</print>

<price unit="人民币元">35.00</price>

<book>

</books>

如上部分是一个典型的XML文档,包括如下几个部分,我们来一一认识一下吧:

1

<?xml version="1.0" encoding="gb2312" standalone="no"?>

这一条叫做文档类型说明,形式如下:

<?xml version="" 其他可选项?>

Encoding默认是Unicode

Standalone表达的是是否使用外部dtd什么是dtd?马上就说了,别急。

2引用文档类型定义说明

<DOCTYPE books SYSTEM "Chat_2_books.dtd">

这个是可选的,当你的dtd文件独立于xml文档时,我们就使用此选项说明。

格式:

<DOCTYPE 根 SYSTEM URL>

<DOCTYPE 根 PUBLIC DTD名 URL>

其中SYSTEM代表此文档是私有的,而PUBLIC代表的是文档是公用的。

3

文档主体,也就是记录部分。

<books>

<book>

<title>Java程序设计</title>

<author>魏去惰</author>

<print>东北大学出版社</print>

<price unit="人民币元">28.50</price>

<book>

<book>

<title>C++网路程序</title>

<author>姜永乐</author>

<print>东北大学出版社</print>

<price unit="人民币元">35.00</price>

<book>

</books>

注:

这个文档使用的是外部的dtd,我们可以使用文档的内部dtd,格式如下;

<!DOCTYPE 定义 根[

内部同外部dtd

]>

先给大家前一个的Chat_2_books.dtd

<?xml version="1.o' encoding="gb2312"?>

<!ELEMENT books(book*)>

<!ELEMENT book(title,author,print,price)>

<!ELEMENT title(#PCDAA)>

<!ELEMENT author(#PCDATA)>

<!ELEMENT print(#PCDATA)>

<!ELEMENT price(#PCDATA)>

<!ATTLIST price unit CDATA "人民币元">

写成外部的就是:

<DOCTYPE books[

<!ELEMENT books(book*)>

<!ELEMENT book(title,author,print,price)>

<!ELEMENT title(#PCDAA)>

<!ELEMENT author(#PCDATA)>

<!ELEMENT print(#PCDATA)>

<!ELEMENT price(#PCDATA)>

<!ATTLIST price unit CDATA "人民币元">

]>

先解释一下dtd的语法吧!

Dtd定义了xml文档的数据结构,其中的元素、元素的属性、和他们之间的关系

利用dtd可以检测xml是否规范。但是,xml文档不一定需要dtd。

经典文档类型定义范例:

<?xml version="1.0" enconding="gb2312">

<!DOCTYPE AS[

<!ELEMENT AS(A*)>

<!ELEMENT A(B|C)>

<!ELEMENT B(D,E)>

<!ELEMENT D(#PCDATA)>

<!ELEMENT E(#PCDATA)>

<!ELEMENT C(#PCDATA)>

]>

元素:

<!ELEMENT >

元素包含三个种类:

1复合元素2基本元素3空元素

1复合元素定义方法

<!ELEMENT 名(子元素1(出现的次数),子元素2(出现的次数)。。。。)

例如:

<!ELEMENT books(book*)>

代表books是复合的,包含或包含多个book

出现次数代表
?不出现或出现一次

*不出现或出现多次

+至少出现一次

无标记 代表出现且仅一次

2基本元素的定义方法

<!ELEMENT 名(#PCDATA)>

一般带有内容的使用PCDATA,还有CDATA,和ANY

3空元素定义

<!ELEMENT 元素名 EMPTY>

如定义:

<!ELEMENT hr EMPTY>

使用情况:

<hr />

属性说明:

<!ATTLIST 元素名 属性名 属性类型 赋值情况 默认值>

其中后两项是可选的。

属性的类型有:

CDATA                 字符串

ENUMERED             枚举

NMTOKEN              命名字符串

NMTOKENS             多个命名字符串,以空格隔开

ID                      唯一标识一条记录

IDREF                  运用id

IDREFS

ENTITY                 实体?

ENTITIES

NOTATION              

赋值特征:

        #REQUIRED              必须赋值

       #IMPLIED                可以不赋值

        #FIX                     固定的值

        默认值                   字符数据

几个小例子:

<!ATTLIST student department(computer|network) "network">

<!ATTLIST student no ID #REQURIED>

<!ATTLIST student next IDREF #IMPLIED>

什么是实体(ENTITY)?

实体包含如下几种类型:

1内部实体

定义在本dtd当中,如:

<!ENTITY author "魏去惰">

使用时:

&author

2外部实体

定义在外部。

使用时:

引入:

<!ENTITY author SYSTEM "DTD_URL">

使用:

&author

3预定义的实体

直接使用即可:

<                      <

&gl;                      >

&                    &

"                    "

&apos;                    '

4参数实体

参数实体只能在dtd中使用,不能在xml中使用,是为了方便的定义dtd

目的是重用相同定义的元素,相同元素的属性结构,也就是它参数可以代表一个元素。

如:

一个dtd1文档中使用如下:
<!ENTITY %parameter "bp">

本文档使用:
<!ELEMENT %parameter(tiele, sdf)>

其实就是:

<!ELEMENT bp(tiele,sdf)>

若有相同定义的元素在外部,使用情况如下:

必须在引用时说明现在的值:

<!DOCTYPE 。。。。。。[

<!ENITTY %patameter "book">

]>

XML文档的注意事项:

区分大小写

PCDATA表示解析字符串,常用

CDATA未解析

注释:

<!-- sdfdsf -->

原创粉丝点击