您的位置:首页 > 编程语言 > Java开发

XML的初始以及约束

2017-09-12 19:33 155 查看
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 <
d0b1
span class="hljs-attribute">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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息