java anytype_9.5.1 AnyType元素

9.5  元素声明

每个模式元素声明映射到EClass中的EAttribute或者EReference,该EClass对应于包含该元素的复杂类型定义;如果属性是全局的,则对应于"DocumentRoot" EClass中的EAttribute或者EReference。

如果其类型简单,元素声明将映射到EAttribute(除了第9.3.5节介绍的特殊情况之外)。或者,如果类型是复杂的,它则映射到EReference。无论是哪种情况,都像下面这样初始化特性的属性:

name =转换为(如有必要)合适Java字段名称的元素的name

eType =对应于元素类型的EDataType或者EClass

lowerBound =元素声明的minOccurs值乘以任何包含模型组的minOccurs,或者对于全局元素或者嵌套在xsd: choice中的元素而言为0

upperBound =元素声明的maxOccurs值乘以任何包含模型组的maxOccurs,或者对于全局元素而言为-2(未指定),参见第9.5.7节

eAnnotations =扩展的元数据EAnnotation

如果元素的类型是预定义的模式类型之一,则将对应EAttribute的eType设置为对应的从XMLType模型创建的EDataType(参见第9.9节)。如果元素有用户定义的简单类型,则将eType设置为从简单类型创建的EDataType,如第9.2节所述。

否则,如果元素声明映射到EReference,eType则被设置为对应于元素的类型的EClass。EReference的containment属性为true,在9.5.3一节描述的情况中除外。

扩展的元数据EAnnotation的details映射包含下列项:

key = "name",value =未被改变的该元素的namekey="kind",value="element"

type="xsd:string"

maxOccurs="unbounded"/>EAttribute

name="mySimple"

eType=".../XMLType#//String"

lowerBound=1

upperBound=-1 (unbounded)

EAnnotation

source=".../ExtendedMetaData"

details="name""mySimple",

"kind" "element"

...

EReference

name="myComplex"

eType="//MyComplexType"

lowerBound=1

upperBound=1

containment=true

EAnnotation

source=".../ExtendedMetaData"

details="name""myComplex",

"kind" "element"

9.5.1  AnyType元素

除了所有XML Schema预定义的简单类型的EDataTypes之外(参见第9.9节),XMLType模型还包含一个名为AnyType的EClass,它对应于xsd:anyType复杂类型。xsd:anyType的元素映射到EReference,但不是这种类型的。相反,EReference的eType是EObject,它是所有EMF对象的基类。

type="xsd:anyType"/>EReference

eType=".../Ecore#//EObject"

...使用EObject作为引用的类型,就允许它使用任何EMF对象的实例作为它的值,这是预期行为。"AnyType" EClass的目的是处理实例包含任意XML内容的情况。例如,当处理没有元数据可用的lax模式中的通配符内容时,"AnyType" EClass的实例(与其他EClass相同,它显式扩展EObject)将被用作该特性的值。这种实例可以表示任意XML元素内容,包括它可能拥有的任何属性和混合文本。

【责任编辑:云霞 TEL:(010)68476606】

点赞 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值