<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-> 引入Schema约束
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
   <welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
xmlns="http://java.sun.com/xml/ns/javaee" 
  代表没有命名空间的引用,底下标签前面没有命名空间前缀的都是来自xmlns的
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 这个告诉编译器文档遵从W3C标准规则。
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
中间空格,xsi:schemaLocation="{url} {location}" 用于关联自己指定的名字的命名空间 和 文件的位置
它的声明指出了  命名空间关联的  定义的空间 和文件位置,然后可以使用了。像上面的,这样自己定义的名称xmlns就可以使用了,但是它是没有命名空间引用的。所以底下标签前面没有命名空间前缀的都是来自xmlns的

命名空间的概念:类似java中的包。命名空间即元素的命名的一个区间。该区间可以指定名字也可以使用默认的名字。

那么如果要使用Schema编写代码来约束XML文件,那么Schema中必须预先的定义好约束的标签名。但是这些标签又不同于普通的标签因此需要指定命名的空间名。

xmlns:xs="http://www.w3.org/2001/XMLSchema"

该元素是一个属性,该属性必须出现在约束文件的根元素中。

引入约束文件(重点)

  1. 在约束文件的根元素上添加命名空间属性指定所有的约束元素的来自区域
  2. 在约束文件的根元素上添加elementFormDefault=” qualified”指定全局约束
  3. 在约束文件的根元素上添加targetNamespace="URL地址"来指定定义好的约束的名字
  4. 在被约束文件的根元素中使用xmlns:命名空间名来引入指定的约束 <书架 xmlns:jnb="http://www.jnb.com">
  5. 在被约束文件中将所有的元素以4中起的命名空间名作为元素的前缀
  6. 在被约束文件的根元素上使用xsi:schemaLocation="http://www.jnb.com mybooks.xsd"指定约束的具体文件路径
  7. 在被约束文件的根元素使用xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"来指定6中的schemaLocation来自的区域
例子:
xmlns:xs="http://www.w3.org/2001/XMLSchema" 指定了默认的  酷似 java中的默认数据类型,不用特别显示引用指出它来自哪
targetNamespace="http://www.jnb.com" 自己定义了一个目标命名空间的名字
elementFormDefault="qualified" 指定全局
xsd文件:
 <?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.jnb.com" elementFormDefault="qualified">
<xs:element name='书架'>
<xs:complexType>
<xs:sequence maxOccurs='unbounded'>
<xs:element name='书'>
<xs:complexType>
<xs:sequence>
<xs:element name='书名' type='xs:string' />
<xs:element name='作者' type='xs:string' />
<xs:element name="售价">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0" />
<xs:maxInclusive value="120" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
<xs:attribute name="isbn" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

被约束的 xml文件

xmlns:jj= "http://www.jnb.com" 给关联的命名空间 取个 jj的名字
以方便底下用jj的命名空间来引用
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<jj:书架 xmlns:jj= "http://www.jnb.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.jnb.com mybooks.xsd">
<jj:书 isbn="0001">
<jj:书名>书籍</jj:书名>
<jj:作者>某人</jj:作者>
<jj:售价>100</jj:售价>
</jj:书>
</jj:书架>
 

