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中的特殊符号
&(逻辑与) &
<(小于) <
>(大于) >
"(双引号) "
'(单引号) '
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>