XML之DTD约束
程序员文章站
2022-05-30 13:13:32
...
XML约束: 规范XML文件数据内容格式的编写规则。(由开发者自行定义)
DTD约束
文档声明
1. 内部DTD (在XML文档内部嵌入DTD,只对当前XML有效)
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!DOCTYPE web-app [
...//具体语法
]>
<web-app>
</web-app>
2. 外部DTD-本地DTD (DTD文档在本地系统上,公司内部自己项目使用)
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE web-app SYSTEM "web-app_2_3.dtd">
<web-app>
</web-app>
3. 外部DTD-公共DTD (DTD文档在网络上,一般都有框架提供)
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE web-app PUBLIC "//UNKNOWN/" "unknown.dtd">
<web-app>
</web-app>
元素声明
定义元素语法:<!ELEMENT 元素名 元素描述>
元素:自定义
元素描述包括:符号和数据类型
常见符号: ? * + () | ,
常见类型: #PCDATA 表示内容是文本,不能是子标签
符号 | 符号类型 | 描述 | 示例 |
? | 问号 | b表示该对象可以出现,但只能出现一次 | (篮球?) |
* | 星号 | b表示该对象可以出现,可以出现任意次,也可以是零次 | (运动*) |
+ | 加号 | b表示该对象可以出现,最少出现一次,也可以出现多次 | (成员+) |
() | 括号 | b表示用来给元素分组 |
(足球|羽毛球|乒乓球), (铅球|篮球),网球 |
| | 竖条 | b表示在列出的对象中选择一个 | (乒乓球|篮球) |
, | 逗号 | b表示对象必须按指定的顺序出现 | (乒乓球,篮球,羽毛球) |
属性声明
语法: <!ATTLIST 元素名称 属性名称 属性类型 属性的约束>
属性类型:CDATA: 字符串 如:<!ATTLIST birthday ATT CDATA #REQUIRED>
枚举 : 表示只能在一定的范围内出现值,但是只能每次出现其中的一个 。如<!ATTLIST age ATT2 (AA|BB|CC) #REQUIRED>
ID: 值只能是字母或者下划线开头 <!ATTLIST name ATT3 ID #REQUIRED>
属性的约束: #REQUIRED:属性必须存在
#IMPLIED:属性可有可无
#FIXED: 表示一个固定值 <!ATTLIST sex ATT4 CDATA #FIXED "ABC">
直接值:不写属性,使用直接值,写了属性,使用设置那个值 <!ATTLIST school ATT5 CDATA "WWW">
约束模板(加入后,编写xml文件便有了约束,有了提示)
<?xml version="1.0" encoding="UTF-8"?>
<!--
模拟servlet2.3规范,如果开发人员需要在xml使用当前DTD约束,必须包括DOCTYPE。
格式如下:
<!DOCTYPE web-app SYSTEM "web-app_2_3.dtd">
-->
<!ELEMENT web-app (servlet*,servlet-mapping* , welcome-file-list?) >
<!ELEMENT servlet (servlet-name,description?,(servlet-class|jsp-file))>
<!ELEMENT servlet-mapping (servlet-name,url-pattern+) >
<!ELEMENT servlet-name (#PCDATA)>
<!ELEMENT servlet-class (#PCDATA)>
<!ELEMENT url-pattern (#PCDATA)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT jsp-file (#PCDATA)>
<!ELEMENT welcome-file-list (welcome-file+)>
<!ELEMENT welcome-file (#PCDATA)>
<!ATTLIST web-app version CDATA #IMPLIED>
上一篇: 无线城市蹒跚起步 每分钟上网0.12元
下一篇: 如何使用QT语音中CF窗口化工具