xml 引入约束文件的更多相关文章

  1. solr配置相关:约束文件及引入ik分词器

    schema.xml: solr约束文件 Solr中会提前对文档中的字段进行定义,并且在schema.xml中对这些字段的属性进行约束,例如:字段数据类型.字段是否索引.是否存储.是否分词等等 < ...

  2. XML的约束(schema)

    XML Schema也是一种用于定义和描述XML文档结构与内容的模式语言,其出现是为了克服DTD的局限性 XML Schema符合XML语法结构 DOM.SAX等XML API很容易解析出XML Sc ...

  3. XML引入多scheme文件约束简单示例

    XML引入多scheme文件约束简单示例,用company.xsd和department.xsd来约束company.xml: company.xsd <?xml version="1 ...

  4. Eclipse引入自定义XML约束文件(DTD,SCHEMA)问题

    Eclipse引入自定义XML约束文件(DTD,SCHEMA)问题 1:说明 使用Eclipse 编写xml文件的约束文件的,包括DTD约束文件,Schema约束文件的时候, 我们也需要接受eclip ...

  5. 作业:xml练习2-写.xml的外部约束文件(dtd文件)

    写外部DTD: 步骤: 1.在srd目录下新建DTD文件,并命名为:scores.dtd 2.在练习1的基础上,剪切练习1的DTD内部声明.粘贴到一个新建的DTD文件中.剪切之后的地方换上:包含外部D ...

  6. Myelipse中xml约束文件的导入(以spring为例)

    为了在电脑处于未联网状态下,beans.xml中书写标签具有提示功能,需要在电脑本地导入约束文件,下面上图 注意:将location后缀添加到key中beans的后面 注意:导入 context,ao ...

  7. 【转】xml文件中加入本地的dtd约束文件

    首先,我是以加载Struts2的来演示: 1 我们可以看到,越是文件中的 显示的是PUBLIC, 即从网络中获取约束文件dtd ,此时我需要将其配置成从自己的本地来获取dit文件 首先,先要有stru ...

  8. Mybatis xml约束文件的使用

    一:准备.DTD约束文件      核心配置文件约束文件:mybatis-config.dtd <?xml version="1.0" encoding="UTF- ...

  9. 在eclipse中引入mybatis和spring的约束文件

    eclipse中引入mybatis约束文件步骤: 首先: config的key值 http://mybatis.org/dtd/mybatis-3-config.dtd mapper的key值 htt ...

随机推荐

  1. Weblogic下启用Gzip压缩

    一.首先,去http://sourceforge.net/projects/filterlib网站下载tk-filters-1.0.1.zip. 二.解压这个tk-filters-1.0.1.zip压 ...

  2. glassfish3 读不到web程序的jar包

    现在项目中用到glassfish3,部署了一个web程序.可以访问到首页,但是在登陆的时候提示找不到数据库的驱动包.这个jar包我是放在web-inf/lib下的.但是glassfish就是报找不到j ...

  3. MongoDB:如何正常关闭服务(转)

    原文链接:MongoDB:关闭服务 MongoDB 提供几种关闭服务的命令,具体为以下: 一 使用 Crtl+C 关闭  [mongo@redhatB data]$ mongod --dbpath=/ ...

  4. 局域网Cesium离线影像及瓦片影像地图加载【转】

    http://www.mamicode.com/info-detail-2161992.html 1.Cesium简介 优点: cesium展示地图数据效果比较好,解析2D地图各种不同服务类型的数据源 ...

  5. C#线程同步与死锁Monitor

    在上一讲介绍了使用lock来实现C#线程同步.实际上,这个lock是C#的一个障眼法,在C#编译器编译lock语句时,将其编译成了调用Monitor类.先看看下面的C#源代码: public stat ...

  6. Windows环境搭建Red5流媒体服务器

    Windows环境搭建Red5流媒体服务器指南 测试环境:Windows 7 一.   下载安装程序 red5-server 下载地址 https://github.com/Red5/red5-ser ...

  7. 让两个DIV的高度隐式同步

    以前遇到两个相临近的块,高度要一样,但是内容多少又不定时,我都是通过把这两块封装在TD里面实现,但今天在CSDN上面看到有人要通过JS来实现这个,我尝试了一下.http://topic.csdn.ne ...

  8. 时间插件WdatePicker使用方法

    只需要引入js文件即可: <script src="WdatePicker/WdatePicker.js"></script> 自己试了个小实例: < ...

  9. MySQL有关1042 Can’t get hostname for your address的问题分析解决过程

    [Comment 1]  前同事企鹅上面说他安装的mysql 5.5,发现用mysql客户端远程连接的时候,报1042-Can’t get hostname for your address错误,但是 ...

  10. fatal error C1853: '<filename>' is not a precompiled header file

    当编译c和c++混合的项目时,会出现如下类似的错误 fatal error C1853: '<filename>' is not a precompiled header file 解决方 ...