DTD约束语法

本文记录Java学习过程中遇到的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="yes"?>
<!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="yes"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystem, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
</web-app>

元素声明

定义元素语法:

<!ELEMENT 元素名 元素描述>

元素名:自定义;

元素描述:包括符号和数据类型

  • 常见符号:?, *, + ,(), |, ,;
  • 常见类型:#PCDATA表示内容时文本,不能是子标签。

示例代码:

<!ELEMENT web-app (servelt*, servlet-mapping*, welcome-file-list?)>

web-app包括3个标签,且必须顺序出现:

servlet子标签个数任意;
servlet-mapping子标签个数任意;
welcome-file-list子标签最多只能出现一次。

<!ELEMENT servlet (servlet-name, description?, (servlet-class|jsp-file))>

servlet包括3个子标签,且必须顺序出现:

servlet-name子标签必须有,且只能出现一次;
description子标签最多只能出现一次;
servlet-class和jsp-file二选一,且只能出现一次。

<!ELEMENT servlet-name (#PCDATA)>

servlet-name的标签体必须是文本。

<!ELEMENT welcome-file-list (welcome-file+)>

welcome-file-list至少有一个子标签welcome-file。

属性说明

属性的语法:

<!ATTLIST 元素名
	属性名 属性类型 约束
	属性名 属性类型 约束
	...
>

元素名:必须属性,即要约束的元素名;

属性名:必须属性,自定义名称;

属性类型:常见的有ID、CDATA、枚举等

  • ID:ID类型的属性用来标识元素的唯一性;
  • CDATA:文本类型;
  • 枚举:(a|b|c|...),多选一。

约束:

  • #REQUIRED:说明属性是必须的;
  • #IMPLIED:说明属性是可选的。

示例代码:

<!ATTLIST web-app
	version CDATA #IMPLIED
>

给web-app元素添加version属性,属性值必须是文本,且可选。

标签: none