在xmlsolr schema.xml详解中,什么是全局元素,什么是局部元素

热销排行榜
1.2.3.4.5.6.7.8.9.10.
最近浏览的其他商品
浏览更多同类商品
【 】??????????
XML.XMLSchema.XSLT2.0和Xquery开发详解
978-7-121-07737-1
电子工业出版社
出版日期:
读者对象:
¥39.60&&&
立刻节省:¥15.40
所属分类:
国内第一本介绍XQUERY和XQJ的图书  “孙鑫作品系列”之“Java Web开发三部曲”之二,国内第一本介绍XQuery和XQJ的图书,涵盖最新的XSLT2.0、XQuery1.0和XQL规范,7种最常用和最新的XML技术,4种Java解析XML文档技术,1种支持最新XQuery标准的查询API。  IT培训专家倾心之作,实现开发梦想再也不难。
&&& 本书内容全面,详细讲解了目前最常用和最新的XML技术,包括:XML、DTD、XML名称空间、
XML Schema、XPath 1.0和XPath 2.0、XSLT 1.0和XSLT 2.0,以及XQuery。此外,本书还介绍了如何
使用DOM、SAX、JDOM和dom4j来解析和验证XML文档,以及使用最新的XQJ APl来查洵XML
&&& 本书语言生动、通俗易懂、讲解细致,所有章节都提供了大量的例子,以帮助读者更好地理解所学
&&& 本书在内容的安排上独具匠心,在知识体系的讲解上由浅入深、循序渐进。
XML篇  第1章
XML   本章要点  ?了解XML的起源  ?弄清楚XML与HTML的区别  ?学会使用XMLSpy  ?了解XML的物理结构  ?掌握XML的逻辑结构  ?学会编写格式良好的XML文档
XML对我们来说已不再陌生,其相关概念和知识在网络上随处可见,有关XML的应用也越来越多。本章的目的是帮助读者快速了解和掌握XML,为后面章节的学习打下基础。
  1.1 XML的起源
XML的全称是Extensible Markup Language,意思是可扩展的标记语言,它是标准通用标记语言(Standard Generalized Markup Language,SGML)的一个子集。那SGML又是什么呢?
在20世纪80年代早期,IBM提出在各文档之间共享一些相似的属性,例如字体大小和版面。IBM设计了一种文档系统,通过在文档中添加标记,来标识文档中的各种元素,IBM把这种标识语言称做通用标记语言(Generalized Markup Language,GML)。经过若干年的发展,1984年国际标准化组织(ISO)开始对此提案进行讨论,并于1986年正式发布了为生成标准化文档而定义的标记语言标准(ISO 8879),称为新的语言SGML,即标准通用标记语言。
SGML功能非常强大,是可以定义标记语言的元语言,然而由于SGML过于复杂,不适合在Web上应用,因此W3C组织在1996年便开始设计一种可扩展的标记语言,以便能将SGMlL的丰富功能与HTML的易用性结合到Web应用中。日,W3C发布了XML1.0标准,其目的是为了在Web上能以现有的超文本标记语言(HTML)的使用方式提供、接收和处理通用的SGML。XML是SGML的一个简化子集,它以一种丌放的、自我描述的方式定义了数据结构。在描述数据内容的同时能突出对结构的描述,从而体现出数据与数据之间的关系。
本书介绍的XML主要遵循W3C于日发布的。XML1.0推荐标准的第四版,读者可以在http://www.w3.org/TR/REC.xml/了解到此标准的详细内容。
W3C组织于日,发布了XML1.1的推荐标准,并于日发布了XML1.1推荐标准的第二版,这是最新的XML版本,不过由于目前大多数的应用还是基于XML1.0的推荐标准,因此本书也将遵照XML1.0规范来讲述。如果读者想要了解XML1.1规范的内容,可以参看网址:http://www.w3.orgfrR/2006/REC―xm111―/。   ……
XML篇 第1章
XML的起源   1.2
W3C介绍  1.3
关于XML的两个问题   1.4
XML与HTML的比较    1.4.1
XML将数据与显示分开
   1.4.2
XML对文档的格式要求更加严格
   1.4.3
XML有且只能有一个根元素
XML的编辑工具   1.6
XML文档   1.6.1
XML文档的结构    1.6.2
在XMLSpy中创建XML文档    1.6.3
   1.6.4
文档类型声明   1.6.5
元素   1.6.6
注释   1.6.7
处理指令   1.6.8
空白处理   1.6.9
行尾处理   1.6.10
格式良好的XML   1.8
小结  第2章
在XML文档中引入DTD  2.2
   2.2.1
