<?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. jsp中简易版本的图片上传程序

    1.下载相应的组件的最新版本 Commons FileUpload 可以在http://jakarta.apache.org/commons/fileupload/下载 附加的Commons IO   ...

  2. Java7语法新特性

    Java7语法新特性: 1. switch中增加对String类型的支持. public String generate(String name, String gender) { String ti ...

  3. 快速近似最近邻搜索库 FLANN - Fast Library for Approximate Nearest Neighbors

    What is FLANN? FLANN is a library for performing fast approximate nearest neighbor searches in high ...

  4. Matlab注释多行和取消多行注释的快捷键

    matlab里注释符号是%,只是单行注释,可是没有多行注释符号,就像C/C++/Java中都有多行注释符号/*  */. 如果利用单行注释的方式手工注释一段程序会很麻烦,matlab软件自带快捷键支持 ...

  5. flink和spark stream等框架的对比

    参考这篇文章: https://www.sohu.com/a/196257023_470008 我们当时的目标就是要设计一款低延迟.exactly once.流和批统一的,能够支撑足够大体量的复杂计算 ...

  6. iOS开发-图片查看(ScrollView+UIPageControl)

    上周没事写了一个简单的图片查看,上次的查看只用到了一个UIImageView,不断的替换背景图片,实现图片之间的切换.通过ScrollView可以很简单的是实现图片之间的查看,设置setPagingE ...

  7. 巧妙利用函数的惰性载入提高javascript 代码性能

    在 javascript 代码中,因为各浏览器之间的行为的差异,我们经常会在函数中包含了大量的 if 语句,以检查浏览器特性,解决不同浏览器的兼容问题. 例如,我们最常见的为 dom 节点添加事件的函 ...

  8. activity 保存数据

    activity 保存数据对android的商业项目十分的重要,譬如你在发微博的时候,突然来了一个电话,你洋洋洒洒写了100个字,你不能保存的话,你岂不要卖要骂娘. 那activity究竟是保存数据的 ...

  9. ToolBarTray

    <ToolBarTray DockPanel.Dock="Top"> <ToolBar ToolBarTray.IsLocked="True" ...

  10. Java 实例 - 队列(Queue)用法

    队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作. LinkedList类实现了Queue接口,因此我们可以把LinkedList当成Queue来用. 以下实例演示了队 ...