XML文档的规范与约束

Posted fangtingfei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XML文档的规范与约束相关的知识,希望对你有一定的参考价值。

## XML:
 1. 概念:Extensible Markup Language 可扩展标记语言
  * 可扩展:标签都是自定义的。 <user>  <student>
  * 功能
   * 存储数据
    1. 配置文件
    2. 在网络中传输
  * xml与html的区别
   1. xml标签都是自定义的,html标签是预定义。
   2. xml的语法严格,html语法松散
   3. xml是存储数据的,html是展示数据
  * w3c:万维网联盟
 2. 语法:
  * 基本语法:
   1. xml文档的后缀名 .xml
   2. xml第一行必须定义为文档声明
   3. xml文档中有且仅有一个根标签
   4. 属性值必须使用引号(单双都可)引起来
   5. 标签必须正确关闭
   6. xml标签名称区分大小写
* 组成部分:
   1. 文档声明
    1. 格式:<?xml 属性列表 ?>
    2. 属性列表:
     * version:版本号,必须的属性
     * encoding:编码方式。告知解析引擎当前文档使用的字符集,默认值:ISO-8859-1
     * standalone:是否独立
      * 取值:
       * yes:不依赖其他文件
       * no:依赖其他文件
   2. 指令(了解):结合css的
    * <?xml-stylesheet type="text/css" href="a.css" ?>
   3. 标签:标签名称自定义的
    * 规则:
     * 名称可以包含字母、数字以及其他的字符
     * 名称不能以数字或者标点符号开始
     * 名称不能以字母 xml(或者 XML、Xml 等等)开始
     * 名称不能包含空格
   4. 属性
    id属性值唯一
   5. 文本
    * CDATA区:在该区域中的数据会被原样展示
     * 格式:  <![CDATA[ 数据 ]]>
 
一个XML小例子:
 1 <?xml version="1.0" encoding="utf-8" standalone=‘no‘ ?>
 2 <!--<?xml-stylesheet type="text/css" href="a.css" ?>-->
 3 
 4 <users>
 5 
 6     <user id=‘1‘>
 7         <name>张三</name>
 8         <age>23</age>
 9         <gender>male</gender>
10         <br/>
11     </user>
12 
13     <user id=‘2‘>
14         <name>lisi</name>
15         <age>24</age>
16         <gender>female</gender>
17 
18         <code>
19                <!-- if(a &lt; b &amp;&amp; a &gt; c)-->
20             <![CDATA[
21                 if(a < b && a > c) 
22             ]]]>
23 
24 
25         </code>
26 
27     </user>
28 
29 </users>

 

* 约束
约束与XML文件的作用与关系:
 
 
技术图片
   概念:规定xml文档的书写规则
   * 作为框架的使用者(程序员):
    1. 能够在xml中引入约束文档
    2. 能够简单的读懂约束文档
   
   * 分类:
    1. DTD:一种简单的约束技术
    2. Schema:一种复杂的约束技术

   * DTD:
    * 引入dtd文档到xml文档中
     * 内部dtd:将约束规则定义在xml文档中
     * 外部dtd:将约束的规则定义在外部的dtd文件中
      * 本地:<!DOCTYPE 根标签名 SYSTEM "dtd文件的位置">
      * 网络:<!DOCTYPE 根标签名 PUBLIC "dtd文件名字" "dtd文件的位置URL">
 
 
  DTD的引入和使用举例:(了解)
  dtd文件的创建:student.dtd
