XML:DTD约束

XML:DTD约束

1、 DTD的介绍和用处

1、因为XML中的标记有非常高的自由性,可以随意定义标记。但是很多时候我们需要对标记进行规定,比如,某个标记只能出现一次,某个标记只能叫什么。对于此类的定义就由DTD语言来定义。

2、文档类型定义(DTD)可定义合法的XML文档构建模块。它使用一系列合法的元素来定义文档的结构。DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用。

3、为什么使用 DTD?
通过 DTD,您的每一个 XML 文件均可携带一个有关其自身格式的描述。通过 DTD,独立的团体可一致地使用某个标准的 DTD 来交换数据。而您的应用程序也可使用某个标准的 DTD 来验证从外部接收到的数据。您还可以使用 DTD 来验证您自身的数据。

2、XML的用途?

1、做配置,做数据传输。

2、html与xml区别?
约束的差异性。
html是超文本,
xml是可拓展标记语言,
xml能够通过字符串表示对象的结构。

3、DTD的语法

  1. 什么是格式良好XML
    1.1 有且只有一个根元素
    1.2 XML标签大小写正确区分
    1.3 正确使用结束标签
    1.4 正确嵌套标签
    1.5 使用了合法的标签名
    1.6 定义有效的属性

代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<dzys>
 <dzy >
  <name>李伟</name>
  <age>25</age>
  <contact>
   <phone>13333333</phone>
  </contact>
  <br/>
 </dzy>
 <dzy >
  <name>张星</name>
  <age>50</age>
  <contact>
   <email>123@qq.com</email>
  </contact>
 </dzy>
</dzys>
  1. 在XML加入DTD声明
   <!DOCTYPE root[]>
  1. 元素定义的语法
   <!ELEMENT element-name (type)>
   注:根标签也要定义!!
  1. 元素的分类
<!ELEMENT element-name EMPTY>//空元素
<!ELEMENT element-name (#PCDATA)>//文本元素
<!ELEMENT element-name (e1,e2)>//混合元素

代码演示如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dzys[
   <!ELEMENT  dzys (dzy*)>
   <!ELEMENT  dzy  (name,age,contact,br?)>
   <!ELEMENT  name (#PCDATA)>
   <!ELEMENT  age (#PCDATA)>
   <!ELEMENT  contact (phone|email)>
   <!ELEMENT  phone (#PCDATA)>
   <!ELEMENT  br EMPTY>
   <!ELEMENT  email (#PCDATA)>
] >
<dzys>
 <dzy>
  <name>李伟</name>
  <age>25</age>
  <contact>
   <phone>13333333</phone>
  </contact>
  <br />
 </dzy>
 <dzy>
  <name>张星</name>
  <age>50</age>
  <contact>
   <email>123@qq.com</email>
  </contact>
   
 </dzy>
</dzys>

代码解释:
1、 EMPTY>//空元素 :br 是转向标签。定义为空值。
2、(#PCDATA)>//文本元素 :一些文字和数字,以及邮箱
3、(e1,e2)>//混合元素:标签里面包含标签,
4、第四列中br加了问号(?)是什么意思?
在18列contact后面有一个br。
但是在26列contac后面没有br。
如果两个对象标签必须有一样的标签,要不然就加问号(?)。

  1. 元素的限制
    ,代表并且
    |代表或者
    次数: +, 1~n
    *, 0~n
    ?, 0或1
    没有

  2. 属性定义的语法

   <!ATTLIST element-name  att_name type >
   attributeList-->属性列表(attlist简写)

ID
(男|女)
CDATA(文本类型)
IDREF(的缩写reference 关联)
#REQUIRED/#IMPLIED(必须/非必须)

  1. XML中的特殊符号
   &(逻辑与)  &amp;        
   <(小于)    &lt;        
   >(大于)    &gt;        
   "(双引号)  &quot;      
   '(单引号)  &apos;

代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dzys[
   <!ELEMENT  dzys (dzy*)>
   <!ELEMENT  dzy  (name,age,contact,br?)>
   <!ELEMENT  name (#PCDATA)>
   <!ELEMENT  age (#PCDATA)>
   <!ELEMENT  contact (phone|email)>
   <!ELEMENT  phone (#PCDATA)>
   <!ELEMENT  br EMPTY>
   <!ELEMENT  email (#PCDATA)>
   <!ATTLIST  dzy
    pid ID #REQUIRED
      sex (男|女) '男'
      qq CDATA #IMPLIED
      parent IDREF #IMPLIED
   >
] >
<dzys>
 <dzy  pid="p1" sex="男" qq="aaa" parent="p2">
  <name>李伟</name>
  <age>25</age>
  <contact>
   <phone>13333333</phone>
  </contact>
  <br />
 </dzy  >
 <dzy  pid="p2">
  <name>张星</name>
  <age>50</age>
  <contact>
   <email>123@qq.com</email>
  </contact>
   
 </dzy>
</dzys>

4、 元素内容的类型

在这里插入图片描述

5、元素ELEMENT定义

在这里插入图片描述
XML更加详细了解,博客专家链接:
https://blog.csdn.net/u013087513/article/details/52745509

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值