XML:DTD约束

它又来了,就是它

依旧来到内容环节

一、XML

1、什么是XML;区别

①、XML:可扩展标记语言;

②、HTML:超文本标记语言;

2、XML文件的作用

①、保存数据  ;数据交互

②、做配置

3、XML的格式

①、有且只有一个根节点

②、由开始标签和结束标签组成;空标签

③、XML标签区分大小写

④、正确嵌套标签;

⑤、使用合法的标签名,不能使用特殊符号;

⑥、定义有效的属性;
   看图

二、DTD

什么是DTD?

文档类型定义 (document type definition) (约束);

1、 在XML中加入DTD申明

       ①、内部申明:<! DOCTYPE root[]>
       ②、外部申明:<!DOCTYPE 文档根节点 SYSTEM(PUBLIC) “DTD文件名”>
       

2、 元素定义语法(DTD对元素的限制)

        ①、基本语法:<! ELEMENT 元素名称 元素类型 >

        ②、元素分类:
                 EMPTY     空元素      <br/>
                 (#PCDATA)  文本元素   
                 (e1,e2)    混合元素

         ③、 元素限制:
                 ,(顺序)、
                 |(或,多选一)、
                ?(0或1次)、
                 *(0次或多次)、
                 +(1次或多次)

   3、 属性定义语法(DTD对属性的限制)

    基本语法:<!ATTLIST 元素名称 属性名称 属性类型 设置说明>
  
    属性类型:ID/CDATA/ENUM (男|女) "男" IDREF

    设置说明:#REQUIRED(必须)/#IMPLIED(可选)

4、特殊符号转义

 &(逻辑与)      -->  &amp;
    >(大于)     -->  &gt;
    <(小于)     -->  &lt;
    ‘(单引号)     -->  &apos;
    “(双引号)     -->  &quot;
  

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE persons [
<!-- 添加元素定义 -->
<!ELEMENT persons (person+)>

<!ELEMENT person (name,age,contact,br?)>

<!ELEMENT name (#PCDATA)> <!-- 文本元素-->
<!ELEMENT age (#PCDATA)>  <!-- 文本元素-->
<!ELEMENT contact (phone?,email?)> <!-- 混合元素-->

<!-- 属性定义 -->
<!ATTLIST person
pid ID #REQUIRED
sex (男|女) '男'
qq CDATA #IMPLIED 
parent IDREF #IMPLIED
>
]>
<persons>
	<person pid="p1" sex="男" qq="aaa" parent="p2">
		<name>张小明</name>
		<age>10</age>
		<contact>
			<phone>1234567</phone>
		</contact>
		<br/>
	</person>
	<person pid="p2">
		<name>张大明</name>
		<age>35</age>
		<contact>
			<email>123@qq.com</email>
		</contact>
	</person>
</persons>


四、问题:写一个DTD限制servlet相关标签

<?xml version="1.0" encoding="UTF-8"?>
<!-- 引入DTD约束 -->
<!DOCTYPE web-app [
<!-- 添加元素定义 -->
<!ELEMENT web-app (servlet*,servlet-mapping*)>

<!ELEMENT servlet (servlet-name,servlet-class)> <!-- 混合元素-->
<!ELEMENT servlet-mapping (servlet-name,url-pattern+)> <!-- 混合元素-->

<!ELEMENT servlet-name (#PCDATA)> <!-- 文本元素-->
<!ELEMENT servlet-class (#PCDATA)> <!-- 文本元素-->
<!ELEMENT url-pattern (#PCDATA)> <!-- 文本元素-->

]>



<web-app>

	<servlet>
		<servlet-name>jrebelServlet</servlet-name>
		<servlet-class>com.zking.xml.JrebelServlet</servlet-class>
	</servlet>
	<servlet>
		<servlet-name>jrebelServlet2</servlet-name>
		<servlet-class>com.zking.xml.JrebelServlet2</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>jrebelServlet</servlet-name>
		<url-pattern>/jrebelServlet</url-pattern>
	</servlet-mapping>
	
	<servlet-mapping>
		<servlet-name>jrebelServlet2</servlet-name>
		<url-pattern>/jrebelServlet2</url-pattern>
	</servlet-mapping>
	
</web-app>

五、问题:写一个DTD限制config.xml

<?xml version="1.0" encoding="UTF-8"?>
	<!--
		config标签:可以包含0~N个action标签
	-->
	<!-- 添加元素定义 -->
<!DOCTYPE config [

<!ELEMENT config (action*)>
<!ELEMENT action (forward*)>
<!-- 属性定义 -->
<!ATTLIST action
path CDATA #REQUIRED 
type CDATA #REQUIRED
>
<!-- 属性定义 -->
<!ATTLIST forward
name CDATA #REQUIRED
path CDATA #REQUIRED
redirect (false|true) 'false'
>

]>
	
	
	
	
<config>
	<!--
		action标签:可以饱含0~N个forward标签 path:以/开头的字符串,并且值必须唯一 非空 ,子控制器对应的路径
		type:字符串,非空,子控制器的完整类名
	-->
	<action path="/registerAction" type="test.action.RegisterAction">
		<forward name="success" path="/index.jsp" redirect="true" />
		<forward name="failed" path="/register.jsp" redirect="false" />
	</action>
	<action path="/loginAction" type="test.action.LoginAction">
		<forward name="a" path="/index.jsp" redirect="false" />
		<forward name="b" path="/welcome.jsp" redirect="true" />
	</action>
</config>

结束了哦~~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
假设我们有一个下面这样的XML文件: ```xml <?xml version="1.0" encoding="UTF-8"?> <bookstore> <book category="Children"> <title lang="en">Harry Potter</title> <author>J.K. Rowling</author> <year>2005</year> <price>29.99</price> </book> <book category="Web"> <title lang="en">Learning XML</title> <author>Erik T. Ray</author> <year>2003</year> <price>39.95</price> </book> </bookstore> ``` 我们可以为这个XML文件添加一个DTD约束,让它符合特定的规范。下面是一个简单的例子: ```xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE bookstore [ <!ELEMENT bookstore (book+)> <!ELEMENT book (title, author, year, price)> <!ATTLIST book category CDATA #REQUIRED> <!ELEMENT title (#PCDATA)> <!ELEMENT author (#PCDATA)> <!ELEMENT year (#PCDATA)> <!ELEMENT price (#PCDATA)> ]> <bookstore> <book category="Children"> <title lang="en">Harry Potter</title> <author>J.K. Rowling</author> <year>2005</year> <price>29.99</price> </book> <book category="Web"> <title lang="en">Learning XML</title> <author>Erik T. Ray</author> <year>2003</year> <price>39.95</price> </book> </bookstore> ``` 在上面的例子中,我们使用了`<!DOCTYPE>`元素来定义DTD约束。`<!ELEMENT>`元素用来定义XML元素的结构,`<!ATTLIST>`元素用来定义XML元素的属性,`(#PCDATA)`表示元素内容为文本类型。注意,DTD约束必须位于XML文件的第一行,紧随XML声明之后。 这是一个非常简单的例子,实际上,DTD约束可以包含更多的定义,比如实体、命名空间等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值