元素类型声明   2.2.2
实体声明   2.2.3
属性表声明
   2.2.4
记号声明  2.3
在XMLSpy中创建DTD文档   2.4
有效的XML   2.5
XML处理器/解析器   2.6
小结  第3章
XML名称空间   3.1
声明名称空间   3.2
名称空间在元素和属性中的运用    3.2.1
名称空间在元素中的运用
   3.2.2
默认名称空间   3.2.3
名称空间在属性中的运用
名称空间和DTD
小结 第Ⅱ篇
XML Schema篇 第4章
XML Schema初窥   4.1
XML Schema推荐标准
XML Schema文档一瞥
XML Schema与DTD的比较  4.4
术语明晰   4.5
XML Schema概述
   4.5.1
元素和属性的声明   4.5.2
元素和属性的类型   4.5.3
简单类型   4.5.4
复杂类型   4.5.5
全局声明和局部声明
   4.5.6
模式与名称空间
   4.5.7
在实例中引用模式文档   4.5.8
注解  4.6
在XMLSpy中创建模式文档   4.7
模式文档的验证  4.8
小结  第5章
内置简单类型
基于字符串的类型    5.1.1
   5.1.2
normalizedString    5.1.3
token   5.1.4
   5.1.5
NCName   5.2
数字类型    5.2.1
float和double(浮点数和双精度浮点数)    5.2.2
decimal(小数)
   5.2.3
integer(整数)   5.3
日期和时间类型   5.3.1
date   5.3.2
time    5.3.3
dateTime    5.3.4
   5.3.5
gYearMonth
   5.3.6
gMonth    5.3.7
gMonthDay    5.3.8
gDay   5.3.9
duration   5.4
其他数据类型    5.4.1
   5.4.2
   5.4.3
小结  第6章
自定义简单类型   6.1
面(facet)   6.1.1
限制范围   6.1.2
限制长度   6.1.3
指定精度   6.1.4
   6.1.5
模式匹配   6.1.6
空白处理   6.1.7
原子类型   6.3
列表类型    6.3.1
定义列表类型   6.3.2
限制列表类型  6.4
联合类型    6.4.1
定义联合类型   6.4.2
限制联合类型  6.5
阻止简单类型的派生  6.6
小结  第7章
从简单类型到复杂类型   7.2
xs:attribute元素的use、default和fixed属性   7.3
anyType   7.4
纯元素内容   7.4.1
sequence组
   7.4.2
choice组    7.4.3
all组  7.5
元素的出现指示符   7.6
元素的默认值和固定值   7.7
空元素  7.8
混合内容   7.9
元素组  7.10
属性组   7.11
通配符    7.11.1
元素通配符   7.11.2
属性通配符  7.12
小结  第8章
派生复杂类型
扩展派生复杂类型    8.1.1
扩展简单内容   8.1.2
扩展纯元素内容
   8.1.3
扩展混合内容   8.1.4
扩展空内容
限制派生复杂类型    8.2.1
限制简单内容   8.2.2
限制纯元素内容
   8.2.3
限制混合内容   8.2.4
限制空内容
在实例文档中使用派生类型   8.4
替换组  8.5
抽象元素和类型  8.6
控制派生类型的创建和使用   8.7
小结 第Ⅲ篇
解析篇 第9章
一致性约束   9.1
unique约束  9.2
keyref约束  9.4
小结  第10章
引入其他的模式文档
包含   10.2
重定义   10.3
导入   10.4
小结  第11章
使用DOM、SAX和JAXP解析XML文档   11.1
DOM、SAX和JAXP概述
使用DOM解析XML文档
   11.2.1
DOM结构模型
   11.2.2
DOM树中的节点类型    11.2.3
DOM解析器工厂和   11.2.3
DOM解析器    11.2.4
JAXP的错误类和异常类
   11.2.5
使用DOM解析XML文档的实例   11.3
使用SAX解析XML文档    11.3.1
SAX的处理机制   11.3.2
配置SAX解析器    11.3.3
SAX解析器工厂   11.3.4
SAX的异常类    11.3.5
ErrorHandler接口    11.3.6
使用SAX解析XML   11.2.3
文档的实例  11.4
使用XML Schema来  11.4
验证XML文档   11.4.1
模式工厂和验证    11.4.2
与解析API的集成
   11.4.3
