xml约束

2018-09-22  本文已影响10人  咸鱼佬

什么是xml约束

在xml技术里,编写一个文档/文件来约束一个xml文档的书写规范、称为xml约束。因为没有约束 编写的xml文件格式就不统一

常用的xml约束技术

xsd 与 dtd 比较

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

最后

学习视频

上一篇 下一篇

猜你喜欢

热点阅读