ajax是什么?
如图:
XML是什么?
- 可扩展标记语言,标记数据,定义数据类型
- 允许用户对自己的标记语言进行定义的源语言
- xml详细介绍:(http://www.w3school.com.cn/xml/xml_intro.asp)
XML的两个约束:
- DTD约束(详细做了介绍)
- Schema约束(简单提一下)
什么是格式良好的XML
①:有且只有一个根元素,例如以下代码中: “persons” 就是根元素
②:区分大小写,例如以上代码中< persons >与< /persons >大小写必须一致
③:正确使用结束标签 就是: <></>
④:正确使用嵌套标签,例如以上代码中标签里面套标签
⑤:使用合法标签名,就是标签里面不能乱加特殊符号,但是可以用中文,一般最好用英文
⑥:定义它有效的属性
ps:自己定义写的文件没有约束,可以随便加
DTD约束是什么?:
DTD的定义:
- Document Type Definition 文档类型定义,用来约束xml文档
- 规定xml文档中元素的名称,子元素的名称及顺序,元素的属性等
- DTD详细介绍:http://www.w3school.com.cn/dtd/dtd_intro.asp
举例,为XML文件写一个DTD的约束,如下:
<?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 email (#PCDATA)>
<!ELEMENT br EMPTY>
]>
<persons>
<person>
<name>张小明</name>
<age>10</age>
<contact>
<phone>1234567</phone>
</contact>
<br/>
</person>
<person>
<name>张大明</name>
<age>35</age>
<contact>
<email>123@qq.com</email>
</contact>
</person>
</persons>
以上代码解析:
-
!DOCTYPE 是定义约束的入口 persons是根元素 !ELEMENT是元素的意思
-
元素定义的语法:<!ELEMENT element-name(type)>
-
元素的分类:①空元素:<!ELEMENT element-name EMPTY>
②文本元素:<!ELEMENT element-name(#PCDATA)>
③混合元素:<!ELEMENT element-name(e1,e2)> -
第一步:按顺序定义全部的元素(在小括号外) 第二步:在小括号内写每一个元素里面的小元素
例如age和name里面就是文本元素,而contact里面就有phone,email,再例如br就是EMPTY -
如果不写元素的限制会报错
-
元素的限制:①:,逗号是必须要写的 例如name age contact br ②:|或者 例如contact 这样两个根元素里面都有的东西就用或者
③:次数+ +表示1~n个 *表示0~n ?表示0或1 默认有且只有一个
例:写一个DTD限制servlet相关标签
<?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 email (#PCDATA)>
<!ELEMENT br EMPTY>
]>
<persons>
<person>
<name>李佳雪</name>
<age>12</age>
<contact>
<phone>256546</phone>
</contact>
<br/>
</person>
<person>
<name>李美女</name>
<age>33</age>
<contact>
<email>2830298182@qq.com</email>
</contact>
</person>
</persons>
如何对属性进行约束?
代码如下:
<?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 email (#PCDATA)>
<!ELEMENT br EMPTY>
<!ATTLIST person
pid ID #REQUIRED
sex (男 | 女) "男"
qq CDATA #IMPLIED
parent IDREF #IMPLIED
>
]>
<persons>
<person pid="p1" sex="男" qq="1111" 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>
以上代码解析
- #REQUIRED 的意思此属性(在根元素中)是必须要有的
- #IMPLIED的意思是此属性(在根元素中)是可有可无的
- pid 相当于数据库里面的主键是必须要有的
- 如果不定义性别会自动默认为男
- qq属于文本 文本都用 CDATA
- parent 相当于数据库里面的外键
- IDREF 有它的属性必须是指向别的person里面的id (意思是两个大persons里面的person的id必须一样 第一个指向第二个)
例:写config.xml的DTD约束
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE config[
<!ELEMENT config (action*)>
<!ELEMENT action (forward*)>
<!ELEMENT forword EMPTY>
<!ATTLIST action
path CDATA #REQUIRED
type CDATA #REQUIRED
>
<!ATTLIST forword
name CDATA #REQUIRED
path CDATA #REQUIRED
redirect (false | true) "false"
>
]>
<!--
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>
Schema约束是什么?
schema约束同为xml文件的约束模式语言之一, 最大的作用是为了验证xml文件的规范性的.
是为了解决dtd约束不够的问题, 相应的他的配置就变得比较复杂
schema本身就是xml语言, 后缀名为xsd, 对命名空间的支持非常好
schema的根元素就为schema
XML中的特殊符号:
- &(逻辑与) & amp;
- <(小于) &l t;
- 大于 & gt;
- "(双引号) & quot;
- '(单引号) & apos;
XML中有些符号是会报错的,所以要用以上几种转译字符
schema约束和dtd约束的区别:
- Schema符合XML语法结构。
- DOM、SAX等XML API很容易解析出XML Schema文档中的内容。
- Schema对名称空间支持得非常好。
- Schema比XML DTD支持更多的数据类型,并支持用户自定义新的数据类型。
- Schema定义约束的能力非常强大,可以对XML实例文档作出细致的语义限制。
- Schema不能像DTD一样定义实体,比DTD更复杂,但Xml Schema现在已是w3c组织的标准,它正逐步取代DTD