XML语法和HTML区别以及DTD约束

XML语法

<?xml version="1.0" encoding = "UTF-8"?>

<中国>

        <河北>

                 <城市>张家口</城市>

                 <城市>石家庄</城市>

         </河北>

         <山西>

                 <城市>太原</城市>

                 <城市>石家庄</城市>

         </山西>

</中国>

1.文档声明

在一个完整的XML文档中,必须包含一个XML文档的声明,并且该声明必须位于文档的第一行,

XML文档声明格式如下

<?xml 版本信息[编码信息][文档独立信息]?>

中括号[]括起来的部分是可选部分。

<?xml version="1.0" encoding = "UTF-8" standalone="yes"?>

version版本,encoding编码方式,默认utf-8,standalone属性用来声明这个文档是否独立的文档默认情况下是no,即依赖于外部文档。

2.元素定义

在XML文档中,主体内容都是由元素组成的,元素一般是由开始标记,属性,元素内容和结束标志构成,

<城市>石家庄</城市>

3.属性定义

在XML文档中,可以为元素定义属性。

<售价 单位="元">68</售价>

在上面的示例中,售价中定义了一个属性单位,属性值必须用双引号或单引号包含

4.注释

如果想在XML文档中插入一些附加信息,比如作者姓名,地址,或电话等信息,这时可以注释实现

<!--注释信息-->

XML与HTML区别

1.HTML是用来显示数据的,XML是传输和存储数据的

2.HTML是不区分大小写的,而XML是严格区分大小写

3.HTML可以有多个根元素,而格式良好的XML有且只能有一个根元素。

4.HTML中,空格是可以自动过滤的,而XML则不会自动删除空格

5.HTML中的标记是预定义的,而XML中的标记可以根据自己的需要去定义,并且可扩展

DTD约束

什么是约束,在现实生活中,一篇文章的语法正常,但内容包含违法言论或逻辑错误,这样的文章是不允许发表的。

同样,在书写XML文档时,其内容必须满足某些条件的限制,

<?xml version="1.0" encoding = "UTF-8" >

<书架>

        <书>

               <书名>Java就业培训教程</书名>

                <作者 姓名="张孝祥" />

                 <售价 单位="元">38</售价>

                 <售价 单位="元">28</售价>

        </书>

</书架>

尽管这个XML文档结构是正确的,但是一本书应该只有一个售价

由于XML文档的标记是可以随意定义的,一本书,出现了两种售价,如果仅根据标记名称区分哪个是原价,哪个是会员价,这是很难实现的

在XML文档中,定义了一套规则来对文档中的内容进行约束,这套约束称为XML约束

对XML文档进行约束时,同样需要遵守一定的语法规则,最常用的约束语言是DTD约束,Schema约束。

DTD约束

DTD约束时早期出现的一种XML约束模式语言,根据它的语法创建的文件称为DTD文件。

在一个DTD文件中,可以包含元素的定义、元素之间关系的定义、元素属性的定义以及实体和符号的定义。

eg:book.xml

<?xml version="1.0" encoding = "UTF-8" >

<书架>

         <书>

              <书名>Java就业培训课程</书名>

              <作者>张孝祥</作者>

               <售价>58.00</售价>

          </书>

            <书>

              <书名>EJB3.0入门经典</书名>

              <作者>黎浩明</作者>

               <售价>39.00</售价>

          </书>

</书架>

 

book.dtd

<!ELEMENT 书架 (书+)>

<!ELEMENT 书(书名,作者,售价)>

<!ELEMENT 书名(#PCDATA)>

<!ELEMENT 作者(#PCDATA)>

<!ELEMENT 售价 (#PCDATA)>

 

<!ELEMENT 书架 (书+)>    书架是元素的名称,(书+)表示书架元素中有一个或者多个书元素,字符“+”表示用来表示它所修饰的成分必须出现一次或多次

<!ELEMENT 书(书名,作者,售价)>    “书”是元素名称,“(书名,作者,售价)”表示元素书包含书名,作者,售价,三个子元素,并且这些子元素要按照顺序依次出现。

第3·5行中,“书名”,作者,售价都是元素名称,“(#PCDATA)”表示元素中嵌套的内容是普通的文本字符串

 

DTD的引入

如果想使用DTD文件,约束XML文档,必须在XML文档中引入DTD文件。两种方式

<!DOCTYPE 根元素名称 SYSTEM "外部DTD文件的URI">这种方式引入本地的DTD文件

<!DOCTYPE 根元素名称 PUBLIC "DTD名称" "外部DTD文件的URI">这种方式用来引用公共的DTD文件

本地DTD文件引入,记得不能设置standalone属性为yes,因为yes代表独立。例如:

<?xml version="1.0" encoding = "UTF-8" >

<!DOCTYPE 书架 SYSTEM "book.dtd">

<书架>

         <书>

              <书名>Java就业培训课程</书名>

              <作者>张孝祥</作者>

               <售价>58.00</售价>

          </书>

            <书>

              <书名>EJB3.0入门经典</书名>

              <作者>黎浩明</作者>

               <售价>39.00</售价>

          </书>

</书架>

如果希望引入一个公共的DTD文件,则需要在DOCTYPE声明语句中使用PUBLIC属性

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems,Inc.//DTD Web Application 2.3//EN"

"http://java.sun.com/dtd/web-app_2_3.dtd">

-//Sun Microsystems,Inc.//DTD Web Application 2.3//EN是DTD的名称,"http://java.sun.com/dtd/web-app_2_3.dtd"是它的URI

DTD对XML文档的约束还可以使用内嵌式,在XML中直接嵌入DTD语句的完整语法格式如下:

<?xml version="1.0" encoding = "UTF-8"  standalone="yes">

<!DOCTYPE  书架[

<!ELEMENT 书架 (书+)>

<!ELEMENT 书(书名,作者,售价)>

<!ELEMENT 书名(#PCDATA)>

<!ELEMENT 作者(#PCDATA)>

<!ELEMENT 售价 (#PCDATA)>

]>

<书架>

         <书>

              <书名>Java就业培训课程</书名>

              <作者>张孝祥</作者>

               <售价>58.00</售价>

          </书>

            <书>

              <书名>EJB3.0入门经典</书名>

              <作者>黎浩明</作者>

               <售价>39.00</售价>

          </书>

</书架>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值