xml:可扩展标记语言;
相信提到xml的时候很多朋友会想到HTML,HTML为超文本标记语言,前者用来传输数据,后者则是显示数据
xml标签没有被预定义,需要自定义标签
xml文件的第一行代码是xml文件的说明:
xml的规则:
有且只有一个根元素;
XML标签大小写严格区分;
正确使用结束标签;
正确嵌套标签;
使用合法的标签名;
定义有效的属性,且属性一定要放在引号中;
xml的约束:
DTD:文档类型约束(Document Type Definition)
用来约束XML文档,保证XML文件正确性和数据的有效性
Schema:xsd-XML Schema Document
是一种用来代替DTD约束的新的方式,功能上比DTD更全面
在使用约束之前,先得声明约束:
示例:
<?xml version="1.0" encoding="UTF-8"?><!-- xml文件的说明 -->
<!DOCTYPE web-app [
<!ELEMENT web-app (servlet*,filter*)>
<!ELEMENT servlet (servlet-name,servlet-class)>
<!ELEMENT servlet-name (#PCDATA)>
<!ELEMENT servlet-class (#PCDATA)>
<!ELEMENT filter (filter-name,filter-class)>
<!ELEMENT filter-name (#PCDATA)>
<!ELEMENT filter-class (#PCDATA)>
] >
<web-app>
<servlet>
<servlet-name>Index</servlet-name>
<servlet-class>com.servlet.IndexServlet</servlet-class>
</servlet>
<filter>
<filter-name>Index</filter-name>
<filter-class>com.filter.MyFilter</filter-class>
</filter>
</web-app>
以上DTD解释如下:
<?xml version="1.0" encoding="UTF-8"?> xml的说明
<!DOCTYPE web-app [ 约束声明
<!ELEMENT web-app (servlet*,filter*)> 根标签web-app下只能有servlet,filter标签
<!ELEMENT servlet (servlet-name,servlet-class)> servlet标签下只能有servlet-name,servlet-class标签
<!ELEMENT servlet-name(#PCDATA)> 定义servlet-name标签的类型
<!ELEMENT servlet-class (#PCDATA)> 定义在servlet-class标签的类型
<!ELEMENT filter (filter-name,filter-class)> filter标签下只能有filter-name,filter-class标签
<!ELEMENT filter-name(#PCDATA)> 定义filter-name标签的类型
<!ELEMENT filter-class (#PCDATA)> 定义在filter-class标签的类型
属性:
属性可提供有关元素的额外信息
属性总是被置于某元素的开始标签中。属性总是以名称/值的形式成对出现的
示例:
<img src="a.jpg" />
img 是标签名,src是属性名,a.jpg是属性值
PCDATA:
PCDATA 的意思是被解析的字符数据(parsed character data)。
PCDATA 是会被解析器解析的文本。这些文本将被解析器检查实体以及标记
被解析的字符数据不应当包含任何 &、< 或者 > 字符;需要使用 &、< 以及 > 实体来分别替换它们。
CDATA:
CDATA 是不会被解析器解析的文本。在这些文本中的标签不会被当作标记来对待,其中的实体也不会被展开。