##XML声明

1
<?xml version="1.0" encoding="UTF-8" ?>  <!-- 注释:version 版本号  encoding 编码 -->

##特殊字符处理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
1.实体引用
&lt; < 小于
&gt; > 大于
&amp; &. 和号
&apos; ' 单引号
&quot; " 双引号
2.CDTA标签
<![CDATA[" xml代码 "]]>
eg:<fff>
<![CDATA[
<a href="https://www.baidu.com">百度</a>
]]>
</fff>

DTD语义约束 XML `

1
2
3
4
5
6
7
8
9
10
11
12
13
<!ELEMENT>  <!-- 定义xml文档中允许出现的节点以及数量 -->
eg:<!ELEMENT hr (employee)> <!--定义hr节点只允许出现一个emplyee子节点-->
<!ELEMENT hr(employee+)> <!--定义hr节点最少出现一个emplyee子节点-->
<!ELEMENT hr(employee*)> <!--定义hr节点0个或多个emplyee子节点-->
<!ELEMENT hr (employee?)> <!--定义hr节点要么一个要么多个emplyee子节点-->
<!ELEMENT hr (name,age,address)> <!--定义hr下name,age,address子节点-->
<!ELEMENT name(#PCDATA)> <!-- 当前节点是纯文本格式 -->

<!DOCTYPE 根节点 SYSTEM "dtd文件路径"> <!--XML种引入DTD文件-->
eg:<!DOCTYPE hr SYSTEM "hr.dtd">

<!ATTLIST 节点 属性 CDATA "描述">
eg:<!ELEMENT employee no CDATA ""> <!--employee节点no属性-->

##DTD例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hr SYSTEM "hr.dtd">
<hr>
<employee no="001">
<name>joy</name>
<age>20</age>
</address>测试地址1</address>
<other>
<realyName>张三</realyName>
</other>
</employee>
<employee no="002">
<name>lucyy</name>
<age>40</age>
</address>测试地址2</address>
<other>
<realyName>李四</realyName>
</other>
</employee>
</hr>

<!--dtd文件 hr.dtd-->
<!ELEMENT hr (employee+)>
<!ELEMENT employee (name,age,address,other)>
<!ATTLIST employee no CDATA "">
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT address (#PCDATA)>
<!ELEMENT other (realyName)>
<!ELEMENT realyName (#PCDATA)>

##Schema语义约束 XML

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?xml version="1.0" encoding="UTF-8"?>
<hr xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="hr.xsd">
<employee no="001">
<name>joy</name>
<age>20</age>
</address>测试地址1</address>
<other>
<realyName>张三</realyName>
</other>
</employee>
<employee no="002">
<name>lucyy</name>
<age>40</age>
</address>测试地址2</address>
<other>
<realyName>李四</realyName>
</other>
</employee>
</hr>

<!-- hr.xsd文件 -->
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema">
<element name="hr">
<complexType>
<sequence>
<element name="employee" minOccurs="1" maxOccurs="999">
<complexType>
<sequence>
<element name="name" type="string"></element>
<element name="age" type="integer"></element>
<element name="age"> <!--age 进行范围限定的写法-->
<simpleType>
<restriction base="integer">
<minInclusive value="18"></minInclusive>
<maxInclusive value="60"></maxInclusive>
</restriction>
</simpleType>
</element>
<element name="address" type="string">
<complexType>
<sequence>
<element name="other">
<element name="realyName" type="string"></element>
</element>
</sequence>
</complexType>
</element>
</sequence>
<attribute name="no" type="string" use="required"></attribute>
</complexType>
</element>
</sequence>
</complexType>
</element>
</schema>