XML快速入門

爲什麽使用xml呢

  1. 配置文件
  2. 充当小型数据库 (本地存储通信数据,qq信息,微信…)
  3. 不同应用通信 (msn之间通信)
    为什么不同应用间通信用xml比较好呢,因为它具有良好的可读性,扩展性。 你当然可以传字节流,但是那就很难去阅读和使用了。

XML 文件约束 dtd

dtd (document type definition)
我们知道,如果单纯的一个xml文件,你可以写任意的标签都没有关系。但是我们需要自由,但也需要约束自由。
dtd就是来约束xml的,它约束了哪些标签可以在xml中使用,哪些属性可以在标签中可以被添加以及哪些属性是必须的,可选的,属性值的类型等等。

我们还可以使用schema技术做相同的事,甚至比dtd能做更加多的事情,但这里我们主要了解dtd即可。

使用Dtd有多种方式,有点像css javascrip的多种使用方式。 这里我们就学习一种使用方式,即通过网络引入dtd的方式。

struts-config 定义了xml的根标签,如html里的html表情是根标签,根标签最多只有一个

Dtd的编写

在这里插入图片描述

<!ELEMENT baliseA (baliseB+)>
<!ELEMENT baliseB(baliseC, baliseD, baliseE)>
	<!ELEMENT baliseC (#PCDATA)>
	<!ELEMENT baliseD (#PCDATA)>
	<!ELEMENT baliseE (#PCDATA)>
DTD元素1
<!ELEMENT NAME CONTENT>

ELEMENT是关键字
NAME 是元素名称
CONTENT 元素类型(大写)
元素类型:EMPTY ----该元素不能包含子元素和文本,但可以有属性
ANY:------该元素可以包含任何在DTD中定义的元素内容
#PCDATA ------可以包含任何字符数据,但是不能在其中包含任何子元素(不能包含其他标签的意思)

baliseB+ 这个+号跟正则表达式一样,是最少有一个的意思,这里还可以用正则里其他的符号,如*之类的
#PCDATA 是指baliseC D E里面可以输入的数据类型,这里PCDATA表示可以任意字符

修饰符:
在这里插入图片描述
注意这个逗号修饰符,它是规定了标签要出现的顺序,你不可以先写苹果,在写西瓜香蕉

DTD元素2

属性定义语法

<!ATTLIST 元素名称 属性名称 类型 属性 特点 属性名称 类型 属性 特点 >

元素名称,就是你定义的表情名称
类型:
-----------CDATA 任意字符
-----------ID ID类型 表明值必须是独一无二的
-----------IDREF/IDREFS 参考类型,必须参考其他id存在的元素
-----------Enumerated 枚举类型 属性存在时必须是枚举中的值
-----------ENTITY/ENTITIES

特点(即属性的存在性约束条件)
-----------#REQUIRED 必须制定属性值
-----------#IMPLIED 属性值可以指定或者不指定
-----------#FIXED value 必须制定属性值,且值必须要是指定的value
-----------default value 默认,即如果不指定属性值,将使用指定的默认值

例子:
在这里插入图片描述
学到这里,你以为你掌握了很多,但实际上给你一个dtd,你又看不懂什么东西,因为实际上dtd里面应用了很多实体类型
实体类型有两种

  1. 引用实体
    就是在dtd定义一个实体,然后就可以在xml中通过&实体名称 来使用,相当于定义了一个常量。
    语法:

    <!ENTITY 实体名称 “实体内容”>

    引用方式(在xml中使用):
    &实体名称
    举例:

    <!ENTITY copyright "I am a programmer">

    ………
    &copyright

  2. 参数实体
    . 语法:

    <!ENTITY % 实体名称 “实体内容”>

    引用方式(在DTD中使用):
    % 实体名称;
    举例:
    在这里插入图片描述

ps:
1.相比最初版本的html的缺陷(1.标记不能自定义2.html标签本身缺少语义3.没有实现真正的国际化),xml更完善,更符合现代场景的需求。
2.比起建立一个数据库来存储本地的一些聊天记录的可笑,使用xml存储,方便而且查询高效。
3.CDATE节可以让xml里包含一些特殊符号: <![CDATA]sdgjk#$%^&*<>sda]]>。所以可以用xml去传递小图片,即把图片读成byte[],然后放到CDATA节里传递,然后收到字节数组后,读取拼接

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值