xml约束
1)类是对象的约束
2)DTD是XML文件的约束
3)浏览器对XML和DTD进行语法的检测
4)浏览器不会检测XML是否符合DTD规则
5)正确的XML和有效的XML文件
正确的XML文件是指语法正确,而有效的XML文件是指语法和规则都正确
6)XML中书写DTD有二种方式:
a)DTD和XML分离
b)XML中嵌入DTD
6)XML引用DTD有二种方式:
a)SYSTEM:个人或组织,小范围内使用
b)PUBLIC:大范围内使用,例如:struts框架。。。
7)EMPTY和ANY,项目中尽量使用EMPTY,少用ANY
8)在DTD中,必须将所有的标签全部都声明完才行
9)在DTD中,定义元素时,可以使用如下符号:
a)+:有且只能出现1次或N次
b)*:有且只能出现0次或N次
c)?:有且只能出现0次或1次
d)无:有且只能出现1次
注意:以上符号用在()里面
10)DTD属性的设置值情况有四种:
a)#REQURIED:该属性必须出现
b)#IMPLIED:该属性可有可无
c)#FIXED "固定值":该属性可有可无,如果有的话,必须是"固定值"
d)"默认值":该属性可有可无,如果没有的话,用默认值补充,如果有的话,用新值替代旧值
11)当页面出现多个相同的字符串,此时可以使用引用实体来解决,在DTD中定义,在XML中使用
12)当定义DTD时,出个相同的子元素,此时可以使用参数实体来解决,在DTD中定义,在DTD中使用,
使用%标识,通过%参数实体名;来引用
class.dtd `<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT root (student+)>
<!ELEMENT student (name,age)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
`
arg_entity.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root SYSTEM "class.dtd">
<root>
<student>
<name>张三</name>
<age>30</age>
</student>
<student>
<name>李四</name>
<age>31</age>
</student>
</root>
validte.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>自定义XML的检查器(语法+约束)</title> </head> <body> <script type="text/javascript"> //创建IE内置解析器 var xmldoc = new ActiveXObject("Microsoft.XMLDOM"); //开启xml校验 xmldoc.validateOnParse="true"; //加载需要检查的XML文件 xmldoc.load("arg_entity.xml"); //正确 if(xmldoc.parseError.reason.length==0){ window.alert("有效的XML文件(语法正确+DTD约束"); //出错 }else{ window.alert(xmldoc.parseError.reason); } </script> </body> </html>
写到一个文件中的拘束
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE root [ <!ELEMENT root (student)> <!ELEMENT student (name,age,alias)> <!ELEMENT name (#PCDATA)> <!ELEMENT age (real|virtual)> <!ELEMENT alias ANY> <!ELEMENT real (#PCDATA)> <!ELEMENT virtual (#PCDATA)> ]> <root> <student> <name>jack</name> <age> <virtual>11</virtual> </age> <alias/> </student> </root>