获取类型信息
小结 第12章
使用JDOM解析XML文档
下载并配置JDOM  12.2
JDOM API介绍
使用JDOM访问XML文档的实例
小结  第13章
使用dom4j解析XML文档
下载并配置dom4j  13.2
dom4j API介绍  13.3
使用dom4j访问XML文档的实例   13.3.1
使用XML Schema来验证XML文档   13.3.2
使用访问者模式遍历XML文档   13.3.3
使用dom4j的事件模型来访问XML文档  13.4
小结  第14章
解析名称空间   14.1
DOM和名称空间   14.2
SAX和名称空间
JDOM和名称空间  14.4
dom4j和名称空间  1
客服专线:010- 客服邮箱:
Copyright & 北发图书网 2007,
All Rights Reserved
北京北发电子商务股份有限公司 版权所有博客分类:
模式与名称空间
DTD的问题就在于和名称空间不相关,当你为一个XML文档使用了名称空间后,文档的DTD就需要重写。XML Schema对名称空间提供了很好的支持。在编写模式文档时,你可以指定该模式文档是为哪一个名称空间声明和定义组件,这个名称空间称为目标名称空间。
目标名称空间
目标名称空间使用xs:schema元素的targetNamespace属性来指定,如例4-16所示。
&?xml version="1.0" encoding="UTF-8"?&
&xs:schema xmlns:xs=""
targetNamespace=""
xmlns:book=""&
&xs:element name="book" type="book:bookType"/&
&xs:complexType name="bookType"&
&xs:sequence&
&xs:element name="title" type="xs:string"/&
&xs:element name="author" type="xs:string"/&
&/xs:sequence&
&xs:attribute name="isbn" type="xs:token"/&
&/xs:complexType&
&/xs:schema&
① 我们在xs:schema元素上使用targetNamespace属性指定目标名称空间为:,即指明了在该模式文档中声明的元素、定义的类型都属于名称空间。
② 声明名称空间,并为该名称空间绑定前缀book,使用该前缀来引用名称空间中的类型。
③ 由于指定了目标名称空间,文档中定义的类型都属于目标名称空间,因此在引用类型时,需要加上book前缀。
④ 在指定类型名时,不需要加上任何前缀,当使用了targetNamespace属性后,在模式文档中定义的任何类型都属于目标名称空间。
在模式文档中,我们很容易就能区分出不同名称空间中的元素和类型,带有xs前缀的元素和类型属于名称空间,而其他的元素和类型则属于目标名称空间。需要注意的是,只有模式文档中的全局元素和全局属性才属于目标名称空间,在本例中,声明的全局元素name属于目标名称空间,而局部元素title和author则不属于目标名称空间。
为了简化模式文档对目标名称空间中的元素和类型的引用,我们可以利用默认名称空间来简化引用,例4-16如果使用了默认名称空间,可以修改为如例4-17所示。
使用了默认名称空间的book4.xsd
&?xml version="1.0" encoding="UTF-8"?&
&xs:schema xmlns:xs=""
targetNamespace=""
&xs:element name="book" type="bookType"/&
&xs:complexType name="bookType"&
&xs:sequence&
&xs:element name="title" type="xs:string"/&
&xs:element name="author" type="xs:string"/&
&/xs:sequence&
&xs:attribute name="isbn" type="xs:token"/&
&/xs:complexType&
&/xs:schema&
我们在xs:schema元素上声明了默认名称空间,因此在声明book元素时,引用bookType类型就无须再添加前缀了。
符合上述模式文档的XML实例文档如例4-18所示。
&?xml version="1.0" encoding="GB2312"?&
&book:book xmlns:book="" isbn="978-7-121-06812-6"&
&title&《Struts 2深入详解》&/title&
&author&孙鑫&/author&
&/book:book&
在例4-17的模式文档中,在bookType类型定义中声明的元素title和author是局部元素,没有被目标名称空间所限定,因此在实例文档中,对title和author元素不要添加book前缀。局部元素和属性的限定
在例4-17中,局部元素title和author没有被目标名称空间所限定,如果要限定局部元素和属性,可以通过xs:schema元素的elementFormDefault和attibuteFormDefault属性来设置。
为了指定模式文档中局部声明的元素必须被限定,可以将xs:schema元素的elementFormDefault属性的值设为"qualified"。
将例4-17中的xs:schema元素修改为如例4-19所示。
&?xml version="1.0" encoding="UTF-8"?&
&xs:schema xmlns:xs=""
targetNamespace=""
elementFormDefault="qualified"&
&xs:element name="book" type="bookType"/&
&xs:complexType name="bookType"&
&xs:sequence&
&xs:element name="title" type="xs:string"/&
&xs:element name="author" type="xs:string"/&
&/xs:sequence&
&xs:attribute name="isbn" type="xs:token"/&
&/xs:complexType&
&/xs:schema&
elementFormDefault属性的默认值是unqualified,即对局部声明的元素不加限定。
我们修改了模式文档,相应的就要修改实例文档,如例4-20所示。
&?xml version="1.0" encoding="GB2312"?&
&book:book xmlns:book="" isbn="978-7-121-06812-6"&
&book:title&《Struts 2深入详解》&/book:title&
&book:author&孙鑫&/book:author&
&/book:book&
在例4-20的实例文档中,所有的元素都属于同一个名称空间,因此我们可以声明一个默认的名称空间,来省略前缀的使用,如例4-21所示。
&?xml version="1.0" encoding="GB2312"?&
&book xmlns="" isbn="978-7-121-06812-6"&
&title&《Struts 2深入详解》&/title&
&author&孙鑫&/author&
属性的限定和元素的限定是类似的。如果属性被声明为全局属性或者xs:schema元素的attibuteFormDefault属性被设置成"qualified"的话,那么属性就必须被限定,在实例文档中将以带名称空间前缀的方式出现。实际上,需要限定的属性必须明确的加上名称空间前缀,因为XML名称空间推荐标准中并没有给出关于属性的默认名称空间的机制,一个没有前缀的属性将不在任何的名称空间中。属性是附属于元素的,对属性添加名称空间不是很有必要,因此在多数应用中都没有给属性添加限定。
使用了attibuteFormDefault属性的模式文档,如例4-22所示。
&?xml version="1.0" encoding="UTF-8"?&
&xs:schema xmlns:xs=""
targetNamespace=""
elementFormDefault="qualified"
attributeFormDefault="qualified"&
&xs:element name="book" type="bookType"/&
&xs:complexType name="bookType"&
&xs:sequence&
&xs:element name="title" type="xs:string"/&
&xs:element name="author" type="xs:string"/&
&/xs:sequence&
&xs:attribute name="isbn" type="xs:token"/&
&/xs:complexType&
&/xs:schema&
attributeFormDefault属性的默认值是unqualified,即对局部声明的属性不加限定。
一个符合模式(例4-22)的实例文档如例4-23所示。
&?xml version="1.0" encoding="GB2312"?&
&book:book xmlns:book="" book:isbn="978-7-121-06812-6"&
&book:title&《Struts 2深入详解》&/book:title&
&book:author&孙鑫&/book:author&
&/book:book&
除了使用xs:schema元素的elementFormDefault和attibuteFormDefault属性来限定局部元素和局部属性外,我们还可以在xs:element和xs:attribute元素上分别使用form属性来限定局部元素和局部属性。我们看例4-24。
&?xml version="1.0" encoding="UTF-8"?&
&xs:schema xmlns:xs=""
targetNamespace=""&
&xs:element name="book" type="bookType"/&
&xs:complexType name="bookType"&
&xs:sequence&
&xs:element name="title" type="xs:string" form="qualified"/&
&xs:element name="author" type="xs:string" form="qualified"/&
&/xs:sequence&
&xs:attribute name="isbn" type="xs:token" form="qualified"/&
&/xs:complexType&
&/xs:schema&
例4-24所示的模式文档和例4-22所示的模式文档的效果是一样的。
要注意的是,在xs:schema元素上使用elementFormDefault和attibuteFormDefault属性,影响的是整个模式文档中的局部元素和局部属性,而在xs:element和xs:attribute元素上使用form属性,影响的是当前的局部元素和局部属性。
未声明的目标名称空间
对于很多不使用名称空间的XML文档,你需要使用没有声明目标名称空间的模式文档。我们看例4-25。
&?xml version="1.0" encoding="UTF-8"?&
&xs:schema xmlns:xs=""&
&xs:element name="book" type="bookType"/&
&xs:complexType name="bookType"&
&xs:sequence&
&xs:element name="title" type="xs:string"/&
&xs:element name="author" type="xs:string"/&
&/xs:sequence&
&xs:attribute name="isbn" type="xs:token"/&
&/xs:complexType&
&/xs:schema&
在这个模式文档中我们没有声明目标名称空间,因此定义的bookType类型和声明的book元素都是没有名称空间限定的。在引用类型或元素时,不需要添加任何的名称空间前缀。在本例中,声明book元素时,type属性直接引用了bookType类型。与之相对的是,例4-25的模式文档中使用的所有XML Schema元素和类型都是通过与XML Schema名称空间相关联的名称空间前缀"xs"来明确进行限定的。
一个符合模式(例4-25)的实例文档如例4-26所示。
&?xml version="1.0" encoding="GB2312"?&
&book isbn="978-7-121-06812-6"&
&title&《Struts 2深入详解》&/title&
&author&孙鑫&/author&
要注意的是,在没有声明目标名称空间的模式文档中,强烈建议对所有的XML Schema元素和类型使用一个和XML Schema名称空间相关联的名称空间前缀(如xs或xsd)来明确实施限定。如果你对XML Schema的元素和类型使用了默认名称空间,那么对XML Schema类型的引用也许不能和对用户自定义类型的引用相区分,从而导致模式文档出现错误。例4-27错误的使用了默认名称空间,使得对自定义类型的引用和对XML Schema类型的引用不能区分。
&?xml version="1.0" encoding="UTF-8"?&
&schema xmlns=""&
&element name="book" type="bookType"/&
&complexType name="bookType"&
&sequence&
&element name="title" type="string"/&
&element name="author" type="string"/&
&/sequence&
&attribute name="isbn" type="token"/&
&/complexType&
在XMLSpy中验证这个模式文档时,将提示如下的错误信息:
'bookType' must refer to an existing simple or complex type.
这是因为模式验证器认为对bookType类型的引用(没有前缀的引用),引用的是默认名称空间(即名称空间)中的类型,而XML Schema名称空间中并没有bookType这种类型,因此就报出了错误。
浏览: 333818 次
来自: 济南
多谢大师!帮到我了!这个类很有用!!感谢!!!
MySSLProtocolSocketFactory这 ...
yes 帮到我了
freemarker demo教程源代码下载:http://w ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'君,已阅读到文档的结尾了呢~~
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口XML Schema 教程
XSD 元素替换(Element Substitution)
通过 XML Schema,一个元素可对另一个元素进行替换。
让我们举例说明:我们的用户来自英国和挪威。我们希望有能力让用户选择在 XML 文档中使用挪威语的元素名称还是英语的元素名称。
为了解决这个问题,我们可以在 XML schema 中定义一个 substitutionGroup。首先,我们声明主元素,然后我们会声明次元素,这些次元素可声明它们能够替换主元素。
&xs:element name="name" type="xs:string"/&
&xs:element name="navn" substitutionGroup="name"/&
在上面的例子中,&name& 元素是主元素,而 &navn& 元素可替代 &name& 元素。
请看一个 XML schema 的片段:
&xs:element name="name" type="xs:string"/&
&xs:element name="navn" substitutionGroup="name"/&
&xs:complexType name="custinfo"&
&xs:sequence&
&xs:element ref="name"/&
&/xs:sequence&
&/xs:complexType&
&xs:element name="customer" type="custinfo"/&
&xs:element name="kunde" substitutionGroup="customer"/&
有效的 XML 文档类似这样(根据上面的 schema):
&customer&
&name&John Smith&/name&
&/customer&
或类似这样:
&navn&John Smith&/navn&
阻止元素替换
为防止其他的元素替换某个指定的元素,请使用 block 属性:
&xs:element name="name" type="xs:string" block="substitution"/&
请看某个 XML schema 的片段:
&xs:element name="name" type="xs:string" block="substitution"/&
&xs:element name="navn" substitutionGroup="name"/&
&xs:complexType name="custinfo"&
&xs:sequence&
&xs:element ref="name"/&
&/xs:sequence&
&/xs:complexType&
&xs:element name="customer" type="custinfo" block="substitution"/&
&xs:element name="kunde" substitutionGroup="customer"/&
合法的 XML 文档应该类似这样(根据上面的 schema):
&customer&
&name&John Smith&/name&
&/customer&
但是下面的文档不再合法:
&navn&John Smith&/navn&
使用 substitutionGroup
可替换元素的类型必须和主元素相同,或者从主元素衍生而来。假如可替换元素的类型与主元素的类型相同,那么您就不必规定可替换元素的类型了。
请注意,substitutionGroup 中的所有元素(主元素和可替换元素)必须被声明为全局元素,否则就无法工作!
什么是全局元素(Global Elements)?
全局元素指 &schema& 元素的直接子元素!本地元素(Local elements)指嵌套在其他元素中的元素。
记住登录状态
重复输入密码

我要回帖

更多关于 solr schema.xml详解 的文章

 

随机推荐