xml文档书写需要遵循的规则(dtd和schema)
1.DTD约束
1.1 概念:
document type definition文档类型定义。
dtd是关于一套标记的语法规则。它定义了可以在文档中使用的元素,属性和实体以及这些之间的关系。
1.2 dtd的使用:
xml文档内部使用,也可以在外部使用(规则dtd文件是一个单独的文件)
1.3dtd内部使用:
在xml文档的顶部进行dtd的规则声明:
<!DOCTYPE 根元素[子元素]>
<!ELEMENT 元素名 (元素类型)>
<!ATTLIST 元素名 属性名 属性类型 属性的值的约束
示例:<!ATTLIST name ss CDATA #REQUIRED> 给name元素添加ss属性,而且必须要有该属性。
备注: 在属性值中如果有实体引用出现必须转义:(xml解析器要解析)
实体引用: < < > > & & " " 空格
额外: 如果不想使用xml解析器解析内容直接原样输出:
<!CDATA[[不需要xml解析器解析的内容]]>
总结:
#PCDATA:主要用于规定标签的文本内容是字符类型。修饰的内容也要使用转义。
如果不想转义,使用 <!CDATA[[不需要xml解析器解析的内容]]> xml解析器 不解析了,直接原样输出,
CDATA:主要是修改属性的值为字符型。xml解析器会解析,如果用到实体引用要转义。
1.4 内部dtd约束示例:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE student[
<!ELEMENT student (id,name,age)>
<!ELEMENT id (#PCDATA)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
]>
<student>
<id>1001</id>
<name>sky</name>
<age>18</age>
</student>
1.5外部dtd约束本地文件: 重点
外部约束文件: student.dtd
<!ELEMENT student (id,name,age)>
<!ELEMENT id (#PCDATA)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
xml引入本地dtd约束文件:
<?xml version="1.0" encoding="UTF-8"?>
<!-- 引用本地的外部dtd约束文件,struts2 ,mybatis数据库 (配置文件xml dtd) -->
<!DOCTYPE student SYSTEM "student.dtd">
<student>
<id>1001</id>
<name>sky</name>
<age>18</age>
</student>
1.6 外部dtd约束网络文件: 重点
格式:
<!DOCTYPE 根元素名称 PUBLIC
"名称空间"
"网络dtd地址文件一般是http://开头">
<?xml version="1.0" encoding="UTF-8"?>
<!-- 引入外部的网络dtd约束文件
如果是框架的,一般框架告诉开发者如何引用 ,根据约束提示来书写xml文件
-->
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
</struts>
备注:如果加入以上约束,该xml文件不提示(原因是读取不到网络指定的约束文件),
用户自己配置本地的约束文件就可以进行提示,
步骤: 1.Window-preferences- XML -XML Catalog- user Specified Entries - Add -添加本地文件dtd (URI 本地dtd对应的网络地址)
2.schema约束
Schema是dtd约束的替代者。
2.1 Schema的规则地址:
http://www.w3school.com.cn/schema/schema_elements_ref.asp
Schema约束文件的引入:
2.2 引入默认的命名空间万维网组织:
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
备注: 切换xml的浏览模式到Design - 选中标签元素-右键-Edit NameSpaces -
弹窗 Add- 选择xsi默认确认即可
2.3 添加自己的约束文件(自己约束文件的命名空间和xsd位置): 重点
备注: 切换xml的浏览模式到Design - 选中标签元素-右键-Edit NameSpaces -
弹窗 Add- Specified New NameSpace - Browse – 弹窗-
Select XML Catalog Entry - 查找自己的命名空间的内容–
具体后续看图
练习操作 web.xml
备注: xml约束主要是定义规则,根据规则提示写xml配置文件。
schema配置约束重点的重点,框架中很多配置文件都是使用xml约束。
json 和xml 进行数据存储和传递配置
web程序中 json主要用于数据存储和传输 json结构简单(json对象和数组)
xml主要用于配置 (结构复杂,学习和解析很麻烦)