xml中solr schema.xml约束

新建一个XML Schema文件
   
新建一个XML Schema文件
要在XMLSpy 2005中新建XML Schema文件,首先您必须启动XMLSpy 2005,然后新建一个XML Schema(.xsd)文档。
启动XMLSpy 2005 要启动XMLSpy 2005,您可以双击桌面上的XMLSpy 2005图标,或者在开始 | 所有程序菜单中选择XMLSpy 2005程序。XMLSpy 2005启动后处于无打开文档的状态。 您可以看到用户界面的三个主要部分:(i)左侧的Project和Info窗口;(ii)中间的主窗口(目前为空);和(iii)右侧的输入助手窗口。
新建一个XML Schema文件 您可以通过以下步骤来新建一个XML Schema文件:
&<span style="font-family:Helvetica,A font-size:10 color:#.选择菜单项File | New,此时将出现&Create new document(创建新文档)&对话框。 && &&<span style="font-family:Helvetica,A font-size:10 color:#.在该对话框中选择xsd&#xA0;XML&#xA0;Schema,然后点击OK确认。此时主窗口中将出现一个以Schema/WSDL设计视图打开的空schema文件。注:Schema/WSDL设计视图本身有两种显示方式:Schema概要视图(Schema Overview) && 为整个schema提供一个关于所有全局成分的概要;以及内容模型视图(Content Model View) && 为各个全局成分提供内容模型视图。在新建XML Schema文件时,Schema/WSDL视图将以Schema概要视图打开。您会被提示输入根元素(root element)的名称。
<span style="font-family:Helvetica,A font-size:10 color:#.点击加亮的字段,并输入Company。然后以回车键确认。现在该schema的根元素为Company,它是一个全局元素(global element)[译注//全局元素、全局属性是XML Schema中的术语,指的是那些在schema元素下声明的元素和属性。由于这些元素和属性可在XML Schema中的别处被引用,因此被称作全局元素/属性。]。您在主窗口中所看到的视图(屏幕截图如下)被称为Schema概要视图(Schema Overview)。它为该schema提供了一个概要:上方窗格(pane)中列出了所有的全局成分;下方窗格中显示所选全局成分的属性(attribute)及唯一性约束(identity constraint)。(只需点击全局成分左侧的图标即可对该全局成分的内容模型进行查看和编辑。) &
<span style="font-family:Helvetica,A font-size:10 color:#.在Company元素的Annotations字段[译注//即Company右边那个以ann:开头的字段]中输入对该元素的描述,比如这里我们输入Root&#xA0;element。&<span style="font-family:Helvetica,A font-size:10 color:#.点击菜单项File | Save以保存该XML Schema文件,文件名可以自行选择(比如用AddressFirst.xsd)。 &
&#xA0; &#xA0;
&#xA9; 2004 本文档由Collin Hsu翻译。Spring : 基于XML Schema的配置(一) - 推酷
Spring : 基于XML Schema的配置(一)
【本教程翻译自Spring官方文档,并有适当增删】
(是针对Spring 4.0.6 Release版本的)
基于XML Schema的配置在Spring 2.0开始被引入,并在2.5和3.0版本得到增强和扩展。
转向基于XML Schema的动机是使得Spring XML配置更简单。传统的基于 &bean/&的方法是很好,但它的通用特性带来了很大的配置开销。
从Spring 依赖注入容器的观点来看,一切都是bean。这对Spring 容器是个好消息,因为如果一切都是bean,那么一对象都能以相同的方式看待。但在程序员看来并不是这样,因为在Spring XML配置文件的对象并不是通用的bean。常见的情况是,每个bean需要一定程度上的特殊配置。
Spring 2.0新出现的基于XML Schema的配置解决了这一问题。&bean/&元素还是存在的,如果你愿意的话,还可以只使用&bean/&元素。新的基于XML Schema的配置语法使得Spring XML的可读性更好,且允许你更好表达一个bean的意图。
关键是记住:新的自定义标签将最适合基础性或整合类的beans,比如AOP(切面编程)、集合、事务、整合第三方框架等。而已存在的bean 标签最适合特殊用途的beans,如DAOS,服务层对象,验证器对象等。
你得由DTD风格的转变到XML Schema风格。
&?xml version=&1.0& encoding=&UTF-8&?&
&!DOCTYPE beans PUBLIC &-//SPRING//DTD BEAN 2.0//EN&
&http://www.springframework.org/dtd/spring-beans-2.0.dtd&&
&!-- bean definitions here --&
XML Schema风格的如下:
&?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&&
&!-- bean definitions here --&
笔者注:如果你想笔者一样最早接触的是Spring 3.0,那么你应该也会对DTD风格的配置文件感到陌生。
需要说明的是,xsi:schemaLocation片段并不是必须的,但它能被包含去引用一个模式的本地副本。(在开发时有用)
本教程的以下部分是介绍新的基于XML Schema标签,每个讲解由至少一个例子,并有之前的版本写法(100%合法并支持,但显然麻烦得多)。
正如名字暗示的,util标签处理的是一些常见的,实用工具类的配置问题,比如集合、常量等。
当然,你得首先引入命名空间完成正确的模式引用。
&?xml version=&1.0& encoding=&UTF-8&?&
&beans xmlns=&http://www.springframework.org/schema/beans&
xmlns:xsi=&http://www.w3.org/2001/XMLSchema-instance&
xmlns:util=&http://www.springframework.org/schema/util& xsi:schemaLocation=&
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd&& &!-- bean definitions here --&
&util:constant/&
比如说,过去你可能使用下面的配置:
&bean id=&...& class=&...&&
&property name=&isolation&&
&bean id=&java.sql.Connection.TRANSACTION_SERIALIZABLE&
class=&org.springframework.beans.factory.config.FieldRetrievingFactoryBean& /&
&/property&
上面的配置使用了FactoryBean的一个实现FieldRetrievingFactoryBean,并对isolation属性设值(一个常量:
java.sql.Connection.TRANSACTION_SERIALIZABLE
)。这样写当然没问题,但却像用户暴露了Spring 的内部注入方法。
现在,你可以这样写:
&bean id=&...& class=&...&&
&property name=&isolation&&
&util:constant static-field=&java.sql.Connection.TRANSACTION_SERIALIZABLE&/&
&/property&
FieldRetrievingFactoryBean是用来获取静态或非静态的字段,通常是用public static final 修饰的常量,(用来设值注入或构造器注入)
下面展示的是如何暴露一个静态字段,(使用staticField)
&bean id=&myField&
class=&org.springframework.beans.factory.config.FieldRetrievingFactoryBean&&
&property name=&staticField& value=&java.sql.Connection.TRANSACTION_SERIALIZABLE&/&
还有一种便捷的写法,就是将静态字段作为一个bean的名字。
&bean id=&java.sql.Connection.TRANSACTION_SERIALIZABLE&
class=&org.springframework.beans.factory.config.FieldRetrievingFactoryBean&/&
这样就表明没必要再去选择bean的id是什么,但这种形式又是非常精确和方便的用做内部bean。
当然,它也可以获取非静态字段。但用的不多,这里不再介绍。
&util:property-path/&
你以前可能这样写:
&!-- target bean to be referenced by name --&
&bean id=&testBean& class=&org.springframework.beans.TestBean& scope=&prototype&&
&property name=&age& value=&10&/&
&property name=&spouse&&
&bean class=&org.springframework.beans.TestBean&&
&property name=&age& value=&11&/&
&/property&
&!-- will result in 10, which is the value of property age of bean testBean --&
&bean id=&testBean.age& class=&org.springframework.beans.factory.config.PropertyPathFactoryBean&/&
上述配置使用了FactoryBean的一个实现PropertyPathFactoryBean来创建一个名叫testBean.age的bean(类型是int),它的值和testBean的age属性相同。
现在你可以:
&!-- target bean to be referenced by name --&
&bean id=&testBean& class=&org.springframework.beans.TestBean& scope=&prototype&&
&property name=&age& value=&10&/&
&property name=&spouse&&
&bean class=&org.springframework.beans.TestBean&&
&property name=&age& value=&11&/&
&/property&
&!-- will result in 10, which is the value of property age of bean testBean --&
&util:property-path id=&name& path=&testBean.age&/&
PropertyPathFactory能够计算一个给定目标对象的属性路径。这个目标对象可以直接指出或通过bean的名字。
// target bean to be referenced by name
&bean id=&person& class=&org.springframework.beans.TestBean& scope=&prototype&&
&property name=&age& value=&10&/&
&property name=&spouse&&
&bean class=&org.springframework.beans.TestBean&&
&property name=&age& value=&11&/&
&/property&
// will result in 11, which is the value of property spouse.age of bean person
&bean id=&theAge&
class=&org.springframework.beans.factory.config.PropertyPathFactoryBean&&
&property name=&targetBeanName& value=&person&/&
&property name=&propertyPath& value=&spouse.age&/&
上面的配置是通过bean的名字指出,(注意, targetBeanName和propertyPath)
下面一段的配置是直接通过内部bean计算属性路径的:
&!-- will result in 12, which is the value of property age of the inner bean --&
&bean id=&theAge&
class=&org.springframework.beans.factory.config.PropertyPathFactoryBean&&
&property name=&targetObject&&
&bean class=&org.springframework.beans.TestBean&&
&property name=&age& value=&12&/&
&/property&
&property name=&propertyPath& value=&age&/&
我们还有一种简写的方法,就是用路径做id.
&!-- will result in 10, which is the value of property age of bean person --&
&bean id=&person.age&
class=&org.springframework.beans.factory.config.PropertyPathFactoryBean&/&
&util:properties/&
以前你要这样去引用一个properties文件:
&!-- creates a java.util.Properties instance with values loaded from the supplied location --&
&bean id=&jdbcConfiguration& class=&org.springframework.beans.factory.config.PropertiesFactoryBean&&
&property name=&location& value=&classpath:com/foo/jdbc-production.properties&/&
现在,可以:
&!-- creates a java.util.Properties instance with values loaded from the supplied location --&
&util:properties id=&jdbcConfiguration& location=&classpath:com/foo/jdbc-production.properties&/&
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&详解XML中的模式Schema
作者:zhang_xinxiu
字体:[ ] 来源:CSDN Blog 时间:06-24 15:21:50
XML中拥有Schema特性,能够比DTD更加强大地引入元素结构,下面我们就来详解XML中的模式Schema的概念及作用和用法,需要的朋友可以参考下
文档定义模型为XML文档提供了规范,DTD的引入虽然解决了XML文档的规范化问题,但它文件格式类型和XML文件格式类型不一致,同时DTD提供的数据类型有限有时候无法满足行业的需求,所以引入了Schema。Schema模式可以确定XML文档的元素和属性的结构、元素的顺序、元素和属性的数据值,根据范围、枚举以及样式匹配等。
一、Schema初识
XML Schema语言也被称为XML Schema Definition (XSD),它的作用是定义一份XML文档的合法组件群(XML文档的结构),就像DTD的作用一样。 XML Schema以XML语言作为基础,也可以说XML Schema自身就是XML的一种应用。
1、Schema作用
XML Schema和DTD的作用一样,都是用来定义一个XML文档的结构的模式,那么为什么有了DTD还要有XML Schema呢? 因为,XML Schema比DTD作用更加强大。
Xml Schema 比 DTD的优越性:(1)模式是可扩展的(2)模式比 DTD 功能更丰富且更有用(3)模式是用 XML 编写的(4)模式支持数据类型(5)模式支持名称空间(6)不需要在学习其他的语言(7)可以直接使用XML编辑器来编写XML Schema(8)可以直接使用XML解析器来解析XML Schema(9)可以使用XML DOM来灵活的操作XML Schema(10)可以使用XSLT技术来转换XML Schema
2、对比学习
1.1 作用上
两者相同,都是定义了一个XML文档的结构的模式。
1.2 用法上
两者作用相同,但是语法上有些区别。Schema是DTD的扩展,同样支持元素和属性的定义,并且定义的语法相似,但Schema可以给元素和属性添加相应的数据类型,同时还引入了全局和局部元素声明的语法,另外根据元素和属性的数据内容引入了简单类型和复杂类型。所谓的简单类型(SimpleType)和复杂类型(ComplexType),它们本身并不是具体的数据类型,它们只是对节点或者自定义类型的类型作一个抽象的说明。
也就是说Schema的引入使得模式的声明更加类似于我们使用的编程语言。
二、实例详解
2.1 Schema实例
清单1:User.xml文档结构
&version=&1.0&?&& &&
用户列表&& &&
&&&&用户&& &&
&&&&&&&&&用户名xx用户名&& &&
&&&&&&&&&密码123456密码&& &&
&&&&&&&&&用户类型1用户类型&& &&
&&&用户&& &&
用户列表&&&&
清单2:使用全局组件形式来定义Schema,User.xsd
&version='1.0'&encoding='utf-8'&& &&
&xmlns:xs='http://www.w3.org/2001/XMLSchema'&elementFormDefault='qualified'&attributeFormDefualt='unqualified'&& &&
&&name='用户列表'&type='userlist'&& &&
&&name='userlist'&& &&
&&&&name='用户'&type='user'&& &&
&&name='user'&& &&
&&&&name='用户名'&type='user'&& &&
&&&&name='密码'&type='user'&& &&
&&&&name='用户类型'&type='user'&& &&
清单3:使用局部形式定义Schema,User.xsd
&version='1.0'&encoding='utf-8'&& &&
&xmlns:xs='http://www.nishishui.org/2000/XML&Schema'&elementFormDefault='qualified'&attributeFormDefualt='unqualified'&& &&
&&name='用户列表'&& &&
&&&&&name='用户'&& &&
&&&&&&& &&
&&&&&&&& &&
&&&&&&&&name='用户名'&type='xs:string'&& &&
&&&&&&&&name='密码'&type='xs:string'&& &&
&&&&&&&&name='用户类型'&type='xs:integer'&& &&
&&&&&&&& &&
&&&&&&& &&
清单2和清单3的都定义了User.xsd,它们的作用是相同的,都是为了验证XML文档的合法性,但定义的方法不同,清单2是使用全局组件的形式定义,而清单3使用的局部形式定义,具体的区别请看下文。
2.2 基本用法
上文中我们分别从作用和用法上对Schema和DTD进行了对比分析,Schema和DTD最大的区别在于Schema引入了数据类型,其它的如元素和属性的声明等类似于DTD,在下面讨论时就不再详述。
Schema基本内容导图:
2.2.1 引用语法当一个模式文件建立好以后,可以用它来验证某一个XML文档的有效性,也就是说检验某个XML文档是否遵循了模式文件的定义。 那么,XML文档怎么来引用一个模式文档呢? Schema模型的引用更类似于前面所说的命名空间的应用方法,具体实例如下:
&version='1.0'&encoding='utf-8'&& &&
用户列表&xmlns:xsi=http://www.nishishui.org/2000/XMLSchema&xsi:noNamespaceSchemaLocation='user.xsd'&& &&
&用户&& &&
&&用户名我是谁用户名&& &&
&&密码123456密码&& &&
&&用户类型1用户类型&& &&
&用户&& &&
用户列表&&&&
2.2.2 元素类型(1)按照内容的不同分为简单和复杂元素,分别使用simpleType和complexType标示。简单元素:元素中内容只能是文本,不包含其它的元素和属性。
&version='1.0'&encoding='utf-8'&& &&
&xmlns:xs='http://www.nishishui.org/2000/XML&Schema'&elementFormDefault='qualified'&attributeFormDefualt='unqualified'&& &&
&&&&&name='age'&& &&
&&&&&&&&&& &&
&&&&&&&&&&&&&& &&
&&&&&&&&&&&&&base=&xs:integer&&& &&
&&&&&&&&&&&&&&&&&value='0'&& &&
&&&&&&&&&&&&&&&&&value='100'&& &&
&&&&&&&&&&&&&& &&
&&&&&&&&&& &&
复杂元素:元素中包含其它的元素和属性。它有四种类型,分别是空元素、只包含其他元素、只包含正文、包含正文又包含其他元素。
&version='1.0'&encoding='utf-8'&& &&
&xmlns:xs='http://www.nishishui.org/2000/XML&Schema'&elementFormDefault='qualified'&attributeFormDefualt='unqualified'&& &&
&&&&&name='age'&& &&
&&&&&&&&&& &&
&&&&&&&&&&&&&& &&
&&&&&&&&&&&&&& &&
&&&&&&&&&&&&&&&&&& &&
&&&&&&&&&&&&&&&&&name='firstname'&type='xs:string'&& &&
&&&&&&&&&&&&&&&&&name='lastname'&type='xs:string'&& &&
&&&&&&&&&&&&&& &&
&&&&&&&&&& &&
(2)按照定义位置可分为局部和全局元素。全局元素:&element&元素的父元素必须是&schema&;局部元素:局部元素声明只能出现在复杂类型(&complexType&元素)定义内部。即&element&元素的父元素只能是&all&、&choice&或&sequence&元素。
&version='1.0'&encoding='utf-8'&& &&
&xmlns:xs='http://www.nishishui.org/2000/XML&Schema'&elementFormDefault='qualified'&attributeFormDefualt='unqualified'&& &&
&&&&&name='用户'&type='user'&& &&
&&&&&name='用户名'&type='xs:string'&& &&
&&&&&name='密码'&type='xs:string'&& &&
&&&&&&&&&name='user'&& &&
&&&&&&&&&&&&&& &&
&&&&&&&&&&&&&& &&
&&&&&&&&&&&&&&&&&& &&
&&&&&&&&&&&&&&&&&& &&
&&&&&&&&&&&&&&&&&ref='用户名'&minOccurs='0'&maxOccurs='1'&& &&
&&&&&&&&&&&&&&&&&ref='密码'&minOccurs='0'&maxOccurs='1'&& &&
&&&&&&&&&&&&&& &&
&&&&&&&&&& &&
大家感兴趣的内容
12345678910
最近更新的内容

我要回帖

更多关于 xml schema校验 的文章

 

随机推荐