定位、链接与查询3-XQuery.doc_第1页
定位、链接与查询3-XQuery.doc_第2页
定位、链接与查询3-XQuery.doc_第3页
定位、链接与查询3-XQuery.doc_第4页
定位、链接与查询3-XQuery.doc_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

五、XQueryXQuery(XML Query Language,XML查询语言)是查询各类XML数据源中数据的一种语言,当前版本为XQuery 1.0推荐标准(Recommendation),由万维网联盟(W3C)于2007年1月23日推出。XQuery用于查询(视作数据库的)XML文档中的数据,类似于查询关系数据库的SQL和查询面向对象数据库的OQL。1概述随着采用XML存储、交换和表示的信息的不断增加,聪明地查询XML数据源的能力变得越来越重要。XML的强大实力之一,是它在表示来自各式各样数据源的许多不同种类信息时的灵活性。为了利用这种灵活性,XML查询语言必须为检索和解释来自这些不同数据源的信息提供所需的特性。XQuery是为满足W3C的XML Query 1.0 Requirements和XML Query Use Cases推荐标准中所确定的需求而设计的,它被设计成一种查询简洁易懂的语言。它足够灵活,可查询范围宽广的XML信息源,包括数据库和文档。XQuery采用的是非XML查询语法(采用XML语法的查询语言,参见下面配套标准中 的XQueryX),源自Don Chamberlin等人于2000年底提出的一种XML查询语言Quilt。XQuery在XML文档的抽象的逻辑结构上(而不是在其语法表面上)进行操作。该逻辑结构称为“数据模型”,被定义在W3C标准XDM中。XQuery 1.0是XPath 2.0的一种扩展。任何在语法上有效,并可成功执行的表达式,在这两种语言中都会返回同样的结果。因为这两个语言是如此密切相关,所以它们的语法和语言描述,都来自同一个公共源,以确保一致性;而且这两个规范的编辑们,也紧密地工作在一起。1)标准系列XQuery是一个标准系列,其主标准为:l XQuery 1.0(REC: 2007.1.23)XQuery 1.0: An XML Query Language, W3C Recommendation 23 January 2007(XQuery 1.0:一种XML查询语言)。配套的标准有:l XQueryX(REC: 2007.1.23)XML Syntax for XQuery 1.0 (XQueryX) , W3C Recommendation 23 January 2007(XQuery 1.0的XML语法(XQueryX))。XML查询语言的语法绑定可能不止一个,XQueryX是XQuery的XML表示,它将XQuery语法的生成式(production)映射到XML生成式。XQueryX可用于分析器重用、对查询进行查询、生成查询、在XML中嵌入查询等。l XQueryReq(REQ: 2007.3.23)XML Query (XQuery) 1.0 Requirements, W3C Working Group Note 23 March 2007(XML查询(XQuery) 1.0需求)。为W3C的XQuery数据模型和查询语言规定目标、需求和使用方案。它还包含每一需求的对应状态,以指明XQuery 1.0的系列W3C标准的状态。l XQueryUC(Note: 2007.3.23)XML Query 1.0 Use Cases, W3C Working Group Note 23 March 2007(XML查询1.0使用案例)。详细说明XQuery 的使用方案。与XPath 2.0和XSLT 2.0的联合标准有:l XDM(REC: 2007.1.23)XQuery 1.0 and XPath 2.0 Data Model (XDM), W3C Recommendation 23 January 2007(XQuery 1.0和XPath 2.0的数据模型(XDM))。定义联合标准XDM(XQuery 1.0和XPath 2.0的数据模型),它是XPath 2.0、XSLT 2.0、XQuery和其他任意相关标准的数据模型。l XTQS(REC: 2007.1.23)XSLT 2.0 and XQuery 1.0 Serialization, W3C Recommendation 23 January 2007(XSLT 2.0与XQuery 1.0的序列化)。定义将XDM中所定义的数据模型实例序列化为八比特组的字节序列的一种联合标准。序列化是一种构件,为可被诸如XSLT和XQuery的其他标准使用而设计的。l XQPFS(REC: 2007.1.23)XQuery 1.0 and XPath 2.0 Formal Semantics, W3C Recommendation 23 January 2007(XQuery 1.0 与XPath 2.0的形式语义)。定义XQuery 1.0 与XPath 2.0的形式(正式)语义的联合标准。l XQPFO(REC: 2007.1.23)XQuery 1.0 and XPath 2.0 Functions and Operators , W3C Recommendation 23 January 2007(XQuery 1.0与XPath 2.0的函数和算符)。定义面向XML Schema和XDM中所定义的数据类型的构造函数、运算符和函数的联合标准。也讨论面向XDM中所定义的节点和节点序列的函数和算符。这些函数和算符用于XPath 2.0、XQuery 1.0、XSLT 2.0和其他有关XML标准。所定义的函数之特征和汇总见XQuery 1.0, XPath 2.0, and XSLT 2.0 Functions and Operators Namespace。正在制定中的与XPath的联合标准有:l XQPFTReq(WD: 2003.5.2)XML Query and XPath Full-Text Requirements, W3C Working Draft 02 May 2003(XML查询与XPath全文的需求)。规定在XQuery与XPath 中使用的全文搜索的需求。l XQPFTUC(WD: 2006.5.1)XML Query and XPath Full-Text Use Cases, W3C Working Draft 1 May 2006(XML查询与XPath全文的使用案例)。l XQPFT(WD: 2006.5.1)XQuery 1.0 and XPath 2.0 Full-Text, W3C Working Draft 1 May 2006(XML查询与XPath全文)。定义XQuery 1.0和XPath 2.0的全文之语法和形式语义,它是一种扩展XQuery 1.0和XPath 2.0,使其具有全文搜索能力的语言。正在开发的XQuery更新工具,让你编写的查询表达式可以修改文档和保存结果:l XQueryUF(WD: 2006.7.11)XQuery Update Facility, W3C Working Draft 11 July 2006(XQuery更新工具)。l XQueryUFReq(WD: 2005.7.3)XQuery Update Facility Requirements, W3C Working Draft 3 June 2005(XQuery更新工具需求)。l XQueryUFUC(WD: 2006.5.8)XQuery Update Facility Use Cases, W3C Working Draft 8 May 2006(XQuery更新工具使用案例)。W3C已经开始着手制订XQuery标准的下一个版本1.1:l XQueryReq 1.1(WD: 2007.3.23)XML Query (XQuery) 1.1 Requirements, W3C Working Draft 23 March 2007(XML查询 (XQuery) 1.1需求)。l XQuerySEReq 1.0(WD: 2007.3.23)XQuery Scripting Extension 1.0 Requirements, W3C Working Draft 23 March 2007(XQuery脚本扩展)。由于篇幅和时间的限制,这里只简单介绍主标准XQuery 1.0的一些基本内容。2)语法生成式XQuery的语法采用与XML 1.0类似的EBNF(Extended Backus-Naur Form扩展巴克斯-诺尔范式)来描述,但是也有一些区别。例如,在XQuery的生成式中,白空符是无关紧要的。在XQuery 1.0中,共有140条语法生成式(grammar production)规则,现罗列如下:1 Module := VersionDecl? (LibraryModule | MainModule) 2 VersionDecl := xquery version StringLiteral (encoding StringLiteral)? Separator 3 MainModule := Prolog QueryBody 4 LibraryModule := ModuleDecl Prolog 5 ModuleDecl := module namespace NCName = URILiteral Separator 6 Prolog := (DefaultNamespaceDecl | Setter | NamespaceDecl | Import) Separator)* (VarDecl | FunctionDecl | OptionDecl) Separator)* 7 Setter := BoundarySpaceDecl | DefaultCollationDecl | BaseURIDecl | ConstructionDecl | OrderingModeDecl | EmptyOrderDecl | CopyNamespacesDecl 8 Import := SchemaImport | ModuleImport 9 Separator := ; 10 NamespaceDecl := declare namespace NCName = URILiteral 11 BoundarySpaceDecl := declare boundary-space (preserve | strip) 12 DefaultNamespaceDecl := declare default (element | function) namespace URILiteral13 OptionDecl := declare option QName StringLiteral 14 OrderingModeDecl := declare ordering (ordered | unordered) 15 EmptyOrderDecl := declare default order empty (greatest | least) 16 CopyNamespacesDecl := declare copy-namespaces PreserveMode , InheritMode 17 PreserveMode := preserve | no-preserve 18 InheritMode := inherit | no-inherit 19 DefaultCollationDecl := declare default collation URILiteral 20 BaseURIDecl := declare base-uri URILiteral 21 SchemaImport := import schema SchemaPrefix? URILiteral (at URILiteral (, URILiteral)*)? 22 SchemaPrefix := (namespace NCName =) | (default element namespace) 23 ModuleImport := import module (namespace NCName =)? URILiteral (at URILiteral (, URILiteral)*)? 24 VarDecl := declare variable $ QName TypeDeclaration? (:= ExprSingle) | external) 25 ConstructionDecl := declare construction (strip | preserve) 26 FunctionDecl := declare function QName ( ParamList? ) (as SequenceType)? (EnclosedExpr | external) 27 ParamList := Param (, Param)* 28 Param := $ QName TypeDeclaration? 29 EnclosedExpr := Expr 30 QueryBody := Expr 31 Expr := ExprSingle (, ExprSingle)* 32 ExprSingle := FLWORExpr | QuantifiedExpr | TypeswitchExpr | IfExpr | OrExpr33 FLWORExpr := (ForClause | LetClause)+ WhereClause? OrderByClause? return ExprSingle 34 ForClause := for $ VarName TypeDeclaration? PositionalVar? in ExprSingle (, $ VarName TypeDeclaration? PositionalVar? in ExprSingle)* 35 PositionalVar := at $ VarName 36 LetClause := let $ VarName TypeDeclaration? := ExprSingle (, $ VarName TypeDeclaration? := ExprSingle)* 37 WhereClause := where ExprSingle 38 OrderByClause := (order by) | (stable order by) OrderSpecList 39 OrderSpecList := OrderSpec (, OrderSpec)* 40 OrderSpec := ExprSingle OrderModifier 41 OrderModifier := (ascending | descending)? (empty (greatest | least)? (collation URILiteral)? 42 QuantifiedExpr := (some | every) $ VarName TypeDeclaration? in ExprSingle (, $ VarName TypeDeclaration? in ExprSingle)* satisfies ExprSingle 43 TypeswitchExpr := typeswitch ( Expr ) CaseClause+ default ($ VarName)? return ExprSingle 44 CaseClause := case ($ VarName as)? SequenceType return ExprSingle 45 IfExpr := if ( Expr ) then ExprSingle else ExprSingle 46 OrExpr := AndExpr ( or AndExpr )* 47 AndExpr := ComparisonExpr ( and ComparisonExpr )* 48 ComparisonExpr := RangeExpr ( (ValueComp | GeneralComp | NodeComp) RangeExpr )? 49 RangeExpr := AdditiveExpr ( to AdditiveExpr )? 50 AdditiveExpr := MultiplicativeExpr ( (+ | -) MultiplicativeExpr )* 51 MultiplicativeExpr := UnionExpr ( (* | div | idiv | mod) UnionExpr )* 52 UnionExpr := IntersectExceptExpr ( (union | |) IntersectExceptExpr )* 53 IntersectExceptExpr := InstanceofExpr ( (intersect | except) InstanceofExpr )* 54 InstanceofExpr := TreatExpr ( instance of SequenceType )? 55 TreatExpr := CastableExpr ( treat as SequenceType )? 56 CastableExpr := CastExpr ( castable as SingleType )? 57 CastExpr := UnaryExpr ( cast as SingleType )? 58 UnaryExpr := (- | +)* ValueExpr 59 ValueExpr := ValidateExpr | PathExpr | ExtensionExpr 60 GeneralComp := = | != | | | = 61 ValueComp := eq | ne | lt | le | gt | ge 62 NodeComp := is | 63 ValidateExpr := validate ValidationMode? Expr 64 ValidationMode := lax | strict 65 ExtensionExpr := Pragma+ Expr? 66 Pragma := (# S? QName (S PragmaContents)? #) /* ws: explicit */ 67 PragmaContents := (Char* - (Char* #) Char*) 68 PathExpr := (/ RelativePathExpr?) | (/ RelativePathExpr) | RelativePathExpr /* xgs: leading-lone-slash */ 69 RelativePathExpr := StepExpr (/ | /) StepExpr)* 70 StepExpr := FilterExpr | AxisStep 71 AxisStep := (ReverseStep | ForwardStep) PredicateList 72 ForwardStep := (ForwardAxis NodeTest) | AbbrevForwardStep 73 ForwardAxis := (child :) | (descendant :) | (attribute :) | (self :) | (descendant-or-self :) | (following-sibling :) | (following :) 74 AbbrevForwardStep := ? NodeTest 75 ReverseStep := (ReverseAxis NodeTest) | AbbrevReverseStep 76 ReverseAxis := (parent :) | (ancestor :) | (preceding-sibling :) | (preceding :) | (ancestor-or-self :) 77 AbbrevReverseStep := . 78 NodeTest := KindTest | NameTest 79 NameTest := QName | Wildcard 80 Wildcard := * | (NCName : *) | (* : NCName) /* ws: explicit */ 81 FilterExpr := PrimaryExpr PredicateList 82 PredicateList := Predicate* 83 Predicate := Expr 84 PrimaryExpr := Literal | VarRef | ParenthesizedExpr | ContextItemExpr | FunctionCall | OrderedExpr | UnorderedExpr | Constructor 85 Literal := NumericLiteral | StringLiteral 86 NumericLiteral := IntegerLiteral | DecimalLiteral | DoubleLiteral 87 VarRef := $ VarName 88 VarName := QName 89 ParenthesizedExpr := ( Expr? ) 90 ContextItemExpr := . 91 OrderedExpr := ordered Expr 92 UnorderedExpr := unordered Expr 93 FunctionCall := QName ( (ExprSingle (, ExprSingle)*)? )94 Constructor := DirectConstructor | ComputedConstructor 95 DirectConstructor := DirElemConstructor | DirCommentConstructor | DirPIConstructor 96 DirElemConstructor := | ( DirElemContent* ) /* ws: explicit */ 97 DirAttributeList := (S (QName S? = S? DirAttributeValue)?)* /* ws: explicit */ 98 DirAttributeValue := ( (EscapeQuot | QuotAttrValueContent)* ) | ( (EscapeApos | AposAttrValueContent)* ) /* ws: explicit */ 99 QuotAttrValueContent := QuotAttrContentChar | CommonContent 100 AposAttrValueContent := AposAttrContentChar | CommonContent 101 DirElemContent := DirectConstructor | CDataSection | CommonContent | ElementContentChar 102 CommonContent := PredefinedEntityRef | CharRef | | | EnclosedExpr 103 DirCommentConstructor := /* ws: explicit */ 104 DirCommentContents := (Char - -) | (- (Char - -)* /* ws: explicit */ 105 DirPIConstructor := /* ws: explicit */ 106 DirPIContents := (Char* - (Char* ? Char*) /* ws: explicit */ 107 CDataSection := /* ws: explicit */ 108 CDataSectionContents := (Char* - (Char* Char*) /* ws: explicit */ 109 ComputedConstructor := CompDocConstructor | CompElemConstructor | CompAttrConstructor | CompTextConstructor | CompCommentConstructor | CompPIConstructor 110 CompDocConstructor := document Expr 111 CompElemConstructor := element (QName | ( Expr ) ContentExpr? 112 ContentExpr := Expr 113 CompAttrConstructor := attribute (QName | ( Expr ) Expr? 114 CompTextConstructor := text Expr 115 CompCommentConstructor := comment Expr 116 CompPIConstructor := processing-instruction (NCName | ( Expr ) Expr? 117 SingleType := AtomicType ? 118 TypeDeclaration := as SequenceType 119 SequenceType := (empty-sequence ( ) | (ItemType OccurrenceIndicator?) 120 OccurrenceIndicator := ? | * | + /* xgs: occurrence-indicators */ 121 ItemType := KindTest | (item ( ) | AtomicType 122 AtomicType := QName 123 KindTest := DocumentTest | ElementTest | AttributeTest | SchemaElementTest | SchemaAttributeTest | PITest | CommentTest | TextTest | AnyKindTest 124 AnyKindTest := node ( ) 125 DocumentTest := document-node ( (ElementTest | SchemaElementTest)? ) 126 TextTest := text ( ) 127 CommentTest := comment ( ) 128 PITest := processing-instruction ( (NCName | StringLiteral)? ) 129 AttributeTest := attribute ( (AttribNameOrWildcard (, TypeName)?)? ) 130 AttribNameOrWildcard := AttributeName | * 131 SchemaAttributeTest := schema-attribute ( AttributeDeclaration ) 132 AttributeDeclaration := AttributeName 133 ElementTest := element ( (ElementNameOrWildcard (, TypeName ?)?)? ) 134 ElementNameOrWildcard := ElementName | * 135 SchemaElementTest := schema-element ( ElementDeclaration ) 136 ElementDeclaration := ElementName 137 AttributeName := QName 138 ElementName := QName 139 TypeName := QName 140 URILiteral := StringLiteral 2基础XQuery的基本组成模块为表达式(expression)一个Unicode字符串。该语言提供了几种表达式,可由关键字、符号和操作数构成。通常,表达式的操作数是另一些表达式。XQuery允许表达式完全一般性地被嵌套。(但是,不像纯功能语言,当在变量的声明中包含新节点的构造时,它不允许变量替换)似XML,XQuery是一种区分大小写的语言。XQuery中的关键字使用小写字符,而且不被保留,即在XQuery表达式中的名字,允许与关键字相同,但是下列无前缀的函数名除外:attribute、comment、document-node、element、empty-sequence、if、item、node、processing-instruction、schema-attribute、schema-element、text、typeswitch。定义:在数据模型XDM中,值(value)始终是一个序列;序列(sequence)是零或多个项的有序集;项(item)是一个原子值或节点;原子值(atomic value)是定义在XML Schema中的原子类型(atomic type)值空间中的一个值;节点(node)是定义在XDM中的节点类型(node kinds)之一的一个实例;每个节点都具有唯一的节点标识(node identity)、类型值和串值,此外,某些节点还具有名称。节点的类型值(typed value)是零或多个原子值的序列;节点的串值(string value)是一个xs:string类型的值;节点的名称(name)是一个 xs:QName类型的值。定义:恰好包含一个项的序列被称为单元集(singleton);一个项等同于包含该项的单元集序列。序列是绝不嵌套的,例如1, (2, 3), ( )被组合成一个单一的结果序列(1, 2, 3)。包含零个项的序列被称为空序列(empty sequence)。术语XDM实例(XDM instance)被用作属于值(value)的同义词,表示该数据模型中的节点和/或原子值的无约束序列。XQuery中的名字(name)被称为QNames(限定名),与XML命名空间标准中的语法一致(由可选的命名空间前缀与本地名组成,如果存在命名空间前缀,则在命名空间前缀与本地名之间用冒号分隔)。可以利用把命名空间前缀解析为命名空间URI的方法,将词汇QNames转换成扩展限定名(expanded QName)。命名空间URI,是按照XML Schema中的xs:anyURI类型的规则,进行了白空标准化的。如果两个扩展限定名的命名空间URI相同且本地名相同(即使它们的命名空间前缀不同),则它们是相等的。下列命名空间前缀已被XQuery预先声明,并且被绑定到了固定的命名空间URI上:l xml = /XML/1998/namespacel xs = /2001/XMLSchemal xsi = /2001/XMLSchema-instancel fn = /2005/xpath-functionsl local = /2005/xquery-local-functions元素节点具有域内命名空间(in-scope namespaces)一种命名空间绑定(namespace bindings)的集合,其中的每个命名空间绑定,将命名空间前缀与其URI关联在一起。从而定义了,可在元素的范围内,解释QNames的命名空间前缀集。对给定的元素,命名空间的绑定可以为空前缀。在此元素范围内,该命名空间的URI绑定到缺省的命名空间。2.1表达式上下文给定表达式的表达式上下文(expression context),由所有能影响表达式结果的信息组成。这些信息被分成被称作静态上下文(static context)和动态上下文(dynamic context)的两类。2.1.1 静态上下文表达式的静态上下文(static context)是在(求值之前)静态分析表达式期间的可用信息。这些信息可被用于确定表达式是否含有静态错误。如果表达式的解析,依赖于静态上下文中的某些没有赋值的构件,则会出现静态错误。静态上下文的各个构件汇总如下:l XPath 1.0兼容模式(XPath 1.0 compatibility mode)XQuery设置该构件的值为假。l 静态可知命名空间(Statically known namespaces)定义所有在静态处理给定表达式期间可知的命名空间的一个(前缀,URI)对偶集。这些URI,是按照XML Schema中的xs:anyURI类型的规则,进行了白空标准化的。与作为元素节点的动态特性的域内命名空间不同,静态可知命名空间是表达式的一种静态特性。l 缺省元素/类型命名空间(Default element/type namespace)一个命名空间URI或none。l 缺省函数命名空间(Default function namespace)一个命名空间URI或none。l 域内模式定义(In-scope schema definitions)对在处理表达式期间,处于范围内的所有元素声明、属性声明和schema类型定义的一种通用术语。包含下列三个部分:n 域内模式类型(In-scope schema types)每个模式类型被一个扩展QName(对命名类型)或一个实现相关类型标识符(对匿名类型)所标识。域内模式类型包括预定义的模式类型。如果支持模式输入特征,域内模式类型还包括输入模式中的所有类型定义。n 域内元素声明(In-scope element declarations)每个模式类型被一个扩展QName(对顶层元素声明)或一个实现相关元素标识符(对局部元素声明)所标识。如果支持模式输入特征,域内元素声明还包括输入模式中的所有元素声明。元素声明包含关于替换组关系的信息。替换组(substitution group)被定义在XML Schema的第一部分中,它由一个给定元素(称为头元素head element)牵头,包含一个元素的集合,可用该集合中的元素来替换头元素,而不会影响模式验证的结果。n 域内属性声明(In-scope attribute declarations)每个模式类型被一个扩展QName(对顶层属性声明)或一个实现相关属性标识符(对局部属性声明)所标识。如果支持模式输入特征,域内属性声明还包括输入模式中的所有属性声明。l 域内变量(In-scope variables)一个(扩展QName,类型)对的集合。它定义在表达式内可引用变量的集合。其中,“扩展QName”为变量的名称,“类型”为变量的静态类型。序言(Prolog)中的变量声明被添加到域内变量中。绑定变量的表达式(如let、for、some或every表达式)利用新的绑定变量及其类型来扩展其子表达式中的域内变量。在函数声明(function declaration)中,域内变量被函数参数(function parameters)的名称和类型所扩展。变量的静态类型可在查询中声明或(如果静态类型特征被激活)被定义在XQuery 1.0 and XPath 2.0 Formal Semantics推荐标准中的静态类型推理规则所推出。l 上下文项静态类型(Context item static type)在给定表达式范围内,定义上下文项的静态类型之构件。l 函数签名(Function signatures)可在一表达式内被调用的一个函数集合。每个函数被其扩展QName和参数数量(arity)所唯一标识。除了名称和参数数量之外,每个函数签名还指定函数参数和结果的静态类型。函数签名包括构造函数的签名。l 静态可知对照(Statically known collations)一个由实现定义的(URI, 对照)对的集合。它定义可被用于处理查询和表达式的对照的名称。对照(collation)是一种方式规范,用于字符串和URI的比较和(被扩展后)排序。l 缺省对照(Default collation)l 构造方式(Construction mode)l 排序方式(Ordering mode)l 空序列的缺省排序(Default order for empty sequences)l 边空策略(Boundary-space policy)l 复制命名空间方式(Copy-namespaces mode)l 基URI(Base URI)l 静态可知文档(Statically known documents)l 静态可知缺省对照类型(Statically known default collection type)2.1.2 动态上下文表达式的动态上下文(dynamic context)被定义为在表达式被求值时可用的信息。如果表达式的求值,依赖于动态上下文中的某些没有赋值的部分,则会出现动态错误。动态上下文的各个构件汇总如下。动态上下文包含静态上下文中的所有构件以及下面列出的额外构件。动态上下文的开始三个构件(上下文项、上下文位置和上下文大小)被称为表达式的焦点(focus)。焦点使得处理程序可以知晓表达式正在被处理的是哪个项。某些语言结构,特别是路径表达式E1/E2和谓词E1E2,会为子表达式的求值创建一个新焦点。在这些结构中,对求值E1的结果序列中的每一项,E2都会被求值一次。每次E2被求值时,它被以不同的焦点来求值。E2的求值焦点在下面被称为内部焦点(inner focus),而E1的求值焦点在下面则被称为外部焦点(outer focus)。内部焦点只在E2被求值时才存在。当该求值完成后,包含表达式的求值,继续保持原焦点不变。l 上下文项(context item)l 上下文位置(context position)l 上下文大小(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论