1 <!ELEMENT students (student+) >
2 <!ELEMENT student (name,age,sex)>
3 <!ELEMENT name (#PCDATA)>
4 <!ELEMENT age (#PCDATA)>
5 <!ELEMENT sex (#PCDATA)>
6 <!ATTLIST student number ID #REQUIRED>

  dtd文件在XML文件中的引入和使用:student.xml

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE students SYSTEM "student.dtd">
 3 
 4 <!--<!DOCTYPE students [
 5 
 6         <!ELEMENT students (student+) >
 7         <!ELEMENT student (name,age,sex)>
 8         <!ELEMENT name (#PCDATA)>
 9         <!ELEMENT age (#PCDATA)>
10         <!ELEMENT sex (#PCDATA)>
11         <!ATTLIST student number ID #REQUIRED>
12 
13 
14         ]>-->
15 <students>
16     
17     <student number="s001">
18         <name>zhangsan</name>
19         <age>abc</age>
20         <sex>hehe</sex>
21     </student>
22 
23     <student number="s002">
24         <name>lisi</name>
25         <age>24</age>
26         <sex>female</sex>
27     </student>
28     
29 </students>

 


   * Schema:
    * 引入:
     1.填写xml文档的根元素
     2.引入xsi前缀.  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     3.引入xsd文件命名空间.  xsi:schemaLocation="http://www.itcast.cn/xml  student.xsd"
     4.为每一个xsd约束声明一个前缀,作为标识  xmlns="http://www.itcast.cn/xml"
    <students   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns="http://www.itcast.cn/xml"
     xsi:schemaLocation="http://www.itcast.cn/xml  student.xsd">
 

   Schema的引用和使用举例:(了解)

  xsd文件的创建:

student.xsd

 

 1 <?xml version="1.0"?>
 2 <xsd:schema xmlns="http://www.itcast.cn/xml"
 3         xmlns:xsd="http://www.w3.org/2001/XMLSchema"
 4         targetNamespace="http://www.itcast.cn/xml" elementFormDefault="qualified">
 5     <xsd:element name="students" type="studentsType"/>
 6     <xsd:complexType name="studentsType">
 7         <xsd:sequence>
 8             <xsd:element name="student" type="studentType" minOccurs="0" maxOccurs="unbounded"/>
 9         </xsd:sequence>
10     </xsd:complexType>
11     <xsd:complexType name="studentType">
12         <xsd:sequence>
13             <xsd:element name="name" type="xsd:string"/>
14             <xsd:element name="age" type="ageType" />
15             <xsd:element name="sex" type="sexType" />
16         </xsd:sequence>
17         <xsd:attribute name="number" type="numberType" use="required"/>
18     </xsd:complexType>
19     <xsd:simpleType name="sexType">
20         <xsd:restriction base="xsd:string">
21             <xsd:enumeration value="male"/>
22             <xsd:enumeration value="female"/>
23         </xsd:restriction>
24     </xsd:simpleType>
25     <xsd:simpleType name="ageType">
26         <xsd:restriction base="xsd:integer">
27             <xsd:minInclusive value="0"/>
28             <xsd:maxInclusive value="256"/>
29         </xsd:restriction>
30     </xsd:simpleType>
31     <xsd:simpleType name="numberType">
32         <xsd:restriction base="xsd:string">
33             <xsd:pattern value="heima_\\d4"/>
34         </xsd:restriction>
35     </xsd:simpleType>
36 </xsd:schema> 

  xsd约束文件在XML文件中的引用和使用:

student.xml

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!-- 
 3     1.填写xml文档的根元素
 4     2.引入xsi前缀.  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 5     3.引入xsd文件命名空间.  xsi:schemaLocation="http://www.itcast.cn/xml  student.xsd"
 6     4.为每一个xsd约束声明一个前缀,作为标识  xmlns="http://www.itcast.cn/xml" 
 7     
 8     
 9  -->
10 <students   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
11             xmlns="http://www.itcast.cn/xml"
12             xsi:schemaLocation="http://www.itcast.cn/xml  student.xsd"
13 >
14     <student number="heima_0001">
15         <name>tom</name>
16         <age>18</age>
17         <sex>male</sex>
18     </student>
19 
20 </students>

 

 

 

以上是关于XML文档的规范与约束的主要内容,如果未能解决你的问题,请参考以下文章

04_XML_03_XMLDTD约束与校验

XML——XML文件约束之DTD详解

dtd与xsd去区别

XML规范化(DTD)

DTD与XML Schema

XML约束