XML的初始以及约束

来源:互联网 发布:windows jenkins shell 编辑:程序博客网 时间:2024/06/16 07:46

1.XML是一种能与服务器等进行数据交换的,同时也是一种能存储数据的可扩展标记语言。
他与语言,系统,平台的无关性给数据交互带来了很大的方便。仅仅在不同的语言中解析方式不一样而已。
2.XML的定义格式

<?xml version="1.0" encoding="utf-8"?>

版本使用1.0 xml有1.1版本但是在发布之后,就因为不向下兼容被淘汰了,
所以至今一直沿用1.0,后边加编码格式
内容定义:用一对自定义标签作为跟标签,内部由成对存在的标签组成,单标签需要是自闭型的

<persons>                <person id="p001">                    <name>张三</name>                </person>                <person id="p002">                    <name>李四</name>                </person>            </persons>

注意:
1.自闭型标签格式
2.在没有约束文件的情况下,标签可以随便定义,只要称对存在就好
3.XML区分大小写
3.属性(attribute)
同HTML一样,标签是可以有自己的属性的
格式:包含在开始标签中 属性=属性值,一个标签可以有多个属性,但是不能重复属性
4.约束
因为XML非常的不规范,标签自定义等等。所以为了开发的方便,便出现了约束,用来规范约束XML中的属性与标签或者值等等之间的关系。
4.1约束分类
DTD约束(Document Type Definition)
Schema约束
4.2DTD约束
格式:(使用步骤,因为约束文件可以说自己不用写,而是去用)
步骤1:创建bean-dtd.xml文档,并将“bean.dtd”拷贝相同目录下
步骤2:从DTD文档开始处,拷贝需要的“文档声明”
步骤3:完成xml内容编写
4.3DTD怎么定义?
格式:<!ELEMENT 元素名 元素描述>
?:可以出现,但只能出现一次
*:允许出现多次,也可以是0次
+:该对象至少出现一次,但可以是多次
,:元素按照指定的顺序出现
事例:

<!ELEMENT beans (bean*,import*) >  在beans标签中只可以有bean+import的标签,可以有0到无限个。<!ELEMENT bean (property*)>  //在bean标签中有0到无限个propertry标签<!ELEMENT property (#PCDATA)> //在property中不能有标签,但可以有字符串<!ATTLIST bean id ID #REQUIRED    className CDATA #REQUIRED    type CDATA #IMPLIED>//上边这个则是bean有参数三个,id与className必须存在,type则是可选

* 4.3使用代码事例(文档声明)*
1. 内部DTD,在XML文档内部嵌入DTD,只对当前XML有效。

<?xml version="1.0" encoding="utf-8" ?>    <!DOCTYPE beans [        ... //具体的语法    ]>    <beans>    </beans>

2.本地DTD,DTD文档在本地系统上,公司内部自己项目使用。

<?xml version="1.0" encoding="utf-8" ?>    <!DOCTYPE beans SYSTEM"bean.dtd">    <beans>    </beans>

3.外部DTD—公共DTD,DTD文档在网络上,一般都有框架提供。
需要有网络,当第一次使用之后,则会在本地缓存。

<?xml version="1.0" encoding="UTF-8"?>      <!-- DTD的名字-->    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN"       <!-- DTD的网络位置-->                "http://www.springframework.org/dtd/spring-beans-2.0.dtd"><beans>

4.4Schema
功能比DTD强大,但是至今DTD仍占有一定市场
命名空间:
默认的命名空间

xmlns="http://www.XXXXX.cn/bean" 

有很多人这里不理解,其实在我们下载到的Scehma文件中有一句:targetNamespace="http://www.XXXXX.cn/bean"
他们名字相同,意思就是用的时候用xmlns来引用,至于为什么用域名,那是因为域名全球唯一啊,不重复,只给你们公司用,不冲突。
显式的命名空间 :

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    使用标签时,必须加前缀    xsi:xxx    必须指定xsd文件的位置    //命名空间               约束文件的名字    xsi:schemaLocation="http://www.XXXXXX.cn/bean bean-schema.xsd">

4.5注意
在Scehma文件中有如下这些,其实不用太在意,我们下载框架就已经一块下载了,要不就是联网的的时候就一块下载下来了。所以这里就不细讲了。

xmlns="http://www.w3.org/2001/XMLSchema"         targetNamespace="http://www.XXXXX.cn/bean"        xmlns:tns="http://www.itheima.cn/bean"         elementFormDefault="qualified">

4.6Schema怎么约束的:

直接上代码:<schema xmlns="http://www.w3.org/2001/XMLSchema"         targetNamespace="http://www.XXXXX.cn/bean"        xmlns:tns="http://www.itheima.cn/bean"         elementFormDefault="qualified">    <!-- 声明根标签         1. <element> 声明元素(标签)        2. 每一个元素必须确定类型:            complexType 复杂类型            simpleType 简单类型,一般不用,大部分都是复杂类型        3. 需要继续明确子标签出差顺序            <choice> 选择, ()XML Schema 的 choice 元素仅允许包含在 <choice> 声明中的元素之一出现在包含元素中            <sequence> 顺序 ,            <all> 任意                minOccurs 最少出现次数                maxOccurs 最大出现次数,unbounded 不限制(没有边)        4.<attribute>用于给元素声明属性的            use 设置属性使用, optional可选、required必选    -->    <element name="beans">        <complexType>            <choice minOccurs="0" maxOccurs="unbounded">                <element name="bean">                    <complexType>                        <sequence minOccurs="0" maxOccurs="unbounded">                            <element name="property">                                <complexType>                                    <attribute name="name" use="optional"></attribute>                                    <attribute name="value" use="required"></attribute>                                </complexType>                            </element>                        </sequence>                        <attribute name="id" use="required"></attribute>                        <attribute name="className" use="required"></attribute>                    </complexType>                </element>                <element name="import">                    <complexType>                        <attribute name="resource" use="required"></attribute>                    </complexType>                </element>            </choice>        </complexType>    </element></schema>