Xml 之DTD 约束

DTD 约束

DTD的简介:

Xml介绍:
xml(extensible markup language)扩展标记语言。用来描述数据。xml中标记是自定义,
它使用DTD或者schema来描述数据。
总结:xml用来组织,存储和发送信息的。
DTD:(文档类型定义)规定了xml数据包含了什么内容和内容的格式。
schema:替代DTD,描述xml文档结构。
rss:(really simple jkndiction) 是一种用来发布和捕获网络内容(标题,内容)的xml格式。
使用rss阅读器来阅读。
xml和html的区别:
xml 重点:描述和存放数据。
html 重点:如何把数据更好的现实在页面上。

1.什么是格式良好XML

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

如下显示:
下面展示一些 内联代码片

<?xml version="1.0" encoding="UTF-8"?>
<persons>
	<person pid="p1" sex="男" qq="aaa" parent="p2">
		<name>二麻子</name>
		<age>20</age>
		<contact>
			<phone>12238327</phone>
		</contact>
		<br/>
	</person>
	<person pid="p2">
		<name>二码子</name>
		<age>25</age>
		<contact>
			<email>123@qq.com</email>
		</contact>
	</person>
</persons>

2.DTD

关于DTD:
DTD是xml的一种约束,定义里面的属性使用;
和语法的出现

   <!ELEMENT element-name (type)>
   注:根标签也要定义!!!

我们这里还有常用的几种,响应的元素定义方法(元素的不同定义方法也不同):

   <!ELEMENT element-name EMPTY>//空元素
   <!ELEMENT element-name (#PCDATA)>//文本元素
   <!ELEMENT element-name (e1,e2)>//混合元素
  

//注意: 要从根标签开始定义,大小写注意区分,

元素其中的限制

*例如:
,
|
次数: +, 1~n
, 0~n
?, 0或1
没有

下面展示一些 内联代码片

<!DOCTYPE persons [
     <!ELEMENT persons (person*)>//*代表指定字符重复0次或n次 
     <!ELEMENT person (name,age,contact,br?)>//定义元素的中可用name,agecontact,br(混合元素)
      <!ELEMENT name (#PCDATA)>
       <!ELEMENT age (#PCDATA)>
        <!ELEMENT contact (phone|email)>// | 表示或者  ,表示并且
         <!ELEMENT phone (#PCDATA)>//(#PCDATA)文本元素
          <!ELEMENT br EMPTY>//空元素
           <!ELEMENT email (#PCDATA)>
]>

** 属性定义的语法 **

//其中ATTLIST是attributelist的缩写,也就是属性集合

  <!ATTLIST element-name 
     att_name type
   >
   attribute

如下:

<?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)>
         <!ELEMENT phone (#PCDATA)>
          <!ELEMENT br EMPTY>
           <!ELEMENT email (#PCDATA)>
              <!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>

关于 XML中的特殊符号

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

Config案例:

下面展示一些 内联代码片

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE config [
<!ATTLIST action 
		path CDATA #REQUIRED 
		type CDATA #REQUIRED
>
<!ATTLIST forward
		name CDATA #REQUIRED
		path CDATA #REQUIRED
		redirect (true|false) 'true'
>

]>
	<!--
		config标签:可以包含0~N个action标签
	-->
<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>



什么是 XML Schema?

XML Schema 的作用是定义 XML 文档的合法构建模块,类似 DTD。

XML Schema:
定义可出现在文档中的元素
定义可出现在文档中的属性
定义哪个元素是子元素
定义子元素的次序
定义子元素的数目
定义元素是否为空,或者是否可包含文本
定义元素和属性的数据类型
定义元素和属性的默认值以及固定值
XML Schema 是 DTD 的继任者
我们认为 XML Schema 很快会在大部分网络应用程序中取代 DTD。

Schema定义简易元素:

最常用的类型是:
string
decimal
integer
boolean
date
time
注:开头不要大写

XML Schema
它定义了上面那个 XML 文档( “note.xml” )的元素/:
在本例中,http://www.w3.org/2001/XMLSchema 命名空间中 schema 组件 (element name, type) 是未限制的,而 //www.w3cschool.cn/w3cschoolschema (mystring) 是通过 wsc 前缀限制的:

<?xml version="1.0" encoding="UTF-8"?>
 <not:schema xmlns:not="http://www.w3.org/2001/XMLSchema"
 targetNamespace="http://www.w3cschools.com"
 xmlns="http://www.w3cschools.com"
 elementFormDefault="qualified">
<!-- not:schema  整个XML Schema的根元素  swx是对其规定的前缀,如果不写的话默认没有 来自:"http://www.w3.org/2001/XMLSchema"-->
<!-- targetNamespace 显示被此 schema 定义的元素 来自命名空间: "http://www.example.org/SchemaDemo"-->
<!-- xmlns 指出默认的命名空间是 "http://www.example.org/SchemaDemo"-->
<!-- elementFormDefault 指出任何 XML 实例文档所使用的且在此 schema 中声明过的元素必须被命名空间限定 -->

 <not:element name="note">
   <not:complexType>
     <not:sequence>
       <not:element name="to" type="not:string"/>
       <not:element name="from" type="not:string"/>
       <not:element name="heading" type="not:string"/>
       <not:element name="body" type="not:string"/>
     </not:sequence>
   </not:complexType>
 </not:element>

 </not:schema> 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值