什么是xml约束
在xml技术里,编写一个文档/文件来约束一个xml文档的书写规范、称为xml约束。因为没有约束 编写的xml文件格式就不统一
常用的xml约束技术
- xml dtd document type definition 文档类型定义
- xml xsd xml schema definition 维基
xsd
xml schema 本身也是一种xml 所以它也要引用schema 文件来规范
<schema
xmlns="http://www.w3.org/2001/XMLSchema">
</schema>
xmlnsd 的全称是 xml namespace 命名空间
那么这么多xsd 我们如何区分它们呢(当然不能仅仅通过文件名),那么就可以为每个xsd文件设置一个标识,这个标识就是 targetNameSpace
<schema
xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://copyLi.com">
</shema>
而targetNameSpace 这个属性的定义来源就是 xmlns 中定义的
而targetNameSpace 这个属性的值是一个url,但是它可能根本不是一个存在的url
而schema 标签中还有一个重要的属性,那就是elementFormDefault 这个属性的值只有两个,一个是qualified 和 unqualified。代表的意思分别是 应用这个xsd 的其他xml文件 是否遵守xsd文件定义的所有标签元素、qualified就是遵守 而unqualified就是只遵守根元素、一般都是qualified 默认值是unqualified
<schema
xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://copyLi.com"
elementFormDefault="qualified">
<!--根元素-->
<element name="书架">
<!--代表是一个复杂的类型-->
<complexType>
<!--maxOccurs 代表了最大的数目、unbounded 代表可以放置无限多-->
<sequence maxOccurs="unbounded">
<!--第二个元素-->
<element name="书">
<complexType>
<sequence>
<element name="书名" type="string"/>
<element name="作者" type="string"/>
<element name="售价" type="string"/>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
</element>
</schema>
分析spring 配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>
这个xml文件引用了xsd 一个是 spring 自己的 一个是w3c 的,为啥要引用w3c的呢?因为要使用到这个xsd 中的 schemaLocation 属性 这个属性表明了这个xsd 文件的位置
因为在同一个xml中引用到了两个xsd 文件 这个时候如何区分呢,那就是通过别名了
xmlns:xsi-----> xsi 这个就是这个xsd 的别名 所以使用schemaLocation属性时就加上了xsi
而schemaLocation 这个值得设置就是
xsd的targeNameSpa xsd的文件路径
image
而引用xsd 文件 就是通过属性 xmlns
网友评论