• 7.90 MB
  • 2022-04-22 13:49:32 发布

GBT16656.28-2010工业自动化系统与集成产品数据表达与交换实现方法EXPRESS模式和数据的XML表达(使用XML模式).pdf

  • 267页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'ICS25040.40L67鳕亘中华人民共T-n国国家标准GB/T16656.28—201O/ISO10303—28:2007工业自动化系统与集成产品数据表达与交换第28部分:实现方法:EXPRESS模式和数据的XML表达(使用XML模式)IndustrialautomationsystemsandintegrationIProductdatarepresentationandexchangemPart28:Implementationmethods:XMLrepresentationsofEXPRESSschemasanddata,usingXMLschemas2011—01—14发布(ISO10303—28:2007,IDT)2011-06—01实施丰瞀粥紫瓣訾雠瞥霎发布中国国家标准化管理委员会“”。 标准分享网www.bzfxw.com免费下载目次GB/T16656.28—2010/ISO10303-28:2007前言⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯·引言⋯⋯⋯⋯⋯---⋯⋯⋯⋯--⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯··1范围⋯---⋯⋯⋯⋯-⋯⋯⋯---⋯--⋯⋯⋯⋯⋯⋯⋯⋯⋯.2规范性引用文件⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯.-3术语、定义、缩略语和约定⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯3.11S()103031中定义的术语⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯3.2GB/T16656.11中定义的术语⋯⋯--⋯⋯⋯⋯⋯-⋯⋯⋯3.3XMI,标准中定义的术语⋯⋯⋯--⋯⋯⋯--⋯⋯⋯⋯⋯3.4其他的术语和定义⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯3.5不一致的术语⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯·3.6缩略语⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯·3.7约定⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯4一致性⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯4.1XMI。文档的一致性⋯⋯⋯⋯⋯⋯··⋯⋯-⋯⋯⋯⋯---4.2导出的XML模式文档的一致性⋯⋯---⋯⋯⋯⋯⋯4.3配置文件的一致性⋯⋯⋯⋯⋯⋯--⋯⋯⋯⋯⋯⋯⋯4.4前置处理器的一致性⋯⋯⋯⋯⋯⋯⋯---⋯⋯⋯⋯⋯⋯⋯4.5后置处理器的一致性⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯·4.6XMI.模式生成器的一致性⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯5文档级元素-----⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯··5.1iso1030328文档⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯5.2文档和UOS头信息---⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯·⋯5.3schemapopulation元素⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯··5.4express元素⋯⋯⋯⋯---⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯5.5configuration元素⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯··5.6unitofserialization元素⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯··5.7UOS文档⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯-⋯⋯⋯··5.8配置文档⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯-⋯⋯⋯⋯⋯⋯··5.9企业数据对象⋯⋯⋯⋯⋯---⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯··6导出XMI,模式-··⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯··6.1前提条件⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯--⋯⋯⋯⋯⋯⋯⋯⋯··6.2没有映射的EXPRESS概念⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯··6.3抽象实体数据类型⋯-⋯⋯⋯⋯⋯⋯·⋯⋯⋯⋯⋯⋯⋯⋯-7默认XML模式联编-·⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯--7.1命名约定⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯7.2与EXPRESS数据类型对应的XML模式数据类型⋯⋯··7.3用于EXPRESS自定义数据类型的XML模式定义和声明7.4对应于EXPRESS数据类型的实例元素⋯⋯---⋯⋯⋯··ⅢV●●000,,00m如¨地坞MM¨MMM¨¨¨¨""卵帖● GB/T16656.28—2010/ISO10303—28:20077.5EXPRESS实体数据类型的XML模式定义和声明⋯⋯⋯7.6EXPRESS属性的XMI。模式声明⋯⋯⋯-⋯⋯⋯⋯⋯⋯··7.7EXPRESS模式的XML模式和命名空间⋯⋯⋯⋯⋯⋯7.8特定序列化单元的相关语境模式⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯8已配置的XMI,模式联编⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯8.1命名规则(namingconvention)⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯8.2与EXPRESS数据类型对应的XML模式数据类型⋯⋯⋯8.3EXPRESS自定义数据类型的XML模式定义及声明⋯一8.4与EXPRESS数据类型相对应的实例元素⋯⋯··-⋯⋯⋯--8.5EXPRESS实体数据类型的XML模式定义及声明⋯⋯⋯·8.6EXPRESS属性的XML模式声明⋯⋯⋯⋯⋯⋯⋯⋯⋯·8.7EXPRESS模式的XMI.模式和命名空间⋯⋯··⋯⋯⋯·⋯·8.8语境模式中特定的序列化单元---⋯⋯⋯⋯-⋯⋯⋯⋯·9XMI.文档创建⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯·9.1前提条件⋯⋯⋯⋯⋯⋯-⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯·9.2一般xML文档结构⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯·9.3EXPRESS实体实例的表达⋯⋯⋯⋯--⋯⋯⋯-⋯⋯⋯⋯9.4EXPRESS属性的表达⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯·9.5简单值的表达⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯·9.6枚举项的表达⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯·9.7SEI。ECT类型值的表达⋯⋯⋯⋯⋯⋯⋯⋯⋯·⋯⋯⋯⋯⋯9.8聚合值的表达⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯·9.9自定义数据类型值的表达⋯⋯⋯⋯⋯⋯⋯---⋯⋯⋯⋯⋯9.10实例元素中值的表达⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯10配置语言-⋯--⋯------⋯⋯⋯⋯⋯⋯⋯---⋯⋯⋯---⋯⋯⋯⋯一10.1配置元素⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯·10.2配置选项⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯一10.3范围元素⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯10.4配置属性⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯·10.5配置指令的使用范围⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯·⋯·⋯⋯·附录A(规范性附录)用于联编EXPRESS模式的统一资源名附录B(规范性附录)配置语言的XMI.模式⋯⋯⋯⋯⋯⋯⋯附录c(规范性附录)基本XML模式⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯附录D(规范性附录)文档模式⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯附录E(规范性附录)EXPRESS实体实例的有效群⋯⋯⋯⋯附录F(规范性附录)信息对象注册⋯-⋯⋯⋯⋯⋯⋯附录G(资料性附录)配置语言示例⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯参考文献⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯---⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯弱∞记孔%%”∞%MⅢmⅢmmm邶mm瑚m啪m研姗ⅢmⅢ猢|萋l萎娜狮 标准分享网www.bzfxw.com免费下载刖吾GB/T16656.28—2010/1SO10303-28:2007G13/T16656((工业自动化系统与集成产品数据表达与交换》是由多部分组成的标准,各部分单独出版。GB/T16656的所属各部分又组成多个子系列,即:一一第1部分至第19部分规定了描述方法;第20部分至第29部分规定了实现方法;一第30部分至第39部分规定了一致性测试方法与框架;一第40部分至第59部分规定了集成通用资源;第100部分至第1§9部分规定了集成应用资源;第200部分至第299部分规定了应用协议;一第300部分至第399部分规定了抽象测试套件;一第400部分至第499部分规定了应用模块;一第500部分至第599部分规定了应用解释构造;一第1000部分至第1999部分规定了应用模块。GB/T16656《工业自动化系统与集成产品数据表达与交换》现已发布和即将发布的包括以下部分:第1部分:概述与基本原理;第11部分:描述方法:EXPRESS语言引用手册;一第21部分:实现方法:交换文件结构的纯正文编码;一一第28部分:实现方法:EXPRESS模式和数据的XMI。表达(使用XML模式);一一第31部分:一致性测试方法论与框架:基本概念;~第32部分:一致性测试方法论与框架:对测试实验室与客户的要求;一第34部分:一致性测试方法论与框架:应用协议实现的抽象测试方法;一第41部分:集成通用资源:产品描述与支持原理;——第42部分:集成通用资源:几何与拓扑表达;一第43部分:集成通用资源:表达结构;一第44部分:集成通用资源:产品结构配置;一第45部分:集成通用资源:材料;一第46部分:集成通用资源:可视化显示;一第47部分:集成通用资源:形状变化公差;第49部分:集成通用资源:工艺过程结构和特性;一第51部分:集成通用资源:数学表达;第54部分:集成通用资源:分类和集合论;第s5部分:集成通用资源:过程与混合表达;第56部分:集成通用资源:状态;第101部分:集成应用资源:绘图;——第105部分:集成应用资源:运动学;——第20l部分:应用协议:显式绘图;一第202部分:应用协议:相关绘图;第203部分:应用协议:配置控制设计;Ⅲ GB/T16656.28—2010/iso10303-28:2007——第238部分:应用协议:计算机数值控制器用的应用解释模型;一一第50】部分:应用解释构造:基于边的线框;——第502部分:应用解释构造:基于壳的线框;——第503部分,应用解释构造:几何有界二维线框;——第504部分:应用解释构造:绘图注释;——第505部分:应用解释构造:图样结构与管理;——第506部分:应用解释构造:绘图元素;——第507部分:应用解释构造:几何有界曲面;——第508部分:应用解释构造:非流形曲面;——第509部分:应用解释构造:流形曲面;——第513部分应用解释构造:基本边界表达;——第520部分:应用解释构造:相关绘图元素;——第l001部分:应用模块:外观赋值;——第1002部分:应用模块:颜色;——第1003部分:应用模块:曲线外观;——第1004部分:应用模块:基本几何形状;——第1005部分:应用模块:基本拓扑;——第1006部分:应用模块:基础表达;——第1007部分:应用模块:通用曲面外观;——第1008部分:应用模块:层赋值;——第1009部分:应用模块:形状外观和层。本部分是GB/T16656的第28部分。16656的本部分等同采用ISO10303—28:2007{(工业自动化系统与集成产品数据表达与交换第28部分实现方法:EXPRESS模式和数据的XMI。表达(使用XMI,模式)》,其技术内容和结构与1SO10303—28:2007保持一致。为便于使用,做了如下编辑性修改:a)删去了Is()前言;b)对于带下划线的用于EXPRESS语言描述的各黑体英文实体名、属性名和函数名等,为了维护其英文原意,在本部分中,都使用其英文原名,仅当其作为标题时,我们在该英文名前增加了其归属的类型说明。本部分的附录A、附录B、附录c、附录D、附录E、附录F为规范性附录,附录G为资料性附录。本部分由中国机械工业联合会提出。本部分由全国自动化系统与集成标准化技术委员会(SAC/TCl59)归口。本部分主要起草单位:中国标准化研究院。本部分主要起草人:詹俊峰、李文武、杨青海、刘守华、周歆华、柳青。Ⅳ 标准分享网www.bzfxw.com免费下载引言GB/T16656.28—2010/iso10303—2812007GB/T16656是一个计算机可解释的用于产品信息表达和产品数据交换的技术标准。其目的是对产品全生命周期提供一种独立于任何特定系统、能够描述产品数据的中性机制。其描述功能不仅适合于中性文件的交换,而且也是实现和共享产品数据库及存档的基础。GB/T16656的本部分属于实现方法系列。GB/T16656的本部分规定了将EXPRESS语言(GB/T16656.11定义的)描述的模式和符合EXPRESS模式的数据表达为XMI。文档的方法,这样就可以使用XMI。以及各类支持XMI.技术的软件工具交换EXPRESS描述的产品数据,同时也便于将这些产品数据集应用于XMI,表达的“电子商务”交易业务中。为了理解GB/T16656本部分的技术内容,用户应了解EXPRESS语言、XMI,模式语言、XMI。以及XMI。相关的标准。对于与EXPRESS模式相应的数据表达,GB/T16656的本部分使用XML模式语言形式化地规定了符合此模式的交换文档的结构。有些文档的元素表达了符合EXPRESS模式的数据集,GB/T16656的本部分使用XML模式的类型定义和由EXPRESS模式说明导出的元素声明来描述这些元素的结构。GB/T16656的本部分还规定了与导出的XMI。模式匹配的XMI.数据编码规则。为了满足使用符合交换文档产生的各种矛盾需求.(IB/T16656的本部分还定义了特定的配置指令,用于说明导出的XMI。模式中可选的结构以及可选的编码规则。注意:GB/T16656的本部分目的是为了软件实现,当软件开发是基于翻译成非ISO官方语言的本部分时,将会导致计算机通信之间的不兼容。建议任何软件实现的开发应基于ISO官方语言的文字。 1范围GB/T16656.28—2010/Iso10303-28:2007工业自动化系统与集成产品数据表达与交换第28部分:实现方法:EXPRESS模式和数据的XML表达(使用XML模式)GB/T16656的本部分规定了如何使用可扩展置标语言(XMI.)表达用EXPRESS数据描述语言(GB/T16656.11)描述的模式以及符合该模式的数据。GB/‘T16656的本部分通过规定交换文件的完整XML模式和对应于描述交换数据集的EXPRESS模式的附加XML模式,形式化地规定了XML表达。本部分适用于:——包含EXPRESS模式及符合该模式的数据的XML文档的格式描述(见第5章);——对于任意一个EXPRESS模式,描述与该模式对应的XMI。模式,并形式化地描述符合该模式的数据的XMI。表达(见第6章);——ExPREss数据类型的取值表达为XMI.元素内容和XML属性值的描述(见第9章);—~描述可用于说明符合EXPRESS模式的数据集的XML表达的结构选项的配置指令集(见第10章)。本部分不适用于:——描述依赖于任何特定EXPRESS模式语义目的的XML模式声明或定义,以区别于EXPRESS语言声明;——描述从XML模式语言到EXPRESS语言的映射;——描述从一个EXPRESS模式导出的XML模式到另一个EXPRESS模式的映射。2规范性引用文件下列文件中的条款通过GB/T16656的本部分的引用而成为GB/T16656本部分的条款。凡是注H期的引用文件,其随后所有的修改单(不包括勘误的内容)或修订版均不适用于本部分,然而,鼓励根据本部分达成协议的各方研究是否可使用这些文件的最新版本。凡是不注日期的引用文件,其最新版本适用于本部分。GB/T16262.1—2006信息技术抽象语法记法一(ASN.1)第1部分:基本记法规范(ISO/1EC8824—1:2002,IDT)GB/T16656.112010工业自动化系统与集成产品数据表达与交换第11部分:描述方法:EXPRESS语言引用手册(ISO10303一ll:2004,rDT)IsO6391:2002语种名称代码第1部分:2字母代码IsO10303—1:1994工业自动化系统与集成产品数据表达与交换第1部分:概述与基本原理ISO1030322:1998工业自动化系统与集成产品数据表达与交换第22部分:实现方法:标准数据访问接口ISO31661:2006世界各国和地区名称代码第1部分:国家代码统一资源标识符(URI):通用语法。IETFRFC2396,1998年8月。可从以下网址获得:XML模式第2部分:数据类型。W3C建议,2001年5月2日。可从以下网址获得:(http://www.w3.org/TR/xmlschema一2/)Xpointer框架V1.0。W3C建议,2003年3月25日。可从以下网址获得:(http://www.w3.org/TR/xptrframework/)注:IE’FF表示InternetEngineeringTaskForce互联网工程任务组,W3C表示WorldWideWebConsortium万维网联盟:3术语、定义、缩略语和约定下列术语和定义适用于GB/T16656的本部分。3.1ISO10303—1中定义的术语ISO103031中确立的下列术语和定义适用于本部分。——数据Data;——信息in{ormation。3.216656.11中定义的术语16656.11中定义的下列术语适用于本部分。3.2.1数据类型datatype值域。注:由于GB/T16656的本部分使用了两种数据类型标准的术语,因此该术语数据类型(datatype)前通常加上前缀“EXPRESS”或“XMI。模式”,以区分不同的使用语境。3.2.2EXPRESS属性EXPRESSattributeEXPRESS实体实例的特性,用EXPRESS数据类型的值和表明该值在实例中作用的名称来表达。3.2.3EXPRESS数据类型EXPRESSdatatypeEXPRESS语言语法中规定的数据类型。3.2.4EXPRESS实体实例EXPRESSentityinstance实体实例entityinstance命名的数据单元,表达实体数据类型定义的域中的~个信息单元。3.2.5EXPRESS语言元素EXPRESSlanguageelementEXPRESS语言中的概念,以及从广义而言的句法表达。注:GB/T16656的本部分中使用术语“元素”通常是指XML数据结构的基本句法部分。3.2.6基本类型fundamentaltypeEXPRESS数据类型,用于确定自定义数据类型的值的表达。注:由于自定义数据类型可以由另一个自定义数据类型来定义,所以“基本类型”形式化的递归定义是:“自定义类型的基本类型是基础类型的基本类型,非自定义类型的数据类型的基本类型是该数据类型自身。’’2 GB/T16656.28—2010/iso10303—28:20073.2.7广义数据类型generalizeddatatypeEXI’RESS数据类型,用于描述特定数据类型的泛化,仅适用于非常特殊的语境中。3.2.8独立实体实例independententityinstanceEXPRESS实体实例,出现在一个模式实例中,且不需用于对模式实例中其他实体实例的特征表达。注:非独立实体实例(dependententityinstance)在模式实例中出现是因为它是某些其他实体实例的属性值(的组成部分)。独立实体实例(independententityinstance)尽管也可以发挥类似作用,但不符合基本原理。32.9模式实例schemainstanceEXPRESS实体实例的集合,这些实例是为了某些目的而成组的,该集合取决于单一的EXPRE.%S模式。3.2.10基础类型underlyingtype自定义数据类型的值域,由自定义数据类型(例如基本类型)的EXPRESS类型声明中的语法对象underlying—type描述。注:来自GB/T16656.11。3.3XML标准中定义的术语下列术语和定义适用于GB/T16656的本部分。为方便用户,本部分复制了万维网联盟(W3C)和互联网工程任务组(IETF)的推荐标准中定义的术语。注:对于完全从其他标准中复制的定义,其后用方括号来说明所引用的来源。对于所采用的其他标准的定义,其后附加解释性注释。3.3.1元素element‘XML元素XMLelementXMI。文档逻辑结构的有限组成部分,它有类型且可能有XMI.属性和内容。XML1.03.3.2信息集infoset抽象数据集,它提供定义的一致集,在需要引用XML文档信息的描述中使用。[XML模式第1部分:结构]。3.33合格名qualifiednameXMI.元素、属性或数据类型的完整名称,包括局部名称和标识该局部名称被定义/声明的命名空间的前缀。[xMI.中的命名空间]3.3.4统一资源标识符UniformResourceIdentifier;URI标识一个抽象或物理资源的简洁字符串。EIETFRFC2396:统一资源标识符(URI):通用语法]3.3.5XML属性XMLattribute与一个XMI,元素关联的名称/取值对。EXMI。1.ol3 GB/T16656.28—2010/ISO10303—28120073.3.6XML文档XMLdocument(文本)数据对象,符合XMI。良好格式要求。[XMI。1.O]3.3.7XML模式XMLschemaXMI。模式语言中用于说明XML文档的类结构的声明和定义主体。EXMI,模式第1部分:结构]注:XML模式中术语“模式”是指一组声明和定义,但为了区分XML模式和EXPRESS中的术语“模式”,16656的本部分在XML模式的术语前增加前缀“XMI。”(见35)。不过这也意味着只有“模式”这个词首字母的大写才能区分XMI。模式语言的名称和“模式”概念。GB/T16656的本部分对两个XMI。模式进行了特别处理,分别用特定的术语“导出的XMI。模式”和“基本的XML模式”来引用它们。3.3.8XML模式组件XMLSchemacomponentXML模式语言中的概念,也包括概念的语法表达。EXMI,模式第1部分:结构]注:GB/T16666的本部分使用术语“组件”通常是指取值,这些值是构成一个聚合值的取值集合的成员。3.3.9XML模式数据类型XMLSchemadatatypeXML数据类型XMLdatatype在XML模式语言的语法中所规定的数据类型。[XMI。模式第2部分:数据类型]3.3.10XML模式语言XMLSchemalanguageXML模式XMLschema用于说明XML文档结构的形式化语言,在《XML模式第1部分:结构》中规定。3.4其他的术语和定义下列术语和定义适用于GB/T16656的本部分。3.4.1存取器属性aceessorattribute表达EXPRESS属性及其属性值的XML属性(表达实体实例的XMI。元素的属性)。(对比:存取访问元素)3.4.2存取器元素accessorelement表达EXPRESS属性及其属性值的XMI,元素。(对比:存取访问属性)3.4.3聚合值aggregatevalueEXPRESS聚合数据类型的值,或基本类型是EXPRESS聚合数据类型的自定义数据类型的值。3.4.4基类型base-typeEXPRESS聚合数据类型的成员值的数据类型。3.4.5引用实例元素by—referenceinstanceelement不包括XML内容但包括了表达具体值的值实例元素的引用的实例元素。d GB/T16656.28—2010/ISO10303—28:200734.6值实例元素by—valueinstanceelement内容为数据值的表达或者EXPRESS实体实例的完整表达的实例元素。3.4.7特征化实体实例characterizedentityinstanceEXPRESS实体实例,在相关语境模式中有一个EXPRESS实体数据类型被声明具有或继承了该实例中出现的所有特性。3.4.8语境模式contextschema控制模式governingschema对于一个UOS元素而言,包含了该元素中的数据模型的EXPRESS模式。3.4.9最深层基类型deepestbase-type对于嵌套的聚合数据类型,在聚合值(可能是多维的)的XMI。表达中某个嵌套层的基类型的值被用作组件元素。3.4.10最深层基础类型deepestunderlyingtype对于一个嵌套的聚合数据类型,在某些嵌套层遇到的首个基类型,它不是匿名聚合类型,也不是基础类型为聚合类型的自定义数据类型,也不是列表中包含了单一的自定义数据类型且其基础数据类型为聚合数据类型的SEI。ECT类型。34.11默认映射defaultmapping对于一个给定的EXPRESS模式,按照GB/T16656本部分的规定使用所有配置指令和非附加配置指令的默认值导出XML模式。3.4.12导出XML模式derivedXMLschema从EXPRESS模式导出的XML模式,与所给定的EXPRESS模式和配置文件相对应。3.4.13独立元素independentelement作为UOS元素的直接子元素出现的实例元素。3.4.14实例元素instanceelement表达一个EXPRESS数据类型的值的XML元素。注:一个实例元素可能是一个直接表达值的取值实例元素,或者是一个不包含值表达而是引用一个包含值表达的取值素的引用实例元素。3.4.15值列表list-of-values一个由单一字符串组成的聚合值的XMI。表达,字符串中组成元素的编码由空格(sPAcE)符隔开,按照顺序排列。3.4.16嵌套聚合数据类型nestedaggregationdatatypeEXPRESS聚合数据类型,它作为另一个聚合数据类型的基类型。3.4.17元素序列sequence-of-elements由XML元素序列组成的聚合值的XML表达,XMI.元素序列中每个元素的内容都是单个成员值的编码。(对比:值列表)。 GB/T16656.28—2010/iso10303-28:20073.4.18非特性化实体实例uneharacterizedentityinstance在相关语境模式中不存在具有表达实体实例所需的所有属性的单个实体数据类型的实体实例。3.4.19序列化单元unitofserialization;UOS一个模式实例的XMl.表达——由单一交换模式描述的EXPRESS实体实例的集合以及所有属性值。3.5不一致的术语EXPRESS和XMI。(模式)使用相似或相同的术语描述相关概念。GB/T16656的本部分中,使用限定词“XMI。”和“EXPRESS”区分两种不同的语义环境。这些限定词用于下列术语:属性attribute一数据类型datatype元素element——实体entity——模式schema特例:术语“元素”在没有加限定词“EXPRESS”时,通常是指XML“元素”。在很多情况下,“元素”是某个术语的组成部分,表示GB/T16656的本部分所定义的XMI,元素的特定类型。注:GB/T16656的本部分中没有使用XMI。中的“实体”。术语“实体”通常指一个EXPRESS实体数据类型或实体实例,限定词“EXPRESS”总是在某段落中首次使用时出现。3.6缩略语下列缩略语适用于GB/T16656的本部分。IANA互联网地址分配机构(InternetAssignedNamesAuthority)IETF互联网工程任务组(InternetEngineeringTaskForce)MIME多用途互联网邮件扩展(Multi—purposeInternetMailExtension)URI统一资源标识符(UniformResourceIdentifier)URN统一资源命名(UniformResourceName)XMI。可扩展置标语言(ExtensibleMarkupI。anguage)3.7约定下列编排约定适用于GB/T】6656的本部分。3.7.1文字约定——ExPREss语言中的关键词用大写字母表达;——xML模式中的每个字采用Courier字体表达;——xMI。模式参数用耜斜雄courier文本表达;——配置指令用粗体的文本来表达;——在介绍性或定义性的文字中,术语的表达用斜体文字突出。当省略号“⋯⋯”出现在正文中时,它表达列表的所有其他成员。当省略号“⋯⋯”出现在一个示例中时,表示(EXPRESS或XML)模式的组成部分是不完整的。3.7.2命名空间约定为了明确区分,GB/T16656的本部分使用表1中的命名空间前缀引用表1中相应URI标识的命名空间。 GB/T16656.28—201O/ISO10303—28.2007表1命名空间前缀前缀关联的命名空间uRlhttp://www.w3.org/200l/XMLSehemahttp:|{㈣.w3.org/2001/XMLSehema—instanceexp:urn:iso:std:iso:1030:28:ed2:teeh:XMLschema:common(见附录c中的定义)cnf:urn:iso:std:iso:1030:28:ed2;tech:XMLschema:configuration—language(见附录B中的定义)doe:uril:iso:std:iso:1030:28:ed2:tech:XMLschema:document(见附录D中的定义)Tns与EXPRESS相关语境模式关联的目标命名空间(见77或87)4~致性本章规定声称符合GB/T16656本部分的XML文档或文档处理程序必须要满足的要求,本章为以下各项定义了一致性要求:⋯xMI.实例文档;——从EXPRESS模式导出的XMI。模式;——配置文件;——生成XML实例文档的前置处理器;一一读人XMI,实例文档的后置处理器;——由EXPRESS模式产生XML模式的处理器。4.1XML文档的一致性XML实例文档是一个表达EXPRESS定义数据的XMl.文档。有三类XMI。实例文档符合16656本部分的要求:——iso一1030328文档,见4.1.1;——UOS文档,见4.1.2;——被配置的文档,见4.1.2。在本条中,如果在文档的postschema—validation信息集中的每个元素和每个属性的有效性属性都是“有效的”,则该文档的XML信息集(infoset)应被认为是有效的,正如《XMI。模式第1部分:结构》中所定义的。4.1.1iso-10303-28文档的一致性如果一个XMI。文档满足以下所有条件,则它符合iso1030328文搿一致雌的要求:一文档的根元素是一个iso一10303—28元素,见第5章。——is0—10303—28元素的XML信息集对于附录D中定义的文档模式而言是有效的。一如果文档中编码的任何一个数据集符合一个给定的按照GB/T16656.11描述的EXPRESS模式,该EXPRESS模式被指定为此数据集的控制糖茸(governingschema)。一一为基本XML模式(见附录c)中规定的UOS元素编码的每个数据集使用了一个序列化元素的替代单元。——对于每个序列化元素的替代单元,XMI.信息集对于XML模式是有效的,该XMI。模式是按照第6章的规定使用EXPRESS模式和此序列化单元元素描述的配置文件导出的。注1:对于每个数据集来说控制EXPRESS模式可以是不同的。注2:在78或8.8中描述了对应于一个给定的EXPRESS模式的替代U08元素。注3:每个序列化单元元素规定了控制EXPRESS模式和与它对应的配置文件,见5.6和9.2。注4:不要求数据集是个“有效群”,如同在GB/T1665611中的定义。编码数据集和群之间的关系在给定的iso10303—28元素中通过schemapopulation元素规定,见53。4.1.2IlOS文档的一致性如果一个XML文档满足以下所有条件,则它符合UOS文档一致性的要求:7 GB/T16656.28—2010/[so10303-28:2007一一文档的根元素是一个UOS元素。——u。s元素中编码的数据集符合一个给定的按照GB/T16656.11描述的EXPRESS模式,该EXPRESS模式被指定为此数据集的控制攮茸。——u。s元素的XML信息集对于XMI,模式是有效的,该XMI。模式是从第6章描述的控制ExPRESs模式导出的。注:在一个UOS文档中,UOS元素是对应于控制模式的默认映射的元素,即对应于一个空配置文件的元素。4.1.3配置文档的一致性配置文档的一致性应当是由定义已配置XML模式的规范定义。本条的内容只是作为这些规范的引用。若缺少这样的引用规范,则GB/T16656的本部分不定义配置文档的一致性。如果一个XML文档满足以下所有条件,则它对于一个给定的EXPRESS模式和给定的配置文件而言,符合配置文档的一致性要求:——文档的根元素是使用所给定的配置文件从一个给定的EXPRESS模式导出的序列化单元元素,见8.8的描述。——序列化单元元素中编码的数据集符合给定的按照GB/T16656,11描述的EXPRESS模式。——序列化单元元素的XMI。信息集对于XML模式是有效的,该XMI,模式是使用给定的配置文件从第6章描述的控制EXPRESS模式导出的。注:关于创建一个符合GB/T16656本部分的XML实例文档的详细规定见第9章。4.2导出的XML模式文档的一致性如果一个XML文档满足以下所有条件,则它对于一个给定的EXPRESS模式和给定的配置文件而言,符合导出的xML模式文档的一致性要求:~给定的EXPRESS模式符合GB/T16656.11的要求。——对于给定的EXPRE%S模式而言,给定的配置文件应符合配置文件一致性的要求,详见4.3的规定。——文档的内容满足《XML模式第l部分:结构》的第5章中描述的模式有效性约束。一一xMI.模式定义应准确地包含第7章或第8章中规定的定义和声明,根据第6章的规定,XML模式定义将利用给定的配置文件从给定的EXPRESS模式导出。XML模式定义可包含附加的XMI.模式注释(annotation)元素。导出的XMI。模式文档有两个一致性类:——xML模式文档的一{露拦类』:如第6章所示,如果XMI。模式文档除了那些只被包括在一致性类2中的定义和声明外,包括了第7章或第8章中规定的所有定义和声明,则它符合一致性类l的要求。符合一致性类1的导出XMI,模式不应包括第8章规定只能属于一致性类2的任何定义或声明(见10.2.23)。——xMI。模式文档的一致拦类2:如果XMI。模式文档包括第8章中规定的所有定义和声明,且包括所有只属于一致性类2的定义或声明,则它符合一致性类2的要求。注:为了使一个文档符合一致性类2,第6章必须规定导出XML模式应当是配置XMI。模式联编的,详见第8章的规定,且必须使用配置指令generatekeys一“true”。4.3配置文件的一致性如果一个XMI。文档满足以下所有条件,则它对于一个给定的EXPRESS模式而言,符合配置文件的一致性要求:——文档的根元素是一个配置(configuration)元素。——该配置(configuration)元素对于附录B中规定的配置模式而言是有效的。——配置文件符合第10章中有关相关语境模式是给定的EXPRESS模式的规定。注:如果配置文件没有包括第10章中被声明为特定模式的元素,则配置文件符合任意一个EXPRESS模式,但在16656的本部分中,只有在一个给定EXPRESS模式的相关语境中定义一致性才是有意义的。8 GB/T16656.28—2010/ISO10303-28120074.4前置处理器的一致性如果一个软件应用生成的XML实例文档符合GB/T16656本部分4.1的规定,则可称它符合前置处理器的一致性要求。符合前置处理器一致性的软件应用可以是只针对iso1030328文档,也可以是只针对UOS文档,或者是两者。符合前置处理器一致性的软件应用可以是针对任意EXPRESS模式的,或者是只针对特定的EXPRESS模式。前置处理器有三个一致性类:——前置处理器一致拦类』:如果前置处理器针对某些EXPRESS模式可生成符合导出XML模式一致性类1的UOS文档,则它符合一致性类1的要求。——前置处理器一致烂娄2:如果前置处理器针对某些EXPRESS模式可生成符合导出XML模式一致性类1的包含UOS元素的iso10303—28文档和独立的UOS文档,则它符合一致性类2的要求。——前置处理器一致拦娄3:如果前置处理器可生成符合任意EXPRESS模式与任意配置文件的包含替代OOS元素的iso一10303—28文档,则它符合一致性类3的要求。在任何情况下前置处理器一致性的声明都应基于限定其产生XML文档的EXPRESS模式。注:一致性类1和2都将前置处理器的一致性定义为产生对应于默认XMI,模式的XML数据集的能力。一致性类3要求前置处理器支持任意配置文件。如果一个软件应用相应于特定配置XML模式仅针对配置文档符合一致性要求,则它不能被称作符合GB/T16656本部分的前置处理器一致性要求。但可认为它符合定义该配置XMI。模式的规范的前置处理器一致性要求。4.5后置处理器的一致性如果一个软件应用可以存取并处理符合GB/T16656本部分4.1规定的XML实例文档,则它被称作符合后置处理器一致性的要求。符合后置处理器一致性的软件应用可以是只针对iso一1030328文档,也可以是只针对UOS文档,或者是两者。符合后置处理器一致性的软件应用可以是针对任意EXPRESS模式的,或者是只针对特定的EXPRESS模式。后置处理器有三个一致性类:——后置处理器一致拦类J:如果后置处理器可读取和处理UOS文档和/或包含UOS元素的iso10303—28文档,且这些文档针对任意一个EXPRESS模式符合导出XMI.模式的一致性类l则后置处理器符合一致性类1的要求。——后置处理器一致拦类2:如果后置处理器可读取和处理UOS文档和/或包含UOS元素的iso一10303—28文档并能执行相应XML的验证,且这些文档针对任意一个EXPRESS模式符合导出XML模式的一致性类2,则后置处理器符合一致性类2的要求。——后置处理器一致雌类3:如果后置处理器可读取和处理包括序列化单元元素的iso10303—28文档,且文档符合具有任意符合性配置文件的EXPRESS模式,则后置处理器符合一致性类3的要求。对于每个符合一致性类1和2的后置处理器,一致性声明都应基于文档的类型和限定其XMI。文档处理的EXPRESS模式。对于符合一致性类3的后置处理器,一致性声明应基于限定其XML文档处理的EXPRESS模式。注:如果一个软件应用仅符台对应于特定配置XMI。模式的配置文档的要求,则它不能称作符合GB/T16656本部分后置处理器的一致性要求。但可认为它符合定义该配置XML模式规范的后置处理器一致性要求。4.6XML模式生成器的一致性如果一个软件应用可以处理任何有效的EXPRESS模式,并可生成一个符合4.2规定的XML模式文档,则它被称作符合xML模式生成器的一致性要求。XML模式生成器一致拦类』:如果一个XMI,模式生成器能生成第7章规定的默认XMI。模式,即由一个空配置文件产生的导出模式,则它符合XML模式生成器一致性类1的要求。9 GB/T16656.28—2010/ISO10303-28:2007XMI.模式生成器一致拦类2:如果一个XMI,模式生成器能生成第8章规定的对应于任何EXRESS模式和任何符合性配置文件的导出的配置XMI。模式,则它符合XMI。模式生成器一致性类2的要求。5文档级元素本章规定r定义符合GB/T16656本部分的XMI,实例文档结构的XMI,元素。5.1定义了符合iso_1030328文档的XMI,文档结构,5.2~5.6定义了iso-10303—28文档根元素的内容元素,5.7定义了符合UOS文档的XMI.文档结构,5.8定义了符合配置文档的XML文档结构,5.9定义了iso-1030328文档根元素中包含的XMI,属性。16656的本部分在附录c中规定了一个XMI.模式声明和定义的集合,称作基本XMI。模式,它应当作为每个符合本部分的XMI,实例文档基本模式的组成部分。该集合中声明的XMI。元素名称、属性名称和数据类型名称构成了命名空间,用urn:iso:std:iso:10303:28:ed2:tech:XMI。schema:common表示。GB/T16656的本部分还在附录D中规定了一个XMI.模式声明和定义的集合,称作文档模式,它定义了符合iso-10303—28文档的XML信息集,该集合中声明的XMI.元素名称、属性名称和数据类型名称构成的命名空间用urn:iso:std:iso:10303:一28:ed2:tech:XMI。schema:document表示。51iso一10303—28文档iso一1030328文档的根元素应当是一个iso一10303—28元素。iso一10303—28元素包含GB/T16656的本部分定义的所有其他元素。这些元素使文档可以包含描述性信息、EXPRESS模式、XML模式配置文件和EXPRESS模式所描述的数据集。这些声明的目的是使符合本部分的文档可包含EXPRESS模式、配置文件和通过引用来自其他XML文档的数据集。GB/T16656的本部分在附录D中规定了一个XML模式声明和定义的集合,称作文档模式,该模式应当作为每个符合iso一1030328文档的XML实例文档的文档模式的组成部分。该集合中声明的XMI,元素名称,属性名称和数据类型名称应构成附录A.3中规定的命名空间。文档模式中该元素类型的声明是:(XS:elementname=”iso一10303—28”>(KS:complexType)(XS:elementref=”exp:header”minoccurs=”0”/>(XS:choiceminoccurs=”0”maxoccurs=”unbounded”>(XS:elementref=”exp:UOS”/>(XS:elementref=”doc:schema”/)</xs:choice)(/xs:sequence)(/xs:complexType)(/xs:element)XML属性版本(version)应标识XMI。文档所符合的GB/T16656本部分的版本。对于符合16656本部分当前版本的文档,版本的属性值应该是2.0。如果文档中出现有edo属性,则它应该包含该文档的唯一全局标识符作为企业数据对象(见5.9)。10 GB/T16656.28—2010/ISO10303-28二2007下面各条将描述iso一1030328元素的内容元素及其XMI.属性。5.2文档和tlOS头信息本条规定元素包含的“起源”信息,该信息描述了一个作为信息资源的元素,信息资源可以是整个iso1030328文档元素或者是它包含的一个序列化单元(见5.6)。“起源”信息是关于包含在资源中信息的来源的信息。5.2.1元素exp:headerexp:header元素应包含管理信息,描述整个XMI.资源——包含exp:header元素的特征,包含该头元素的资源可以是一个iso一10303—28元素(表达整个文档)或者是一个UOS元素实例文档。文档模式中该元素的类型声明是:(xs:complexTypename=”name—antaddress”>(XS:sequence>(XS:complexType>(XS:sequence>(/xs:complexType)(XS:elementname=”header”>‘XS:sequence)(/xs:element>注:该定义对应于GB/T1665621口1中定义的FII。E—NAME实体。11 GB/T16656.28—2010/ISO10303—28:20075.2.2元素name名称(name)元素应为XMI,资源提供一个人可读的标识符。5.2.3元素time_stamp时间戳(time—stamp)元素应描述XML资源被创建的日期和时间。5.2.4元素author创作者(author)元素应标识创建XML资源的个人或一组人。GB/T16656的本部分对创作者元素的内容没有规定具体的要求。5.2.5元素organization组织(organization)元素应标识创建或负责XMI,资源的组织。5.2.6元素authorization授权(authorization)元素应规定XML资源的发布授权,以及在适用之处规定其签署者。注:这与对文档中各种信息单元的授权不同。5.2.7元素originating_system原创系统(originating_system)元素应标识创建或获取XML资源中所包含信息的软件系统,包括系统的适用平台和版本标识符。5.2.8元素preprocessor_version前置处理器版本(preprocessor—version)元素应标识创建XML资源自身的软件系统,包括平台和版本标识符。注:preprocessor_version将标识用于产生XML资源的系统。它可能与创建或获取原始信息的软件系统不同。5.3schema_population元素模式群(schema—population)元素标识了一个用文档中序列化单元元素表达的EXPRESS实体实例的集合,它们构成一个“群”,可按照GB/T16656.11中定义的EXPRESS模式规则进行验证。如果通过一个schemapopulation元素描述模式群,则符合本部分的后置处理器可以,但不是必须的,根据控制模式的要求验证该模式群。文档模式中该元素类型的声明是;(XS:elementnaive--”schema_population”>(XS:complexType>(/xs:element>构成模式群的实体实例集合应通过将XML属性detemination—method标识的算法应用到XML属性governed—sections标识的序列化单元元素集合来确定。XMI。属性governing—schema的值应该是express元素的局部XML标识符,该express元素表达了用于验证由schema—population元素所描述的模式群的EXPRESS模式。相应的express元素应该出现在文档中。注1:被引用的express元素可能包含EXPRESS模式的表达或EXPRESS模式的外部引用。XML属性governed—sections的值应是一个由空格分开的局部XML标识符序列,其中的每个标识符都标识一个出现在文档中的序列化单元元素。如果XMI,属性governed—sections没有值,则序列化12 GB/T16656.28—2010/iso10303—2812007单元元素的指定列表应包含文档中出现的所有序列化单元元素。序列化元素的指定单元应该是该确定方法的输入操作数。注2:附录E中讨论了序列化单元元素的相关语境模式和它的实体实例所属的模式群的governing—schema属性之间的可能关系。XMI。属性determination—method属性的值应是字符串,标识用于选择组成模式群的EXPRESS实体实例的算法。附录E中规定了该属性的三种可能值和相应的选择算法。其他值也可能出现,但16656的本部分不对它们进行解释。如果该属性没有取值,则它的默认值就是“sectionboundary”,且应使用附录E中描述的截面边界方法。符合本部分的is0—10303—28元素可包括零个或多个schema—population元素。每个schema—population元素为了进行GB/T16656.11规定的验证而描述了一个完整的模式群。如果没有出现schema—population元素,则对于任何“有效模式群”,都不规定文档中表达的EXPRESS实体实例间的关系,且没有附加信息,iso一10303—28元素内容针对任何EXPRESS模式的验证也是不可能的。一个给定的序列化单元元素可被显式使用在零个、一个或多个模式群中,即通过引用schema—pop—ulation元素的XMI。属性governedsections中的元素实现。给定的序列化单元元素也可被隐式地用在零个、一个或多个模式群中,根据这些模式群所使用的确定方法而定,但这种用法并不意味着该序列化单元中表达的所有EXPRESS实体实例都要如此使用。如果一个序列化单元元素没有被显式或隐式地被任何schema_popu[ation元素所引用,则对于任何“有效模式群”EXPRESS实体实例之间的关系都不被规定。注3:下述步骤描述了符合上述要求的模式群有效性的检验方法:对于iso一1030328元素中的每个schemapopulation元素;——通过对governedsections属性值标识的序列化单元元素,或者在段有规定governed_sections属性值时对is01030328元素中所有序列化单元元素使用determination_method属性值标识的确定方法,查询一个EXPRESS实体实例集合;——根据governed—sections属性值表明的EXPRESS模式所定义的规则和约束条件,检验该实例集合。5.4express元素express元素应包含一个EXPRESS模式,既可以是“基于值”也可以是“基于引用”的。在文档模式中该元素的类型声明为:(xs:elementname=”express”nillable=”true”)(XS:complexType)</xs:simplecon七ent></xs:complexType)(/xs:element)13 GB/T16656.28—2010/ISO10303—28:2007在基本XMI。模式中,Seq—anyURl的类型声明如下:(XS:simpleTypename=”Seq-anyURI”)(xs:listitemType=”xs:anyURI”/></xs:SimpleType>对于这两种表达情况:——XMI.属性id的值应当是EXPRESS模式的局部XMI。标识符。这个值为文档中的schema—population元素和序列化单元元素提供了EXPRESS模式的引用。——当出现XMl,属性schema—name时,它应包含按照7.1.2或8.1.2要求转换的模式的EX—PRESS标识符,详见第6章。——当出现XMI.属性schema—verison时,它应包含模式的版本标识符。——对于由GB/T16656标准定义的EXPRESS模式而言,当出现schema—identifier属性时,它应包含与该模式关联的ASN.1标识符,这个标识值和这部分GB/T16656的模式相联系。对于任何其他的情况,GB/T16656的本部分没有规定如何使用schema_identifier属性。5.4.1EXPRESS模式的引用表达当EXPRESS模式是基于“引用”的表达时,应当使用XMI。属性sehemaI。ocation,它的值应标识包含EXPRESS模式(文本)的一个或多个资源。注:按照惯例,schemaLocation的值可以是个单一的URI,也可是一个URI列表,列表中第~个URI是一个URN,它是配置文件的全局标识,其他的URI是文本的可能地址。当EXPRESS模式是基于“引用”的表达时,express元素的内容应当是nil(空)。5.4.2EXPRESS模式的取值表达当EXPRESS模式是基于“取值”的表达时,express元素的内容应当是符合GB/T16656.11的EXPRESS模式的文本表达,文本中的字符编码在XML处理指令中规定。express元素的内容应该是下列之一:——有效的XMLCDATA段,见XMI。1.0标准中2.7的规定;——有效的XMl。文本字符串,其中的字符‘<7用‘&It’来替代,字符‘&’用‘gaamp’替代。如果字符序列‘]])’出现在EXPRESS模式中,则应使用有效的XML文本字符串形式表达该模式。当EXPRESS模式是基于“取值”的表达时,XMI。属性schemaLocation不应出现。示例:下列EXPRESS模式:SCHEMAhello_world;END—SCHEMA;将表达为一个XMLCUFA段:(express—schemaid:”s01”)(![CDATA[SCHEMAhello_world;END—SCHEMA;]])(/旺pressschema>5.5configuration元素configuration元素包含一个控制从给定的EXPRESS模式到XMI。模式映射的配置文件和该EX—PRESS模式描述的数据的XML表达。configuration元素的结构和解释详见10.1。5.6unitofserialization元素schemainstance(模式实例)是为某些目的而组成的一个数据集合,由一个单一的EXPRESS建模。序列化单元元素(unitofserializationelement)是表达一个模式实例的XML元素。该模式实例的EXPRESS模式被作为此序列化单元元素的相关语境模式(contextschema)。对于每个相关语境模式,在与导出的XML模式关联的命名空间中都要声明一个特定的序列化单元元素,详见7.8或8.8。每个序列化单元元素都应是exp:UOS元素替代组的一个成员,且它的数据类型应是exp:UOS数据类型的扩展,在基本XML模式中定义如下:14 GB/T16656.28—20IO/ISO10303—28:2007(/xs:sequence>(/xs:extension>(/xs:simplecontent)(/xs:complexType)示例:ENTITYentity_withbinaryattribute;a_binary:BINARY;END—ENTITY;在XMI.模式中:(xs:complexTypename=”Entity_withbinary_attribute”)</xs:complexContent>(/XS:complexType)XMI。实例文档:(Entitywith_binary_attribute}(A—binary>0FB7</nbinary>(/Entity_withbinary_attribute>7.2.1.1.1有约束的BINARY数据类型规定了最大长度或固定长度的EXPRESSBINARY(二进制)数据类型被称作有约束的BINARY数据类型。它应被映射为一个对exp:hexBinary数据类型进行约束的复合类型(complexType)。当有约束的BINARY数据类型是一个EXPRESS类型声明中的基础类型时,则对应的XML数据类型见7.3.1.1的规定。对于一个有约束的BINARY数据类型,导出XMI.模式应包含一个与其对应的XMI。数据类型的类型定义。类型定义应具有以下形式:(XS:simplecontent>0,则bits=bits/8+1;——如果bits%8—0,则bits=bits/8。注:miaBies和bits的值是用位表示的长度值.而mirlLength和ma吐engt^的值是用八进制表示的长度值。示例:在EXPRESS中:ENTITYentity_withfixedbinaryattribute;a—binary:BINARy(12)FIXED;Lbinary:BINARY(8):END_ENTITY;在XMI,模式中:(XS:complexTypena【[_e=“Binary1212”)(/xs:SimpleContent、(/xs:complexType>‘xs:complexTypename=“Binary08”)《XS:SimpleContent}(XS:restrictionbase=”exp:hexBinary“>《xs:complexTypename=”Entity_withfixedbinary_attribute”>(xs:complexContent)(/xs:complexContent>(/xs:complexType)19 GB/T16656.28—2010/ISO10303—28:20077.2.1.2BOOLEAN数据类型EXPRESSBoOLEAN(布尔型)数据类型被映射为XS:boolean数据类型。示例:ENTITYentitywithboolean_attribute;aboolean:BOOLEAN;END_ENTITY;在XMI。模式中:(XS:a11)(/xs:all>(/xs:extension>(/xs:complexContent>(/xs:complexType>XMI.实例文档:(Entity_withbooleanattribute>(A-boolean>true</Aboolean></Entity_with-booleanattribute>7.2.1.3INTEGER数据类型EXPRESSINTEGER(整数型)数据类型被映射为XS:long数据类型。示例:ENTITYentity_withinteger_attribute;aninteger:INTEGER;END_ENTITY;在XML模式中:(XS:a11)(XS:elementtype=”xs:long”naNe。”An_integer”/>(/xs:a11)(/xs:extension></xs:complexContent></xs:complexType>XMI。实例文档:(Aninteger>1234(/An_integer>(/Entity_with_integerattribute>7.2.1.4LOGICAL数据类型EXPRESSLOGICAI。(逻辑型)数据类型被映射为exp:logical数据类型。在基本XMI.模式中(见附录c)中exp:logical数据类型的定义如下所示:</xs:restriction></xs:simpleType>示例:ENTITYentity_with-logical—attribute;alogical:LOGICAL;ENDENTITY;在XMI,模式中:(XS:extensionbase=”exp:E7itity”)(xs:a11)(xs:elementtype=”exp:logical”na/Qe5”Alogical”/>(/xs:a11)(/xs:extension>(/xs:complexContent></xs:complexType)XML实例文档:(Entitywithlogical—attribute>(Alogical>true</A_logical>(/Entitywithlogical—attribute>7.2.1.5NuMBER数据类型EXPRESSNUMBER(数字型)数据类型被映射为XS:decimal数据类型。示例:ENTITYentity_with-number_attribute;anumber:NUMBER;END—ENTITY;在XML模式中:(xs:extensionbase=”exp:Entity”)(XS:all>(/xs:complexContent>(/xs:complexType>XML实例文档:12345678</Lnumb色r)(/Entitywithnumber—attribute>7.2.1.6REAL数据类型EXPRESSREAI。(实数型)数据类型被映射到xs:double数据类型。带有精度的EXPRESS实数型数据类型被映射时不受精度的约束。示例1:21 GB/T16656.28—2010/[so10303—28:2007ENTITYentitywitkreal—attribute;areal:REAL;END—ENTITY;在XMI。模式中:(/xs:complexContent>(/XS:complexType)XML实例文档:(Entity_witkreal—attribute>(A-real>l2E02(/A—real)</Entitywith_realattribute)示例2:带有精度的实数应当与上述示例1的映射相同:ENTITYentity_witkrealattribute;a_real:REAL(16);ENDENTITY:7.2.1.7STRING数据类型EXPRESSSTRING(字符串)数据类型被映射为XS:normalizedString数据类型。特例:如果该EXPRESS数据类型被声明为具有最大长度或固定(FIxED)长度,则EXPRESS数据类型应按照7,2.1.7.1的规定映射。示例:ENTITYentitywitkstring—attribute;a_string:STRING;END_ENTITY;在XMI。模式中:(XS:complexTypename=”Entity_withstringattribute”)(xs:complexContent)(XS:extensionbase=”exp:Entity”)(7xs:complexContent></xs:complexType>XMI,实例文档:Hallo</Astring></Entity_with-string_attribute>7.2.I.7.1有约束的STRING数据类型规定了最大长度或固定(FIXED)长度的EXPRESSSTRING(字符串)数据类型被称作有约束的STRING数据类型,它应该被映射到simpleType,是对XS:normalizedString数据类型的限定。22 GB/T16656.28—2010/iso10303-28:2007当有约束的STRING数据类型是EXPRESS类型声明中的基本类型时,则相应XMI。数据类型的规定见7.3.1.3。在其他情况下,导出XMI。模式应包括与有约束STRING类型相对应的XMI。数据类型的类型定义,类型定义的形式如下所示:(XS:simpleTypename=”StringminLength.maxLength”)(XS:minLengthvalue=”minLen虻^”/>(xs:maxLengthvalue=”maxLength”/)(/xs!restriction></xs:simpleType>其中:——minI—ength:如果EXPRESSSTRING数据类型被声明为N定t圭N,则mini。ength应为固定长度值。否则,其值为⋯0,且xs:minLength将被省略。一一maxI—ength:为EXPRESSS’FRING数据类型的最大长度或固定长度。注:如果EXPRESS模式为有约束的STRING数据类型声明了一个自定义数据类型,则存在一个与之对应的XMI。定义(见73)。上述定义仅适用于匿名的有约束STRING数据类型。示例:ENTITYentitywithstring_types;aboundedstring:STRING(16);afixedlengthstring:STRINC(8)FIXED;ENDENTITY;在XML模式中:(XS:simpleTypen硼e=”String016”、(XS:restrictionbase=”xs:normolizedString”)(/XS:simpleType>(XS:simpleType/lame=”String88”)(XS:restrictionbase=”xs:normallzedStrlng”)(/xs:siapleType)(/xs:complexContent)《/xs:complexType>XMI。实例文档:(Eatitywithstringtypes>(A_bounded_string>Public,JohnO(/Aboundedstring) GB/T16656.28—2010/ISO10303—2812007(A_fixedlengthstring>jqpublic</A_fixedlength-string>(/Entity_withstring_types)7.2.2聚合数据类型对于EXPRESS聚合数据类型,即集合(SET)、列表(I。IST)、包(BAG)或数组(ARRAY)数据类型,其基类型(basetype)是组成元素的数据类型。与聚合数据类型对应的XML模式数据类型依赖于适用的基类型。表2说明与给定用途的EXPRESS聚合数据类型相对应的XMI.数据类型,应当是适用的聚合类型和基类型的组合,如下所示:——基类型的值应当在聚合数据类型的EXPRESS声明中规定。当聚合的基类型是自定义数据类型时,则此自定义数据类型的基本类型应当用作基类型的值。一~简单(Simple)类型的XML表达含有simpleType类型且不包含空格,包括布尔型(BOOLEAN)、整型(INTEGER)、逻辑型(I。OGICAL)、实数型(REAl。)和数字型(NUMBER)等EX—PRESS数据类型,以及对任何这些类型的专门化的自定义数据类型。——聚合类型的值应当在聚合数据类型的EXPRESS声明中规定。对于表2而言,可选数组(AR—RAYOFOPTIONAL)的基类型被认为是个不同的聚合类型。’——可用的数据类型特性和配置指令的可用值应按表2中各列的格式进行排序,表中每行的值可进行一对一的对比。——可用值将与表中某一行的所有值匹配。对应的XML数据类型应当在该行条款列所标识的条中规定。表2描述聚合数据类型对应关系的条款聚合类型基类型条ARRAY/LIST/SET/BAG简单数据类型7.2.23ARRAY/LIST/SET/BAG字符串/-进制(STRING/BINARY)722.2ARRAY/I,IST/SET/BAG枚举型(ENUMERATION)7.2.2.5ARRAY/I,lsT/SET/BAG选择型(SELECT)7.22.6ARRAY/I,1ST/SET/BAG实体7.2.2.7ARRAY/L1ST/SET/BAG聚合数据类型724ARRAYOFOPTIoNAL简单数据类型72——ARRAYOFOPTIONAI,字符串/=进制(STRING/BINARY)7.22ARRAYOFOPTl0NAL枚举型(ENUMERATION)72ARRAYoF0PTIONAI。选择型(SEI,ECT)7.22.6ARRAYoFoPTIONAL实体7.2.2.7ARRAYOF0PTlONAI。聚合数据类型7.22.47.2.2.1聚合数据类型的XML属性对应于某些EXPRESS聚合数据类型的XML模式数据类型是具有以下所有属性的元素序列(XS:restriction>(XS:simpleType>24 GB/T16656.28—2010/ISO10303—28:2007(xs:minLengthvalue=”l”/)(/xs:restriction>(/xs:simpleType)(/xs:attribute>(xs:simpleType)(/xs:slmpleType>(/xs:attribute>(XS:enumerationvalue=”list”/)</xs!restriction></xs:simpleType>在~个特定的实例表达的聚合值中arraySize属性的值表示其组成元素的个数。对于一个ARRAY,该值一般是固定的且等于Hilndex--Lolndex+1(见以下内容——适用于部分特例)。对于一个多维数组,该值是一个整数值序列,表示每个维度上组成元素的个数(见7.2.2.4和9.8.5)。itemType属性值表示聚合值的基类型——组成元素的类型。每个实际的聚合数据类型为itemType属性规定了一个固定值(见以下内容)。cType属性值表示EXPRESS聚合数据的类型——sET、LIST、BAG、ARRAY、ARRAYOFUNIQUE或者LISTOFUNIQUE。每个实际的聚合数据类型规定了cType属性所要求的值(见以下内容和9.8)。7.2.2.2聚合的Sequence-of-elements形式当表达EXPRESS聚合数据类型的序列化元素(sequence—o[-elements)形式符合7.2.2中的规定时,相应的XML模式数据类型应当是complexType,且具有如下形式:(XS:complexType>(XS:sequence>(XS:elementref;”base-instance”minOccurs=’’lower-bound”maxOccurs=’’upper-bound”/、</ms:sequence>(XS:attributeref=”exp:itemType”fixed=”base-instance”/>(/xs:complexType>其中:25 GB/T16656.28—2010/ISO10303—28:200726base-instance是与聚合数据类型的基类型对应的实例元素的合格名称,见7.4或75的规定。——Iower一幻und(下限):当给定集合大小的下限,其计算结果是一个常量,且EXPRESS聚合类型不是ARRAYOFOPTI()I.A时,则minOecurs的值应是EXPRESS聚合的下限,并以十进制整数表示。否则,minOccurs的值应为⋯0’。如果下限值计算结果为⋯1’,则minOccurs属性可被忽略。⋯upper-bound(上限):当给定集合大小的上限且其计算结果是一个常量时,maxOccurs的值应是EXPRESS聚合的上限,且以十进制整数表示。否则,nlaxOccurs的值应为“unbounded”。注1:如果EXPRESS聚合数据类型为一个ARRAY,则其上下限值为:Hilndex(a)Lolndex(a)+1,其中a是聚合数据类型。——aggregate-type是EXPRESS聚合类型的关键字:“set”表示SET,“bag”表示BAG,“list”表示LIST,“array”表示ARRAY,“listunique”表示LISTOFUNIQUE,“arrayunique”表示ARRAYOFUNIQUE,array—optional表示ARRAYOFOPTIONAI。,array—optional—unique表示ARRAYOFOPTIONAI。UNIQUE。——usage:当EXPRESS聚合类型是ARRAY(且不是可选的),数组的上下限计算结果是常量时,arraySize应声明为fixed--“upper-bound”,其中upper-bound(上限)的定义如上所述。当EXPRESS聚合类型是ARRAY且数组的上下限计算结果不是常量时,arraySize应声明为use一”required”,否则,arraySize应声明为use--”optional”。注2:XMI。模式数据类型的值表达EXPRESS聚合数据类型的值,详见982和983。注3:上述定义给出了complexType的主体,而complexType元素本身可能有,也可能没有tlalne属性.见后续章条的内容。示倒1:EXPRESS表达:TYPEaddress—LIST[1:?]OFSTRING;ENDTYPE;XML模式表达:(XS:complexTypename=”Address”)(XS:sequence)(xs:attributeref=”exp:cType”fixed=”list”/7</xs:complexType>示例2:EXPRESS表达:TYPExetofstringtype=SET[1:?]OFdefinedt!∞ebasedonstring;ENDTYPE;TYPEdefined_typebasedonstring=STRING}ENDTYPE;用XMI。模式:(XS:elementref=”Tns:Definedtypebasedonstring-wrapper” GB/T16656.28—20lO/lSo10303—28:2007minOccurs2“1”maxOccurs=。’tm]30tmded’。/、</xs:sequence>7.2.2.3聚合的List—of-values形式当7.2.2中规定EXPRESS聚合数据类型的表达采用值列表(1ist,o[-values)的形式时,则相应的XMI。模式数据类型是基于一个简单列表数据类型,见7.2.2.3.1的规定。相应XML模式数据类型是对支持EXPRESS基类型聚合的非约束复合类型(complexType)的限制类型,见7.2.2.3.2的规定。对应于EXPRESS聚合数据类型的XMI,数据类型应采用如下形式:(XS:complexType)(XS:simpleContent)(XS:simpleType)(xs:minLengthvalue=”lower-bound”/)(XS:maxLengthvalue=”upper-bound”/>(/xs:restriction></xs:SimpleType)(xs:attributeref=”exp:arraySize”usage/>(/xs:si“plecontent>(/xs:complexType)其中:——unrestricted-type应当是支持EXPRESS基类型聚合的非约束complexType(复合类型)的合格名称,见7.2.2.3.2的规定。——jist—type应当是对应于该基类型的简单列表数据类型的合格名称,见7.2.2.3.1的规定。jD№r-幻∞d是EXPRESS聚合的下限。当给定了下限且计算结果为常量时,则minLength的值就是下限值,用{。进制整数表示。否则mini。ength的值应为⋯0’。如果mini.ength的值为⋯0’,则可忽略该属性。一upper-bound是EXPRESS聚合的上限。当给定了上限且计算结果为常量时,则maxLength属性应当存在且其值应为上限值,用十进制整数表示。否则,可忽略minLength属性。注:如果EXPRESS聚合类型是一个ARRAY(数组),则上下限的值为Hilndex(a)一Lolndex(a)+1,其中“a”为聚合数据类型。——如果EXPRESS聚合数据类型的下限是0或者未规定,且上限是不确定的或未规定,则类型声明中对简单列表类型的限制可以忽略不计,即只有XML属性的值是受限制的。——aggregate-type是EXPRESS聚合类型的关键字,其值的含义是:”set”表示SET,”bag”表示BAG,”list”表示LIST,”array”表示ARRAY,”listunique”表示LISTOFUNIQUE,”array—unique”表示ARRAYOFUNlQUE。值列表的形式不适用于ARRAYOFOPTIONAL。一一usage:当EXPRESS聚合类型是ARRAY且数组的上下限计算结果都是常量时,arraySize应27 GB/T16656.28—2010/ISO10303—28:2007当被声明为fixed=“upper-bound”,其中upper-bound(上限)的定义如上所述。当EXPRESS聚合类型是ARRAY且数组的上下限计算结果都不是常量时,arraySize应当被声明为use一”required”,否则,arraySize应被声明为USe--”optional”。示例1:EXPRESS表达:TYPEcompoundplaneanglemeasure=ARRAYLl3]OFREAL;END_TYPE;支持REAI.(实数)型聚合的简单类型应被定义为Tns:List—double,见7.223.1的示例。支持REAL(实数)型聚合的非约束complexType(复合类型)应被定义为Tns:Seqdouble,见7.2.232的示例。对应于eompoundplaneanglemeasure的XMI。数据类型是:(XS:minLengthvalue=”3”/5(xs:maxLengthvalue=”3”/5</xs恤strictlon)(/xs:SimpleType5示例2:EXPRESS表达:TYPElength_measure=REAL;END_TYPE;TYPEmeasurements=LIST[17]OFlengthmeasure;END_TYPE;支持lengthmeasure(长度度量型)聚合的简单数据类型应被定义为Tns:ListIength—rlleasure,见72.2.31的示例。支持lengthmeasure(长度度量型)聚合的非约束eomplexType(复合类型)应在导出的XML模式中被定义,见7.2.2.3.2的示例。对应于EXPRESS类型measurements的XML数据类型是:(XS:complexTypeI】aⅢe=“Measurements”5(XS:sxmpleContent5(/xs:simpleType5(XS:attributeref=”exp:cType”fixed=”list”/5(xs:attributeref=”exp:arEaysize”use=”optional”/5(/xs:restriction5</xs:sxmpleContent5(/xs:complexType)28 GB/T16656.28—2010/mo10303-28:20077.2.2.3.1支持聚合的简单列表类型当EXRESS聚合数据类型的fisto[values(值列表)表达形式符合7.2.2中的规定时,则相应的XML模式数据类型将基于简单列表数据类型。简单列表数据类型在导出的XMI。模式中是由下列形式的simpleType类型定义的:(/ms:simpleType>其中:——List—type(列表类型)的内容应当是“I^t一”开头,其后跟对应于聚合数据类型的基类型的XMI。模式数据类型名称中的本地名,详见7.2或7.3。——hse-t,pe(基类型)应当是对应于聚合数据类型的基类型的XMI,模式数据类型的合格命名,详见7.2或7.3。对于具有相同基类型的所有EXPRESS聚合类型,只需要一个这样的定义。示例:EXPRESS表达:TYPECompoundPlaneAngleMeasure=ARRAY[13]OFREAL;END_TYPE;TYPElength—measure=REAL;END_TYPE#TYPEmeasurements=LIST[1:?]OFlength_measure;END_TYPE;在导出的XMI,模式中相应的简单类型定义如下:7.2.2.3.2支持聚合的非约束复合类型单个非约束复合类型complexType可支持一个给定EXPRESS基类型的所有聚合(ARRAY,BAG,LIST,SET)。与具有这些基类型的每个特定聚合数据类型相对应的XML数据类型是非约束复合类型complexType的一个限制。导出的XMI。模式应该包含非约束复合类型的定义。对有具有相同基类型的所有EXPRESS聚合类型而言,仅需要一个这样的定义。定义应该有如下形式:(XS:SimpleContent>(xs:extensionbase=”Tns:list—type”>(/xs:simplecontent>(/xs:complexType)其中:——Tns:List-type应当是在7.2.2.3.1中定义的简单list—type的合格名称。——seg-type应当以“Seq”开始,后跟与聚合数据类型的基类型相对应的XML模式数据类型名29 GB/T16656.28—2010/ISO10303—2812007称的本地部分,见7.2和7.3的规定。——hse_t印e,即itemType属性值,应当是与聚合数据类型的基类型相对应的XMI。模式数据类型的合格名称,见7.2和7.3的规定。示例1:EXPRESS表达:TYPECompoundPlaneAngleMeasure=ARRAY[1:3]OFREAL;END_TYPE;REAI。聚合类型的非约束complexType应该在导出的XML模式中定义如下:(XS:extensionbase=”Tns:List-double”)(XS{attributename=”ref”type=”KS:IDRRE”use=”optional”/)上述定义只出现一次,即使相关语境模式包含了多个基类型是REAL的聚合类型。示例2:EXPRESS表达:TYPElengthmeasure=REAL;END_IYPE:TYPEmeasurements=LIST[1:?]OFlengthmeasure;ENDTYPE;Length—rlleasure聚合类型的非约束complex’Fype应在导出的XMI。模式中定义如下:<船:attributena珂e=”ref”type=”船:IDREF”use=’’optional。。/)(Ⅻ:attrlbuteref=”exp:arraySize”use=”optional”/)(XS:attributeref=”exp:it∞Type”fixed=”Tns:Length_measure”/)(/xs:simpleContent)(/xs:complexType>上述定义只出现一次,即使相关语境模式包含多个基类型是lengthmeasure的聚合类型。7.2.2.4聚合数据类型的聚合当EXPRESS聚合数据类型(以下称作类型A)的基类型是另一种聚合类型,或者是基本类型为另一种聚合数据类型的自定义数据类型时,相应的XMI。模式数据类型应具有多维数组结构。相应的XMI。模式数据类型的结构在本条中定义。如果一个EXPRESS聚合数据类型(SET,IAST,BAG或ARRAY)在相关语境模式中是另一个聚合数据类型的基类型,则它被称作是嵌套的。一个聚合类型的最基本类型的确定方法:如果聚合的基类型是一个匿名聚合类型,一个基本类型是聚合类型的自定义数据类型,或者是一个选择列表包含了基本类型为聚合类型的单一自定义数据类型的选择(SEI—EcT)数据类型时,则最底层的基本类型就是该聚合的最基本类型。否则,最基本类型就是该聚合的基类型。 GB/T16656.28—2010/ISO10303—2812007类型B应当是类型A的最基本类型。对应于类型A的complexType应有一个只允许包含与类型B对应的元素的内容模型。另外,此complexType还应规定属性exp:itemType和exp:cType的固定取值,如下所示。此XMI,数据类型应有以下形式:(XS:sequence)7element—or-groupref=”base-instance’’minOccurs=’。lower-bound”maxOccurs=”upper-bound”/、《/xs:sequence)(xs:attributename=”ref“type=”XS:IDREF”use=”optional”/)(xs:attributeref=”exp:arraySize”usage/)(xs:attributeref=”exp:itemType”fixed=”base-instance”/)(/xs:complexType)其中:一一-base-instance:如果类型B是一个实体数据类型,则base-instance应当是对应的complexEntity复合实体组的合格名称(见7.5.6.2)。如果类型B是一个SELECT数据类型,则base-instance应为相应组或实例元素的合格名称(见7.3.4)。否则,base-instance应为相应实例元素的合格名称(见7.4)。——element—or-group:如果base-instance是一个元素。则element—or-group的值为xs:element;如果base-instance一个组,则element-or-group的值为XS:group。注I:一般说来,如娜“鄹妇勰是一个元素。但是如果类型B是一个SELECT数据类型(见7.34)或是一个使用继承树映射的实体数据类型(见75),则base-instance就是一个组。——aggre弘te.t印es:aggregate-types是作为数据结构组成部分的EXPRESS聚合数据类型的关键字列表,其排序方式是类型A的关键字居首.最后是嵌套最深的聚合类型的关键字。每个关键字应当是下列之一:用于SET类型的“set”,用于BAG类型的“bag”,用于LIST类型的“list”,用于ARRAY类型的“array”,用于I.ISTOFUNIQUE类型的“listunique”,用于ARRAYOFUNIQUE类型的“array—unique”,用于ARRAYOFOPTIONAI。类型的“array—op—tional”,用于ARRAYOFOPTIONAI。UNIQUE类型的“arrayoptional—unique”。列表中的各项应当用空格分开。一⋯一lower-bound:当基类型都不是可选的(oPTloNAL),并且每个集合的下限是给定的一个常量时,则属性minOccurs的取值应当为每个聚合数据类型下限的积。否则,属性minOccurs值应为0。如果下限值的计算结果为⋯1’,则属性minOceurs可被忽略。一upper-bound:当每个集合的上限是给定的一个常量时,则属性maxOceurs的取值应为每个聚合数据类型上限的积。否则,该值应当为“无界”。⋯一usage:当类型A和所有嵌套的聚合数据类型都是ARRAY,且都不是可选的,并且所有类型A和嵌套数组的索引范围边界都是常量时,那么arraySize应当被声明为fixed一“size。⋯si—ze。“,其中size,⋯size。是类型A和构成多维结构的所有嵌套聚合数据类型的大小,其顺序是从类型A的大小开始,嵌套最深的聚合数据类型的大小在最后。当类型A和所有嵌套的聚合数据类型都是ARRAY且都不是可选的(OPTIONAI。),并且类型A或任何嵌套数组的索引范围边界都不是常量时,则arraySize应当被声明为USe一”required”,否则,arraySize应当被声明为use--”optional”。注2:如果聚合数据类型是一个ARRAY,则在EXPRESS语法中用LOINDEX和HIINDEX的值一下标范围表示,31 GB/T16656.28—2010/ISO10303-28:200732数组维数的大小是上限和下限索引值之差加上1。注3:多维数组的形式是722规定的“sequence-of-element(元素序列)”形式的一种特例。它的结构相同,但是构成它的实例元素表达了最基本类型的值,而不是类型A的基类型的值。正确解释该结构取决于arraySize的值以及可能的cType值。注4:该XMI。模式数据类型用于表达在985.3或9.8.5.4中规定的数组的取值。示例1:EXPRESS表达:TYPEMatrix=mY[13]OFm{RAY[i2]OFOPTIONALREAL;ENDTYPE;ENTITYX:matrix:Matrix;ENDENTITY;XMI。模式表达:(xs:complexTypename=(xs:attributeref=”exp:cType”fixed=”arrayarrayoptional”/)</xs:complexType>XML实例数据(类似于出现在一个Accessor元素的内部):(exp:double-wrapperpos=”00”>l0(/exp:double-wrapper)(exp:double-wrapperpos=”0l”)20</exp:double-wrapper)(exp:doublerwrapperpos:”20”>OO(/exp:double-wrapper>XMI。实例数据(类似于出现在一个Accessor元素的内部):(exp:double-wrapperpos=”00”)10(/exp:double-wrapper)(exp:double-wrapperpos=”0l”)20(/exp:double-wrapper>(exp:double-wrapperpos=”10”)00(/鲤p:double-wrapper> GB/T16656.28—2010/iso10303—2812007(exp:double-wrapperpos=”20”)0O</exp:double-wrapper)(exp:double-wrapperpos=”21”)5.4(/exp:double-wrapper)7.2.2.5ENuMERATl0N数据类型的聚合当EXPRESS聚合数据类型的基类型是一个自定义数据类型且该自定义数据类型的基本类型是ENuMERATIoN(枚举)类型时,则相应的xMI。模式数据类型应当按照7.2.2.3规定。示例:EXPRESS表达:TYPEmaterial—type=ENUMERATIONOF(steel,copper,plastic);END_TYPE;TYPElist—of~materials=SET[1:,]ofmaterial—type;END_TYPE;XMI。模式表达:(XS:enumerationvalue=”plastic”/)‘/XS:re8trictlon></xs:simpleType>(XS:attributeref=”exp:arraySize”use=”optional”/>(XS:restrictionbase。”Tns:Seq-Material—type”)(XS:simpleType>(/xs:restrictlon>(/xs:simpleContent)(/xs:complexType>33 GB/T16656.28—2010/ISO10303—28:20077.2.2.6SELECT数据类型的聚合当EXPRESS聚合数据类型的基类型是一个自定义数据类型且该自定义数据类型的基本类型是SEI。ECT(选择)类型,并且该选择类型(见7.3.4.1)的工作选择列表只包含一种数据类型时,则认为选择项的数据类型是该基类型而不是SELECT类型,目7.2.2中对该数据类型的规定都是适用的。其他情况下,当EXPRESS聚合数据类型的基类型是一个自定义数据类型且该自定义数据类型的基本类型是SELECT(选择)类型时,则相应的XMI,模式数据类型应当是complexType(复合)类型。如果自定义数据类型的基础类型不同于基本类型(即,如果自定义数据类型是SEI,ECT类型的specialization(专门化)),则complexType(复合)类型应当按照7.2.2.2规定,将自定义数据类型作为基类型。在其他情况下,complexType(复合)类型应具有下列形式:(XS:complexType)(XS:sequence)。group-or-elementref=’’base-group”minOccurs=’’lower-bound”maxOccurs==”upper-bound”/、(/xs:sequence)(XS:attributena/fie2”ref”type一”xs:IDREF”use一”optional”/)(xs:attributeref一”exp:arraySize”usage/)其中:——hse-筘oup:是对应于自定义数据类型的XMI。组或实例元素的合格名称,见7.3.4的规定。~--group-or-element:如果basegroup是一个group(组),则它应为XS:group,否则为XS:element。——lower-bound:当EXPRESS聚合类型不是ARRAYOFOPTIONAl.,并且该EXPRESS聚合数据类型给定了的下限不是常量时,它就等于其下限的值,用一个十进制整数表示;否则,它为⋯0’。如果其下限等于“l”,则属性minOccurs属性可被忽略。——upper-bound:是EXPRESS聚合类型的上限,用十进制整数表示。当EXPRESS聚合是一个ARRAY且上限是给定的常量时,则属性maxOccurs的值应为(Hilndex(a)一Lolndex(a)+1),其中“a”表示聚合数据类型。当EXPRESS聚合类型不是ARRAY且上限是给定的一个常量时,则属性maxOceurs的值就是上限值,用一个十进制整数表示。否则,它的值应为“无界”。——base_t挣e:是对应于聚合类型的基类型的XML数据类型的合格名称,该聚合类型就是基本类型为SEI。ECT数据类型的自定义数据类型,见7.3的规定。一,aggregate-type:是EXPRESS聚合类型的关键字,其中:用于SET类型的“set”,用于BAG类型的“bag”,用于1,1ST类型的“list”,用于ARRAY类型的“array”,用于LISTOFUNIQUE类型的“list—unique”,用于ARRAYOFUNIQUE类型的“arrayunique”,用于ARRAYOFOPTIONAL类型的“arrayoptional”。用于ARRAYOFOPTIONAl。UNlQUE类型的“array—optionalunique”。——usage:当EXPRESS聚合类型是ARRAY且其上下限都是常量时,arraySize的声明应为fixed一”upper-bound”,其中upper-bound的定义如上所述。当EXPRESS聚合类型是ARRAY且其上下限不是常量时,arraySize应声明为use=”required”。否则,arraySize应声明为use一”optional“。注1:如果聚合类型是一个ARRAY,则在EXPRESS语法中是用I.OINDEX和HIINDEX的值下标范围表示。34 GB/T16656.28—2010/ISO10303-2812007聚合类型值的最大值和最小值是相同的上下界索引值之差加1。注2:这个形式在所有722规定的有关“sequence-o{一elements”形式中总是相同的,唯一不同的是complex’Fype类型的内容模型是一个重复组而不是一个重复元素。在本部分其他条中这是一种“sequence-ogelemems”表示。示例:EXPRESS表达:TYPELabel=STRING;ENDTYPE;TYPELer崎thmeasure。REAL;END_TYPE;TYPETrafficlight2ENUMERATIONOF(red,yellow,green);END_TYPE;TYPEInner2SELECT(Label,Length-measure);END_TYPE;ENTITYPipe;END—ENTITY;TYPES2SELECT(Length—measure,Trafficlight,Pipe,l曲er);END_TYPE;TYPESelectcollection=SETOFS;ENDTYPE;在XML模式中,对应于SEI。ECT—COLLECTION的声明是:(xs:complexTypen{gme=”Select—collection”)(xs:sequence)《xs:attributeref=”exp:arraySize”use=”optional”/>(xs:attributeref=”exp:arraySize”usage/)(xs:attributeref=”exp:itemType”fixed=”base-instance”/)(/xs:complexType)35 GB/T16656.28—2010/lso10303-28:2007其中:--base-instance:是对应于聚合的基类型的实体实例元素的合格名称,见7.5.5的规定。--base-complexEntity-group:是对应于聚合的基类型的复合实体(eomplexEntity)组的合格名称,见7.5.6.2的规定。——jower_60tmd:当EXPRESS聚合的下限是给定的一个常量时,则minOccurs的值为该下限值,用十进制整数表示。否则,该属性值为0。——uPper-60u目d:是EXPRESS聚合的上限。当EXPRESS聚合是一个ARRAY且上限是给定的一个常量时,则maxOccurs的值应为(Hilndex(a)LoIndex(a)+1),其中⋯a’为聚合数据类型。当EXPRESS聚合不是一个ARRAY且其上限是给定的一个常量时,maxOccurs的值应为上限值,用十进制整数表示。否则,该属性值为“无界”。注1:如果EXPRESS聚合是一个ARRAY,则其上下限的值为Hilndex(a)Lolndex(a)+1,其中“a”是聚合数据类型。——一aggregate-type:是EXPRESS聚合类型的关键字,其中:用于SET类型的“set”,用于BAG类型的“bag”,用于LIST类型的“list”,用于ARRAY类型的“array”,用于lASTOFUNIQUE类型的“list—unique”,用于ARRAYOFUNIQUE类型的“array—unique”,用于ARRAYOFOPTIONAL类型的“array-optional”,用于ARRAYOFOPTIONALUNIQUE类型的“array—optionalunique”。——usage:当EXPRESS聚合类型是ARRAY且其上下限都是常量时,arraySize应被声明为fixed--”upper-bound”,其中upper-bound(限)定义见上。如果EXPRESS聚合类型是ARRAY且上下限不是常量,则arraySize应被声明为use一”required”。否则,arraySize应被声明为use一”optional”。注2:这种形式在与7.22.2中规定的“sequencpoLelements”形式相关的所有情况下都是相同的,只是complexType类型的内容模型可能是个重复的组而不是一个重复的元素。对于其他各条而言,这是一种“se。quence-oLelements(元素序列)”的表示。示例:EXPRESS表达:EJfrITYPt3d;--additionalattributesskippedEND_ENTITY;TYPEPt3dSet=SETOFPt3dlENDTYPE;ENTITYPt2d;--additionalattributesskippedENDENTITY;TYPEPt2dList=LISTOFPt2d:END—TYPE;XMI.模式表达: GB/T16656.28—2010/ISO10303—28:2007(XS:attributeref=”exp:cType”fixed=”set”/)(/xs:compleX2Ype)(XS:attributename=“ref“type=”xs:IDREF”Hse=”optional”/)fxs:attributeref=”exp:arraySize”use=”optional”/)fxs:attributeref=”exp:itemType”fixed=“Tns:Pt2d”/>(xs:attributetee=”exp:cType”fixed=”list”/)(/xs:complexType>7.2.3构造数据类型EXPRESS定义了两种称做“构造数据类型”的数据类型,只能出现在自定义数据类型的定义中。没有与之对应的XMI。模式数据类型,因为在EXPRESS中,该类型不能是任何对象的数据类型。7.2.3.1ENUMERATION数据类型对应于ENUMERATION(枚举)数据类型的XML模式数据类型是与EXPRESS自定义数据类型相对应的数据类型,见7.2.4和7.3.3。7.2.3.2SELECT数据类型对应于SELECT(选择)数据类型的XML模式数据类型是与EXPRESS自定义数据类型相对应的数据类型,见7.2.4和7.3.3。7.2.4自定义数据类型对于每个EXPRESS自定义数据类型,相应的XML模式数据类型是用XML模式数据类型定义进行定义的命名数据类型,XML数据类型名称及其定义应符合7.3的规定。7.2.5ENTITY数据类型对于每个EXPRESS实体数据类型,相应的XML模式数据类型是用XMI,模式数据类型定义进行定义的命名数据类型,XML数据类型名称及其定义应符合7.5的规定。7.3用于EXPRESS自定义数据类型的XML模式定义和声明EXPRESS的自定义数据类型是一种通过EXPRESS类型声明定义的数据类型,其中的类型声明采用uncle,厶勘gtype(基础类型)定义该数据类型。自定义数据类型被称作是该基础类型的specialization(专门化)。但是,EXPRESS自定义数据类型的基础类型自身也可能是一个EXPRESS自定义类型,后者由基于另一个基础类型的EXPRESS类型声明定义,如此类推。最终有~个,Un幽一mentaltype(基本类型)自身不是EXPRESS自定义类型,它是由EXPRESS语言规定的数据类型。注I:术语“自定义数据类型”、“基础类型”、“专门化”和“基本类型”来源于GB/Ti6656.1l2010,并被广泛应用于16656的本部分,定义自定义数据类型的映射和它们值的编码。对于相关语境模式中声明的或显式引入的每个EXPRESS自定义数据类型,导出XML模式都应包含一个XML模式数据类型定义。XMI.模式数据类型定义应依赖于EXPRESS自定义数据类型的基础类型,如下所示:——如果自定义数据类型的基础类型是一个简单数据类型(BINARY二进制类型、BOOI。EAN布尔型、INTEGER整型、LOGICAL逻辑型、NUMBER数字型、REAL实数型或STRING字符串型),则XMI,模式数据类型定义见7.3.1。——如果自定义数据类型的基础类型是一个聚合数据类型(ARRAY数组、BAG包、LIST列表或SET集合),则XML模式数据类型定义见7.3.2。——如果自定义数据类型的基础类型是一个ENuMERATION数据类型,则XML模式数据类型37 GB/T16656.28—2010/ISO10303-28:2007定义见7.3.3。一如果自定义数据类型的基础类型是一个SEI。ECT数据类型,则XMI。模式数据类型定义见7.3.4。——如果自定义数据类型的基础类型是其他自定义数据类型坝UX~Ⅱ.模式数据类型定义见7.3.5。导出XMI。模式还可包含一个相应的实例元素的声明,见7.4.3的规定。XML数据类型定义应独立于该实例元素声明且出现在该声明之外的地方。注2:EXPRESS自定义数据类型的基础类型不能是一个实体数据类型。7.3.’简单基础类型当基础类型是一个简单数据类型(BINARY、BOOI。EAN、INTEGER、LOGICAI。、NUMBER、REAl。或sTRING)时,相应的XMI,模式数据类型定义应当符合本条的规定。当基础类型是一个BINARY数据类型时,XML数据类型定义见7.3.1.1。当基础类型是BOOI。EAN、INTEGER、LOGICAL、NUMBER或REAI。数据类型时,XMI.数据类型定义见7.3.1.2。当基础类型是一个STRING类型时,XMI。数据类型定义见7.3.1.3。7.3.1.1BINARY数据类型的定义当基础类型是一个BINARY数据类型时,XML数据类型定义应有如下形式:(/xs:restriction>(/xs:simplecontent)(/xs:complexType>其中:~一identifier:从EXPRESS自定义数据类型的标识符中导出的,见7.1.2的规定。当基础类型是一个有约束的BINARY数据类型(见7.2.1.1.1)时,XMI,数据类型定义应有如下形式:(XS:complexTypename一”identifier”)(XS:restrictionbase--”exp:hexBinary”>(XS:attributename--”extraBits”fixed--”remainder”/>(/xs!restriction>(/xs:complexType>其中:——identifier和binary同上。----mlnLength、.mmgength和remainder见7.2.1.1.1的规定。7.3.I.2BOOLEAN、INTEGER、LOGICAL、NUMBER或REAL的定义当基础类型是布尔型,整型,逻辑型,数字型或实数型时,相应的XMI.数据类型定义应该有如下形式:(XS:simpleTypename一”identifier”)(/xs:restrlction>(/xs:simpleType>其中: GB/T16656.28—2010/ISO10303-2812007——jdentjfIer:是从自定义数据类型的EXPRESS标识符导出的,见7.1.2的规定。⋯一underlyirig-type:是对应于基础类型的XMI。模式数据类型,见7.2.1的规定。7.3.1.3STRING数据类型的定义当基础类型是一个无约束STRING数据类型时,对应的XMI。数据类型定义应该有如下形式:(XS:simpleTypename=”identifier”)(XS:restrictionbase=”xs:normalizedStrinq”)‘/XS:restriction>(/xs:SimpleType)其中:——identifier:是从自定义数据类型的EXPRESS标识符导出的,见7.1.2的规定。当基础类型是一个无约束STRING数据类型时,对应的XMI.数据类型定义应该有如下形式:(xs:simpleTypename一”identifier”)(xs:minLengthvalue=”minLength”/>其中:——identifier定义同上。——Ⅲi血e口gt^:如果被声明为FIXED,则它应该是EXPRESS的字符串数据类型规定的固定长度。否则,将忽略XS:minLength。——口axLen9th:应为EXPRESS的字符串数据类型规定的最大长度或者固定长度。7.3.2聚合基础类型当EXPRESS自定义数据类型的基础类型是一个聚合数据类型时——例如集合(SET)、列表(LIST)、包(BAG)或数组(ARRAY)类型,则对应于它的XMI。模式数据类型将依赖于多个因素,见7.2.2。自定义数据类型的XMI。模式数据类型定义的形式取决于对应于基础类型的XMI,模式数据类型的形式,但是它们都是cornplexType类型。因此,相应的XMI.数据类型定义应该有下列一般形式:(XS:complexTypename=”identifier”>(body)(/xs:complexType>其中:——刊曲tifier:是从自定义数据类型的EXPRESS标识符导出的,见7.1.2的规定。——(body):是对应于基础聚合数据类型的complexType类型的模型,见7.2.2的规定。注:在实际应用中,数据类型定义和相应的数据类型是一样的,除非nal?lle一“identiller”被添加到了初始的(xs:complexType)元素中。7.3.3ENUMERATION基础类型当EXPRESS自定义数据类型的基础类型是一个枚举(ENUMERATION)数据类型时,相应的XML模式数据类型应该是一个simpleType类型,该类型被定义为使用枚举类型的数据类型XS:string的一个限制约束。对于EXPRESS类型声明中的每个枚举项,都应有一个相应的XML模式枚举类型,其值应当是构成枚举项的EXPRESS标识符的字符串值,字符全都用小写。因此,XMI。模式数据类型定义应该有如下形式:39 GB/T16656.28—2010/ISO10303-28:2007(/xs:restriction></xs:simpleType>其中:——identj“er:是从自定义数据类型的EXPRESS标识符导出的,见7.1.2的规定。——∞um-iteml⋯enum-item-n:是EXPRESS枚举项的标识符,用小写字母表示。示例:EXPRESS表达:TYPEsource--姗嘞TIONOF(made,bought,notlⅡ帕wn);END_TYPE;XML模式表达:7.3.4SELECT基础类型当EXPRESS自定义数据类型的基础类型是一个选择(SELECT)数据类型时,相应的XML模式数据类型将取决于工作选择列表中的数据类型的数量,见7.3.4.1。如果工作选择列表不包含任何数据类型,则该SELECT数据类型就不被映射到导出的XML模式中。如果工作选择列表只包含一种数据类型,则:——相应的XMI,模式数据类型应该是与该类型相对应的XML模式数据类型。——相应的实例元素应该是与该类型相对应的实例元素。否则,导出的XML模式应该包含一个XML组(group)声明(见7.3.4.2)和一个复合类型(CONplexType)声明(见7.3.4.3)。相应的XML模式数据类型应该是复合类型(comp|exType),见7.3.4.3的规定。注:对于在选择列表中有不止一种数据类型的SELECT数据类型,不存在与其对应的实例元素(见74)。代替它的是在7.3.4.2中所规定的组,它与SELECT数据类型的实例元素是等效的。7.3.4.1工作选择列表SELECT数据类型的工作选择列表是按以下步骤产生的:——工作选择列表应该初始化为选择数据类型所包含的EXPRESS数据类型。——对于工作选择列表中的每个EXPRESS自定义数据类型,如果其基础类型是一个选择类型,那么应该从工作选择列表中删除该自定义数据类型而替换为列表中原有类型所对应的默认SELECT类型。——以上两步应不断的重复,直到在工作选择列表中不存在基础类型是选择类型的自定义数据类型。——对于在工作选择列表中出现的每一个EXPRESS实体数据类型,所有在相应的子类组中出现40 GB/T16656.28—2010/ISO10303-28:2007的子类都应该添加到工作选择列表中。例外:已经在工作选择列表中的数据类型则没必要再重复舔加。注1:使用有关实体数据类型的类型图(见7.5.1),每一个有一条路径通往相应于实体数据类型的节点的叶节点都表达一个可能的子类,每一个依赖于这样一个路径的节点也都表达一个可能的子类。如果一个叶节点存在一条到另一个与实体数据类型相关节点的通路,则该叶节点表示了一个可能的子类,并且此通路上所有的节点也表示了一个可能的子类。已经在工作选择列表中的数据类型没有必要再重复添加。一所有的抽象实体数据类型(见6.3)都应该从工作选择列表中删除。注2:工作选择列表是所有EXPRESS数据类型的集合,这些EXPRESS类型的实例被采纳为起始选择数据类型的实例被原始选择数据类型所接受。嵌套选择数据类型也被扩展到了这个列表。注3:基础类型是另一个自定义数据类型的自定义数据类型是不能替换/扩展到工作选择列表的,即使它的基本类型是一个选择数据类型。该自定义数据类型经常被看做是一个特殊化数据类型,且其信息保留在XML模式类型模型中。示例1:EXPRESS表达:TYPEan_int=INTEGER;END_TYPE;TYPEan_odd_int=anint;WHEREodd:NOT(SELF=2*(SELF/2));END_TYPE;TYPEmy_select=SELECT(an_int,an_oddint);END_TYPE;MY—SELECT的工作选择列表是{an—int,an_odd—int)示例2:(接着上面)EXPRESS表达:TYPEmy_select2=SELECT(an_odd_int);END_TTPE;MY—SE[,ECT2的工作选择列表是:{an_odd-int)。7.63.2给出了my_select2类型的一个属性的例子。7.3.4.2SELECT数据类型的XML组声明当EXPRESS自定义数据类型的基础类型是一个选择数据类型,这个选择数据类型有一个包含多于一个数据类型的工作选择列表,那么导出的XMI。模式应该包含一个对应EXPRESS自定义数据类型的组声明。组的名称应该是如7.1.3所示从EPRESS自定义数据类型的标识符中导出。组的内容应该是从选择数据类型的工作选择列表导出,如7.3.4.1中所示。组应该只包含一个choice元素。对于工作选择列表中的每一个EXPRESS数据类型,choice元素应该包含一个对应该EXPRESS数据类型的实例元素的声明,或包含一个在它的子类组中出现的实例元素的声明。元素声明应该有一个ref属性,其值是实例元素的合格名称。即组声明应该有如下形式:(XS:choice>(KS:elementref=”select—list—item-i”/)(XS:elementref=”select—list—item-n”/)complexEntity-usage(/xs:choice>41 GB/T16656.28—2010/tso10303-28:200742</xs:group>其中:(1)identifier是从EXPRESS的自定义数据类型的标识符导出的,在7.1.2中规定。(2)selectlistitem一1’一selectlist—item—i1:在选择组内容列表中的每一个实例元素的合格名称,是按照下列步骤确定的:——选择组内容列表应该初始化成包含:·对应于工作选择列表中的每一个EXPRESS数据类型(非实体)的实例元素;·在工作选择列表中的每一个实体数据类型的子类组定义。——对于每一个子类组定义,子类组应该被删除,用每一个实例元素来代替,并且子类组包含在内。~一以上几步不断重复,直到在选择组内容列表中没有子类组,只有一组实例元素。一列表中的任何重复的实例元素应该删除。——列表中的任何抽象的实例元素应该删除。(3)complexEntity_usage:如果工作选择列表中的每项都是一个实体数据类型的实例,这个实体数据类型可能是没有表征的,那么选择组应该包含(xs:elementref--”exp:complexEntity”/),否则complexEntity元素将被忽略。注:由于工作选择列表中每个类型均有其类型名,实例元素的合格名称将从相应的EXPRESS数据类型标识符中导出得到,见71.3规则。示例:EXPRESS表达:TYPElabel=S豫ING:ENDTYPE;TYPElength_measure2REAL;END—TYPE;TYPEtrafficlight=ENUMERATIONOF(red,yellow,green);ENDTYPE;TYPEinner=SELECT(1abel,lengthmeasure);ENOTYPE;TYPEs2SELECT(1ength_measure,traffic—iight,pipeentity,inner)‘ENDTYPE;ENTITYpipeentity:name:STRING;ENDENTITY;SEI。ECT组内容列表应被初始化为:Tns:Label-wrapperTns:Lengthmeasure_wrapperTns:Pipe_entity-groupTns:Trafficiight—wrapperXMI。模式表达:‘/xs:group) GB/T16656.28—2010nso10303-28:20077.3.4.3SELECT数据类型的XML数据类型定义当EXPRESS自定义数据类型的基础类型是一个选择数据类型,这个选择数据类型的工作选择列表包含多种数据类型,那么相应的XML模式数据类型应该是一个复合类型,其内容模式是对应于选择数据类型的组,具体见7.3.4.2。复合类型定义应该有如下形式:(XS:complexTypename一”identifier”)其中:1dentlfier是从EXPRESS的自定义数据类型的标识符导出的,见7.1.2。——groupname是对应于选择数据类型的组的合格名称,见7.3.4.2。——exp:arraySizeusage:如果包含在选择组(见7.3.4.2)中的任何一个实例元素都表示匿名集合,则(XS:elementref一”exp:arraySize”use一”optional”/>。否则,exp:arraySize元素将被忽略。注1:在对应于选择数据类型的组中的每一个实例元素,都包含可选XMI.属性path,在745中规定。path属性规定选择列表中在那个值上实例化的类型。注2:为r允许存取访问元素(见7.63)引用(而不是包含)选择数据类型的一个值,复合类型包含ref属性,并且允许choice组被忽略。943要求或者ref属性被表达,或者其内容包含choice组的一个实例。示例:接着上面7342中的示例,XML复合类型声明就是:(XS:complexTypenaffie=”S”)(XS:groupref一”Tns:S”minOccurs=”0”maxOccurs一”i”/>7.3.5自定义数据类型的基础类型如果EXPRESS自定义数据类型的基础类型是另一种自定义数据类型,相应的XMI。模式数据类型模型应该取决于对应于基本类型的XMI。模式数据类型。如果对应于基本类型的XMI。模式数据类型是一个simpleType(简单类型),那么XMI,模式数据类型模型应该是一个simp[eType(简单类型),并且这个简单类型是从对应于基础类型的XMI,模式数据类型通过限制导出的。XML模式数据类型定义应该有如下形式:(XS:simpleTypename=”identifier”)(contentUsage>(XS:restrictionbase=”underlying-type”>(contentmodelforthefundamentaltype)(/xs:restriction>(/contentusage>(/KS:complexType)43 GB/T16656.28—2010/lso10303-28:2007其中,对于任一种情况,——identifier:是从EXPRESS的自定义数据类型的标识符导出的,见7.1.2。--underlying-type:是对应于基础类型的XML模式数据类型的合格名称。——cont∞t口sage:当对应于基础类型的复合类型具有复合内容,contentUsage就应该是XS:com—plexContent-。否则,它应该是XS:simpleContent。——(contentmodelforthefundamentaltype):当对应于基础类型的复合类型有复合内容,这是描述对应于自定义数据类型的基本类型的XMI。数据类型的内容的XML小点(particle):如果基本类型是一个聚合数据类型,那么在7.2.2中所规定的sequence(序列)particle,或者如果基本类型是一个选择类型,那么在7.3.4.2中所规定的组。这些XML基本元素描述了与自定义数据类型的基本类型相对应的XML数据类型的相关内容,如果基本类型为一个聚合类型则sequence部分在7.2.2阐述,或者,如果基本类型为一个选择类型则group部分在7.3.4.2阐述。注:内容模型不需要包含基本类型的属性。示例1:EXPRESS表达:TYPERatioMeasure=REALoENDTYPE;TYPENormalisedRatioMeasure2RatioMeasure5WHEREWRI:{0.0(=SELF<=10};ENDTYPE;XMI,模式表达:(/xs:szmpleType>示例2:使用上面7.3.42中的例子。EXPRESS表达:TYPE8一SELF/2T(1enGth_measure,traffib—l均ht,pipe—entity,inner);END_TYPE;TYPEs2一S:END_TYPE;XML模式表达:(XS:restrictionbase=”Tns:S”>(xs:groupref=”Tns:S”minOccurs。”0”maxOccurs=”1”/)(/xs:restriction></XS:complexContent) GB/T16656.28—2010/ISO10303-28:2007(/XS:complexType)7.4对应于EXPRESS数据类型的实例元素实例元素是一个XML元素,是为一个EXPRESS数据类型而命名的,表达那个EXPRESS数据类型的一个值。取值实例元素是一个内容为数据值的实例元素。引用实例元素是一个没有内容,但包含对取值实例元素的引用的实例元素。这个取值实例元素的内容是数据值。注l:大多数非实体数据类型的实例元素都是取值实例元素。对应于一个EXPRESS实体数据类型的实例元素的声明将在7.5阐述。当下面的任何一种情况出现时,对应于一个既不是实体数据类型也不是选择数据类型的EXPRESS数据类型的实例元素应该被声明:——EXPREss数据类型作为一个聚合数据类型的基类型而出现,且该聚合数据类型使用元素序列表达(见7.2.2);——ExPREss数据类型出现在一个选择数据类型的工作选择列表中(见7.3.4);——ExPREss数据类型的值可以通过引用而出现(见7.4.6)。否则,实例元素可以在导出的XML模式中,但这不是必须的。例外:如果实例元素已在基本XML模式中声明,它就不应该在导出的XML模式中再次声明,在7.4.1规定。不应该为基础类型是一个选择类型的自定义数据类型声明任何实例元素。注2:对于一个基础类型是选择类型的自定义数据类型,XMI。组声明和实例元素相等7.3.42所规定的XMI,组声明等价于此处的实例元素声明。但是一个基础类型是一个自定义数据类型并且这个自定义数据类型的基本类型是一个选择数据类型(也就是说,一个选择数据类型的特殊化),的自定义数据类型没有实例元素但是如果一个自定义数据类型的基础类型为另一个自定义数据类型并且其基本类型为一个SELECT类型(也就是说,该自定义数据类型为SELECT类型的一个特例,即嵌套定义),则它将有一个实例元素。上述例外不适用于这样的数据类型。实例元素声明应该按照7.4.1~7.4.4中的EXPRESS数据类型来规定。注3:一个EXPRESS数据类型,但不是一个实体数据类型,它的值的典型用法是用作一个实体属性的值一个非实体数据类型的EXPRESS数据类型的典型应用是将其作为一个实体属性的值。在这种情况下.EXPRESS数据类型值表示为XMI,元素的内容,或者表示为一个表示了EXPRESS实体属性的XML属性(见7.6)。然而,一个EXPRESS数据类型的值可以作为一个聚合值的组成部分或作为一个选择数据类型的值出现在一个实例文档中。在这些情况中,EXPRESS数据类型的值可能通过一个实例元素表达。7.4.1简单数据类型的实例元素基本XMI,模式(见附录c)为每一个EXPRESS简单数据类型声明一个实例元素。实例元素的数据类型是对应于EXPRESS数据类型的XML模式数据类型,并且实例元素增加了instanceAttributes属性组(见7.4.5)。在某些情况下,简单类型的附加实例元素可能在导出的XMI。模式中声明。见下面。7.4.1.1BINARY数据类型对应于EXPRESS二进制数据类型的实例元素应该是exp:hexBinary—wrapper元素。例外:如果EXPRESS二进制数据类型规定了一个最大值或固定长度,相应的实例元素将在7.4.1.1.1中规定。声明在基本XML模式中的exp:hexBinarywrapper实例元素如下:(XS.elementname--”hexBinary-wrapper”nillable一”true”)(XS:complexType)(XS:attributeGroupref=”exp:instaneeAttributes”/>45 GB/T16656.28—2010/lso10303-28:2007(/xs:extension>(/xs:Simpleconten七>(/xs:complexType>(/xs:element)7.4.1.1.1有约束BINARY实例元素如果EXPRESS中二进制数据类型规定了最大长度或固定长度(见7.2.1.1.1),则相应的XMI.模式中实例元素的声明将有如下形式:</xs:extension>(/xs:simplecontent)</xs:complexType>(/xs:element>其中:——binarytype是为有约束二进制数据类型所声明XMI.模式数据类型的合格名称。详见7.2.1.1.1。——bits是为EXPRESS数据类型所规定的用字条表示的固定长度或最大长度。——如果EXPRESS二进制数据类型长度声明为固定的,那么minBits应该设置成bits,否则为0。示例:EXPRESS表达:ENTITYaccess—authorization;title:STRING;codes:LISTOFBINARY(12)FIXED;END-ENTITY;那个形式要求对应于列表基类型BINARY(12)FIXED的实例元素应该声明如下:(xs:elementname--”Binary1212-wrapper”nillable--”true”)(XS:complexType>(XS:slmpleContent)(/xs:extension)(/xs:simplecontent)</xs:complexType></xs:element>7.4.1.2BOOLEAN数据类型对应于EXPRESS布尔数据类型的实例元素是exp:boolean—wrapper元素。exp:boolean—wrapper元素声明在基本XML模式中,如下:(XS:simplecontent)(XS:extensionbase=”XS:boolean”></xs:element>7.4.1.3INTEGER数据类型对应于EXPRESS整数数据类型的实例元素是exp:longwrapper元素。实例元素声明在基本XMI。模式中,如下:(XS:extensionbase=”XS:long”)(/xs:simplecontent)(/xs:complexType>(/xs:element>7.4.1.4LOGICAL数据类型对应于EXPRESS逻辑数据类型的实例元素是exp素声明在基本XML模式中,如下:instanceAttributes”/>logical—wrapper元素。exp:logical—wrapper元(XS:simpleContent>(/xs:Si“plecontent)</xs:complexType></xs:element>7.4.1.5NUMBER数据类型对应于EXPRESS数字数据类型的实例元素是exp:decimal—wrapper元素。实例元素声明在基本XML模式中,如下:(/xs:si“plecontent>(/xs:eomplexType>(/xs:element>7.4.1.6REAL数据类型对应于EXPRESS实数数据类型的实例元素是exp:double-wrapper元素。实例元素声明在基本XMI。模式中,如下:47 GB/T16656.28—2们0/iso10303—28.2007(xs:elementn61me=”double-wrapper”nillable=”true”)</XS:complexType)(/xs:element>7.4.1.7STRING数据类型对应于EXPRESS字符串数据类型的实例元素是exp:string-wrapper元素。例外:如果EXPRESS字符串数据类型规定了一个最大值或固定长度,那么对应的实例元素将在7.4.1.7.1中阐述。exp:string—wrapper元素声明在基本XMI。模式中,如下:(xs:elementname=”string-wrapper”nil/able=”true’’、(XS:complexType>(XS:si“pleContent>(/xs:simplecontent>(/xs:complexType>(/XS:element)7.4.1.7.1有约束STRING实例元素对应于一个最大值或固定长度已经规定了的EXPRESS字符串数据类型的实例元素应该在导出的XMI.模式中声明,如下;(XS:complexType>(xs:simpleContent></xs:si“plecontent>(/xs:complexType)</xs:element>其中:strin群ype是对应于有约束字符串数据类型的xML模式数据类型自由类型名。详见7.2.1.7.1。——bits是为EXPRESS数据类型所规定的用字条表示的固定长度或最大长度。Tns:stringtype是对应于有约束字符串数据类型的XML模式数据类型的合格名称。示例:EXPRESS表达:ENTITYuser;title:STRING;userids:SETOFSTRING(8);48 GB/T16656.28—2010/ISO10303-28.2007ENU_ENTITY;那个形式要求对应于集合基类型STRING(8)的实例元素声明如下:</xs:slmpleContent>(/xs:complexType></XS:element)7.4.2匿名聚合数据类型的实例元素如果一个实例元素表示了一个匿名聚合数据类型,如7.4所规定的那样,那么这个实例元素应该被声明,像在本条中规定的这样。对于一个匿名聚合类型的实例元素,它将与相关语境模式中所有的聚合类型相对应,只要这些聚合有相同的基类型而不管其具体类型(如集合、列表、包或数组)。由于实例元素表示了任何基本类型相同的聚合类型的值,所以它应该包含定义在7.2.2.1中的re{,arraySize,itemType和cType属性。因为实例元素可能是引用的(见7.4.6),或表达一个多层聚合值中的一“行”,所以它应该包含in—stanceAttributes组(见7.4.5)。在实例元素声明中的XML模式数据类型应该取决于对应聚合数据类型的XML模式数据类型。如7.2.2所述,但不同之处在于:——如果对应于聚合数据类型的XML数据类型有7.2.2所示的值列表形式,那么实例元素声明将在接下来的7.4.2.1规定。——如果对应于聚合数据类型的XML数据类型有7.2.2所示的元素序列的形式,那么实例元素声明将在接下来的7.4.2.2规定。——如果对应于聚合数据类型的XMI。数据类型有7.2.2.4所示的多维数组形式,那么实例元索声明将在7.4.2.2以元素序列形式声明,略有不同的是此处的基类型被视为是多维数组结构的最基础类型。注1:元素序列实例元素表达了(最深层)基类型实例元素的所有聚合,而不考虑其维数是多少。注2:值列表实例元素表达了(最深层)基类型的值的所有序列化聚合,而不考虑其维数是多少。7.4.2.1list—of-values形式的实例元素如果对应于聚合数据类型的XML模式数据类型使用值列表形式(见7.2.2.3),那么实例元素的内容模型应该是一个简单列表,这个简单列表由XML实例属性和集合属性扩展而成。实例元素声明应该有如下形式:(XS:elementname=”element—name”nillable=”true”>(XS:complexType)(XS:si“pleContent)(/xs:extension>(/xs:simplecontent)(/xs:complexType)(/xs:element>49 GB/T16656.28—2010/Iso10303—28:2007其中:一elementname,实例元素的XMI。名称,应具有形式:seqbase,其中base是对应于聚合数据类型的基类型的XML模式数据类型的自带名称部分。--unrestricted—type是不受限XMI。数据类型的合格名称,该类型支持基类型的所有聚合,聚合数据类型的所有聚合任意聚合数据类型的基本类型,在7.2.2.3.2中规定。注l:对应于基类型的实例元素从不用在这个表达中。注2:实例元素被声明为use一”optional”,就需要这个实例元素的XMI,属性的很多行为,这些行为在98巾规定。示例:对于EXPRESS匿名数据类型:ARRAY[13]OFREAL实例元素声明将是:(xselementrlalⅡe=”Seq-double”nillable=”true”)(XS:complexType>(xssimpleContent>(xs:attrlbuteGr。upref=”exp:instanceAttributes”/>(/xs:extension)</xs:simpleContent></XS:complexType></xs:element>7.4.2.2所有sequence-of-elements形式的实例元素如果对应于聚合数据类型的XMI.模式数据类型使用元素序列的形式,或多维数组的形式(见7.2.2.4),那么实例元素声明应该有如下形式:(x3:elementname=”element—name”nilfable=”true”>(XS:complexType>(XS:sequence)(/xs:element)其中:--element-name:实例元素的XMI,名称,应该具有形式:seqbase,其中base是base—instance名称的自有部分(见下面)。——base-instance:用术语“base—types”引用元素序列形式的聚合数据类型的EXPRESS基类型,或引用多维数组形式最基本类型指代EXPRESS中具有元素序列或顺序行形式的聚合类型的基本类型,或者指代具有多维数组形式的最深一层的基础类型。如果基类型是一个实体数据类型,base—instance应该是对应的复合实体(complexEntity)组的合格名称(见7.5.6.2)。如果基类型是一个选择数据类型,baseinstance应该是对应的组的合格名称(见7.3.4.2)。否则,base—instance是对应的实例元素的合格名称(见7.4)。50 GB/T16656.28—2010/lSO10303-28:2007⋯elementor-group:如果base—instance是一个元素,那么element—orgroup应该是XS:element;如果baseinstance是一个组,那么element—or—group应该是XS:group。注l:对应于聚合数据类型的XMI。数据类型,像在722中所规定的一样。并不真正地用在这个声明中。注2:尽管ref.cType和arraySize属性声明为use--“optional”,但是9.8要求它们出现在特定的情况下.尤其是当实例元素代表一个多维聚合值的时候。示例:EXPRESS匿名数据类型:LIST[I。?]OFARRAY[1:3]OFREAL实例元素声明如下:(xs:elementname”Seq~double-wrapper“nillable一”true”)(XS:complexType)(XS:sequence>(xs:elementref一”exp.double-wrapper”minOccurs=”0”maxOccurs一”unbounded”n(/xs:sequence)(x8:attributeuse一”optional”type一”XS:IDREF”name--”ref”/、(XS:attributefixed一“exp:double-wrapper”ref=”exp:itemType”/)(xs:attrlbuteGroupref一”exp:instanceAttributes”/>(/xs:complexType></xs:element>7.4.3自定义数据类型的实例元素对于作为一个聚合数据类型的基类型而出现,或在一个选择数据类型的选择列表中出现的每一个EXPRESS自定义数据类型,导出的XMI,模式应该包含一个实例元素的声明。例外:对应于一个自定义数据类型的实例元素没有基础类型是选择数据类型的如果一个自定义数据类型的基础类型为SEI,ECT类型,则不存在与其相对应的实例元素,且相应的XMI.模式对象是一个组(见7.3.4.2)。注l:如果自定义数据类型的基础类型是一个选择类型,且工作选择列表包含不止一种数据类型,那么对应于这个自定义数据类型的XMI,模式对象是一个组(见7342)。当工作选择列表只包含一种数据类型,只有唯一一种选择的实例元素用作自定义数据类型则该唯-一选项的实例元素将应用于该自定义类型(见73.4)。注2:对于一个基本类型为选择数据类型但其基础类型却不是选择类型的自定义数据类型.有一个和在本条中所规定的一样的实例元素。如果对应于自定义数据类型的XML模式数据类型是一个简单类型,那么实例元素声明应该规定内容数据类型就是该简单类型,并且实例元素声明也应该通过引用包含isntanceAttributes组。即实例元素声明应该有如下形式:(XS:elementname=”element—name”nillable=”true”>(/xs:simplecontent>(/xs:complexType);/xs:element>£1 GB/T16656.28—2010/ISO10303-28:2007其中:——t瑚}nm:是对应于EXPRESS自定义数据类型的XMI。模式数据类型的合格名称(见7.1.3)。——local-type-name:是typename的本地部分。——element-name:如果EXPRESS自定义数据类型的基本类型是BOOI。EAN、INTEGER、LOG一1CAL、REAL、NUMBER、STRING、BINARY或ENUMERATION类型,那么elementname有localtypenamewrapper形式,否则,elementname和localtypename相同。如果对应于自定义数据类型的XMI。模式数据类型是一个复合类型,实例元素声明应该规定实例元素的数据类型是包含instanceAttribute组的该数据类型的扩展。即元素声明应该有如下形式:(XS!elementname一”local—type—name”nillable一”true”)(XS:complexType>(XS:complexContent)(XS:extensionbase--”type-name”>(XS:a七trlbuteGr。upref--”exp(/XS:extension)(/xs:complexcontent>(/xs:complexType>(/xs:element)其中typename和localtype—name如上面定义的那样。示例:EXPRESS表达:TYPEmaterial—type=㈣TIONOF(steel,copper,plastic);ENDTYPE;TYPElist_of—materials=SET[17]ofmaterial—type;ENDTYPE}XMI,模式表达:(XS:simpleTypename=”Material—type”)(XS:enumerationvalue=“copper”/>(XS!enumerationvalue=”plastic”/>(/xs:restriction></xs:SimpleType)(XS:complexType>(XS:simpleContent>(xs:extensiontype=“Tns:Material—type”)(/xs:complexType></xs:element)7.4.4实体数据类型的实例元素对于一个EXPRESS实体数据类型,其相应的实例元素规则将在7.5.5中规定。7.4.5实例元素属性所有的实例元素都应该有一个包含XML属性组instanceAttribute的复合类型,属性组定义在基52 GB/T16656.28—2010/iso10303—28.2007本XMI.模式中,如下:(XS:attributename=”pos”use=”optional”>(XS:simpleType></xs:simpleType)</xs:attribute>(/xs:attributeGroup>id属性为实例元素规定了一个本地XML标识。,d属性应该只在基于值的实例元素(提供EX—PRESS值的元素,见7.4)中出现。它使得实例元素,在文档的其他地方,在一个基于引用的存取访问或实例元素中被引用这个属性使得实例元素被基于引用的存取访问所引用,或被文档中的其他实例元素所引用。path属性规定EXPRESS中已有数据类型的集合,这些数据类型被实例元素中的值所实例化。path属性只在表示EXPRESS选择数据类型值的实例元素中出现。这个属性值是由空格隔开的XMI.名称的列表,每一个XML名称都是对应于EXPRESS中已有数据类型的XML类型名称的自带部分,其中EXPRESS中已有数据类型被实例元素的值所实例化。当用到特定的集合表示时(见9.8.3和9.8.5),pos属性指定一个给定数组分量值的位置或索引。pos属性值应该是由空格分开的数组分量索引的列表,每一个都表示为一个十进制整数。7.4.6可引用实例如果序列化单元中的任何元素都可以包含一个对EXPRESS数据类型的一个值的引用,那么这个EXPRESS数据类型是可引用的。因为对不同的EXPRESS数据类型有不同的默认映射,所以一个数据类型是否是可引用的,要根据不同的数据类型而变化。在默认XMI。模式中,每个EXPRESS实体数据类型都是可引用的,除非该实例都不是序列化单元中的属性的值,其中这个序列化单元是与相关语境模式相符合的。在默认XML模式中,每一个非实体EXPRESS数据类型都是可引用的。7.5EXPRESS实体数据类型的XML模式定义和声明对于每一个声明或引入到相关语境模式中的EXPRESS实体数据类型,相应的XMl.模式定义和声明应该依赖于EXPRESS实体声明和相联系的类型图的结构,在7.5.1中规定。导出的XMI,模式应该包含:——对应的XMI。数据类型的一个复合类型定义,在7.5.4中规定;——一个对应的实例元素声明,在7.5.5中规定;——对应的XML组声明,在7.5.6中规定;——一个对应的单一实体值声明,如果需要的话,在7.5.7中规定;——对应的代理元素声明,在7.s.8中规定;——对应的XMI。唯一性限制,在7.5.9中规定。53 GB/T16656.28—201O/ISO10303—28:2007例外:如果实体数据类型声明成抽象的(见6.3),应该有相应的XMI,组声明(在7.5.6定义),XMI,唯一性限制(在7.5.9定义),和可能的单一实体值声明(在7.5.7定义),但是没有相应的XMI.数据类型,实例元素或代理元素声明。7.5.1和EXPRESS实体数据类型相联系的类型图在相关语境模式中被声明或引入的EXPRESS实体数据类型的集合形成了一个“类型图”集合。每一个类型图由一系列代表实体数据类型的节点和一系列代表SUBTYPEOF关系的有向边组成。这个类型图集合根据以下算法生成:(】)如果所有的EXPRESS实体数据类型已经被归人每个类型图,停止。(2)任选一个尚未归人类型图的实体数据类型,创建一个新的类型图,这个实体数据类型作为一个节点包含在这个新的类型图里。(3)对于给定的实体数据类型,把它的所有直接超类除去重复类型作为节点加入到类型图中,将给定的实体数据类型用代表SUBTYPEOF关系的有向边连接到它的每一个超类。(4)对于给定的实体数据类型,把它的所有直接子类除去重复类型作为节点加入到类型图中,将给定的实体数据类型的每一个子类用代表SUBTYPEOF关系的有向边连接到该实体数据类型。(5)重复第三步和第四步,把每~个新的实体数据类型加入到类型图(通过第三步或第四步),直到操作完类型图中所有的实体数据类型,回到第一步。在类型图中,代表一个没有超类的实体数据类型的节点叫做根节点(rootnode)。如果一个节点代表的实体数据类型在相关语境模式中没有子类,且没有综合子类,那么这个节点叫做叶节点(1eafnode)。一个类型图被称为树结构,如果它有唯一的根节点,并且对于每一个叶节点,从叶节点到根节点沿着有向边有唯一的一条路径。一个类型图与它其中表示的每一个EXPRESS实体数据类型有关联(associatedwith)。使用上面定义的构造算法,相关语境模式中的每一个EXPRESS实体数据类型都与一个确定的类型图相关联。注l:本条没有陈述任何的需求,而是定义r一个概念和一组术语,它们在其他条的需求中要用到。注2:“类型图”是概念上的它表示一个相关语境模式中的所有实体数据类型,这些实体数据类型通过子类/超类型的关系相互联系。整个类型图中的所有“路径”组成的集合-这里的路径是指沿着有向边从一个给定的实体数据类型到任何根节点的路径,包括了所有的实体数据类型,而给定的实体数据类型的一个实例从这些类型中继承属性。这里介绍“类型图”是为了简化实体数据类型映射的描述。一个限定的前置处理器或后处理程序不需要每一次都实例化类型图。注3:一个类型图可能包含一种实体数据类型。当实体数据类型没有模型他的子类且它本身也不是一个子类时,就是这种情况。注4:每一个类型图都有一个或多个根节点和叶节点。并不是每⋯个类型图都是树形结构。一个类型图可能是一个“网格”.有一个根节点但至少有这样一个叶节点,这个叶节点有多条路径通向根节点。一个类型图可能有多个根节点。7.5.2复合实体实例每一个EXPRESS实体实例实例化了一个或多个实体数据类型,所有这些实体数据类型可以和7.5.1中定义的单一类型图中的节点相联系,与实例相联系的类型图是由这些节点所组成的图。在GB/T16656.11中,一个复合实体实例是由一个以上的EXPRESS实体声明描述的。也就是说,一个复合实体实例是一个实例化了一个以上实体数据类型的实例,也就是说,一个复合实体实例是一个实例,与这个实例的相联系的子图有多于一个节点。所包含的每一个实体声明都定义_『一个单一实体值,也就是,包含那个实体声明中所定义的属性集的复合实体实例的一部分。并且对于每一个实体值,在子图中都有一个相应的节点和实体实例相联系。在GB/T16656的本部分中,复合实体实例进一步分为特征化的和非特征化的,如下:一⋯所谓一个实体实例通过一个实体数据类型特征化,是指这个实体数据类型是在实例中实例化.并且它是在实例中实例化的其他实体数据类型的一个子类。一个特征化的实体实例在E4 GB/T16656.28—2010/iso10303—28:200716656.11中被称作一个单一叶子(singleleaf)实例一子图表只有一个叶节点。所谓一个实体实例是非特征化的,是指没有实体数据类型特征化它。一个非特征化的实体实例在GB/T16656.11中被称作一个多叶子(multileaf)实例——子图表有多于一个叶节点。注1:对应一个实体实例的子图表的叶节点可能不是类型图的叶节点。每一个特征化的实体实例应该在序列化单元中表示特征实体数据类型的一个实例,在9.3中规定。注2;如果实体实倒是特征化的,对应于叶节点的EXPRESS实体数据类型有用于表示实体实例的所有属性和相应的XMI。模式元素.像在本条中定义的那样,可以用于表达实例对应于叶节点的EXPRESS实体数据类型具有用于表示实体实例的所有属性,且在本条中定义的相应的XMI,模式用来表示这个实例。如果实体实例是非特征化的,在EXPRESS模式中没有一个单一实体数据类型具有用于表达实体实例的所有属性。当于类间有ANDOR关系时,这种情况就出现了。非特征化的实体实例可以用exp:cornplexEntity元素表示(见753.3),详见9.3。7.5.3EXPRESS实体数据类型的基本XML数据类型和元素导出的XML模式应该以引用形式包含一个XMI。数据类型,用于代表EXPRESSGENERIC—ENTITY(通用实体)数据类型。通用实体数据类型是相关语境模式中所有EXPRESS实体数据类型的超类。导出的XMI。模式也应该通过引用包括相应的XMI。元素,以成为包含所有实体实例元素的一个替代组的根。通用实体数据类型为exp:Entity(见7.5.3.1),并且在导出的XMI。模式中不需要附加的定义。通用实体实例元素是exp:Entity,在基本XMI。模式中声明,如下:(xs:elementname=”Entity”type=”exp:Entity”abstract=”true”/>导出的XMI,模式也可声明一个根实体实例元素,这个根实体实例元素描述相关语境模式中所有独立的可实例化的EXPRESS实体数据类型的超类。根实体数据类型是exp:entity(见7.5.3.1),根实体实例元素应该和上面所说的通用实体实例元素一样。注:在EXPRESS中,独立可实例化实体数据类型是通过使用(USE)而不是引用(REFERENCE)来相互联系的。这些定义和声明在下面的子目录中讲述。7.5.3.1实体数据类型的基本XML数据类型——exp:Entity对应于EXPRESS实体数据类型的XMI,模式数据类型是对称作exp:Entity的复合类型的扩展,在摹本XMI,模式中定义(见附录C),如下:(XS:attributeha/Re=”href”type=”XS:anyURl”use=”optional”/)(xs:attributen:jiRe=”ref”type=”xs:IDREF”use=”optional”/>(XS:attributename=”proxy”type=”XS:IDREF”use=”optional”/)(XS:attributename=”edo”type=”XS:anyURl”use=”optional”/>(XS:attributeGroupref=”exp:instanceAttributes”/)(/xs:complexType>ld属性(来自exp:instanceAttributes)为实体元素规定了一个本地XML标识。id属性只在取值实例元素(即提供EXPRESS实体实例的信息内容的元素,见9.3.1)中出现。它使得元素可以被文档其他地方的引用实例元素或引用存取访问元素所引用。ref属性规定一个本地XML标识符,用于标识一个在文档其他地方出现的取值实例元素。ref属性只出现在引用实例元素(即包含对取值实例元素引用的元素,见9.3.3)中,而不提供信息内容。proxy属性为一个代理元素规定本地标识,代理元素用于从某个外部资源获得一个取值实例元素。proxy属性只在一个基于代理的实例元素(即通过代表引用外部的基于值的实例元素的元素,见9.3.2)中出现。href属性为在某个外部资源中的基于值的实例元素规定一个访问路径。href属性值具有形式:uri#id,其中url是一个符合IETFRFC2396的URI,用于定位外部资源,标识符id是一个局限于该资源55 GB/T16656.28—2010/ISO10303-28:2007的XML标识符,用于标识一个基于值的同类型的实例元素。href属性只出现在基于路径的实例元素(即直接引用了外部的取值实例元素的元素,见9.3.2)中。edo属性为作为资源的实体实例规定一个通用标识符。edo属性唯一地标识实体实例,而不管它的位置和编码形式如何。该属性可能在一个取值实例元素中出现,也可能以任何形式在外部引用中出现;它不应该出现在一个引用实例元素中。因为一个实例元素可能代表聚合值中的一个元素,所以复合类型也要包含pos属性(见7.4.5)。注:取值实例元素、引用实例元素和外部实例元素的使用规则详见93。7.5.3.2代理元素的基本XML数据类型——exp:edokey外部实例元素是一个包含在外部资源中的实体实例元素。一个代理元素是一个出现在序列化单元中并且包含对外部实例元素的全局唯一、永久标识的元素,因此信息应该能够进入外部实例。导出的XML模式包括对应于外部实体实例元素的代理元素的声明(见7.5.8)。代理元素的XML数据类型是名称为exp:edokey的复合类型的扩展。exp:edokey数据类型的目的是提供代理元素的基本数据结构。代理元素的数据类型是从exp:edokey导出,并且依赖于外部实体实例的数据类型。为了方便,代理元素声明为属于一个基于抽象元素的也称作exp:edokey的一般替代组。exp:edokey数据类型和元素在基本XML模式中定义,如下:(XS:complexType‘name=”edokey”abstract=”true”5(xs:extensionbase--”exp:Entity”></xs:extension></ms:complexContent>(/xs:complexType>(/xs:element>exp:complexEntity元素应该包括在复合实体实例中实例化了的每一个实体数据类型的单一实体值元素(在7.5.7中详细介绍)。XMI.属性entities的值应该是对应于单一实体值的实体数据类型的EXPRESS标识符的列表(见7.57)。7.5.3.4单一实体值的基本XML数据类型和元素——exp:Single-Entityexp:singleEntity元素是替代组的基本XMI。元素,替代组描述序列化单元中的单一实体值元素。exp:single—Entity数据类型是单一实体值元素的基本XMI,数据类型。它们在基本XMI,模式中声明,如下:对应于一个给定的EXPRESS数据类型的XML单一实体数据类型扩展了这个数据类型,它包括了在相应的EXPRESS实体声明中声明的EXPRESS属性。见7.5.7。7.5.4实体数据类型的XML数据类型定义EXPRESS实体数据类型的复合类型定义应该独立,并且出现在所有XML复合类型定义和元素声明之外。也就是说,复合类型应该属于模式命名空间。对应于EXPRESS实体数据类型的复合类型应该是对exp:Entity数据类型的扩展。扩展应该包括对应于实体数据类型的EXPRESS属性的存取访问元素和存取访问属性的声明,详述如下。注1:存取访问元素在一个(a11)组中声明,来最大化顺序的独立性和在任意实例文档中的EXPRESS属性的扩展性。即复合类型声明应该有如下形式:(xs:complexTypename=”identifier”abstract=”abstract”)(XS:a11)(accessorelementdeclarations)</xs:a11)(/xs:extension>‘/xs:co“plexcontent>(/xs:complexType>其中:一一identifier:是从EXPRESS的实体数据类型的标识符导出,在7.1.2中规定。曲stract:如果实体数据类型的EXPRESS声明为“abstract”那么abstract应为“true”,否则,它应为“false”或被省略。ac—ssorf存取访问)元素声明在下面规定。extention组应该为在实体类型声明中出现的每一个EXPRESS属性包含一个存取访问声明,详见7.6。存取访问元素声明,如果有的话,应该包含在(all>中。57 GB/T16656.28—2010/mo10303-28:2007在和实体数据类型相联系的类型图(见7.5.1)中,相应于实体数据类型的节点之间有一条或更多条路径,并且存在一个或多个根节点。对于在任何一条这样的路径上出现的每一个节点,extention组也应陵为每一个EXPRESS属性包含一个存取访问声明,这些EXPRESS属性出现在相应于节点的实体数据类型的实体类型声明中。对应于一个给定节点的属性集应该只映射一次,无论节点所出现的路径的数目。注2:上述规定意味着.每一个使用EXPRESS的继承概念的“继承”属性,在复合类型的内容模式中有一个对应的存取访问声明。注3:根据7.6.2,EXPRESS实体数据类型的一些属性可能不映射到存取访问。如果一个EXPRESS属性在路径上重声明给r一个根节点,那么存取访问声明应该对应于重声明的属性,而不是最初声明的属性。如果一个EXPRESS属性在一个给定的路径上多次重声明给一个实体数据类型,而这个实体数据类型的声明包括最初的EXPRESS属性,那么只有这个路径上的第一次重声明被使用。如果一个EXPRESS属性在每一个路径上都没有同样地重声明给实体数据类型,其中实体数据类型声明包含最初的EXPRESS属性,那么所有的声明应该是补充定义的。最后~种情况中,前置处理器应该或者为属性综合一个类型声明,联结在多次重声明中的限制,或者使用最初的属性声明。示例:EXPRESS表达:ENTITYnalnedunit;dimensions:dimensionalexponents;unlt—type:unitenum;END_ENTITY;ENTITYsLunitSUBTYPE0F(named_unit);prefix:0W10NALsiprefix;name:siuni七一namoiDERIVESELF\named—unitdimensions:dimensionaiexponents:一dimensions—for_sLunit(name);END-ENTITY;XMI,模式表达:(xs:complexTypenaffle一”Namedunit”>(xs:sequence)(x8:groupref一”Tns:Dimensional—exponents-complexEntity-group”/)(/xs:sequence)t/xs:complexType></xs:element)(xs:elementname一”Unittype”type=”Tns:Unitenum“/>(/xs:a11)</xs:extension></xs:complexContent>58 GB/T16656.28—2010/ISO10303—28:2007(/xs:complexType>(XS:complexTypename=”Siunlt”)(XS:complexContent>(XS:extensionbase=”exp:Entity”)(XS:all、(XS:elementname--”Dimensions”>‘XS:sequence,(/xs:complexType、(/xs:element、7.5.5对应于实体数据类型的实例元素一个EXPRESS实体实例在交换文档中可能表现出多种形式(见9.3)。应该用一个单独的element声明来声明XMI。元素类型,这里的XML元素类型用于对应于EXPRESS实体数据类型的所有形式的实体实例元素。注:如75以上所述,抽象实体数据类型没有实例元素。实例元素声明应该独立于,并且出现在所有XMI。复合类型定义和元素声明的内容之外。也就是说,实例元素类型应该属于模式命名空问。实体实例元素的元素声明应该有如下形式:(XS:choice>(XS:elementref=”Tns:identifier”/>(xs:elementref=”Tns:identifier-proxy”/>其中:——Identifier-group:Identifier是对应于实体数据类型的实例元素的XML名称的本地部分,“group”是一个常量字符后缀。——Ths:identifier是对应于实体数据类型的实例元素的合格名称,“一proxy”是一个常量字符后缀。——Tns:subtypelgroup⋯Tns:subtype。一group是对应于实体数据类型的子类的选择组的合格名称,见以上的规定。示例:EXPRESS表达: ENTITYnamedunit;END_FiqTITY;sLunltSUBTYPEOF(namedunit);ENDENTITY;XML模式表达(扩展754中的例子):组声明是:GB/T16656.28—2010/lSO10303-28:2007t/xs:group’如果不允许外部引用,则代理元素引用应该从两个组中删除。7.5.6.2复合实体组对于在相关语境模式中每一个实体数据类型,XML模式应该包含一个对应于实体数据类型的复合实体组的XML声明。复合实体组应该有一个选择组,由上面7.5.6.1中所规定的子类组组成。另外,如果实体数据类型的某些实例是非特征化的,复合类型组应该包含一个引用了exp:complexEntity元素的元素声明。复合实体组声明应该有如下形式:complexEntity-usage</xs:choice></xs:group>其中:——IdentifiercomplexEntity-group:Identifier是对应于实体数据类型的实例元素的XMI-名称的本地部分,”一complexEntitygroup”是一个常量字符后缀。——7’力s;idontiller:和7.5.6.1中的定义相同。--eomplexEntityusage:如果实体数据类型的任何实例没有特征化,选择组应该包含(xs:elementref一”exp:complexEntity”/>,否则,复合实体元素可以忽略。示例(继续上面75,6.1中的示例):EXPRESS表达:61。~=一n釜一‰‰蚶啦曲曲蚤薹萎三兰 GB/T16656.28—2010/ISO10303-28:2007ENTITYsljmlt_zSUBTYPEOF(nametunit);END_ENTITY;(XS:groupnafae=”Siunl七一2一group”)(xschoice>(xs:elementref=”Tns:sLunit”/></xs:group>‘(XS:groupref=”Tns:Siunit一2一group”/)</xs:group>(XS:choice>(XS:groupref=”Tns:Siunit-group”/)(XS!elementref一”exp:complexEntity”/>t/XS:choice>(,xs:group>如果siunit是name—unit的唯一声明子类,并且它没有声明子类,那么,si—unit和name—unit都没有非特征化的实例,对exp:complexEntity的引用也将不存在。7.5.7对应于实体数据类型的单一实体值元素对那些是其他EXPRESS实体数据类型的子类的EXPRESS实体数据类型,如果它们出现在序列化单元中的没有特征化的实体实例的类型图中(见7.5.2),导出EXPRESS模式应该包含一个数据类型定义和一个元素声明,用以对应单独实体值。例外:——在本条中所规定的XMI。声明不应该为作为它们的相互联系的类型图标的根节点的实体数据类型而出现如果某个实体数据类型是它的关联类型图的根,那么本条规定的XMI,声明不应该出现在这种实体数据类型中(见7.5.1)。——如果某个实体数据类型对应与序列化单元,而且其所有有效实例在实例化时,都是被相关语境模式中的实体数据类型或者组合实体数据类型所特征化,那么本条规定的XML声明不应该出现在这种实体数据类型中(见7.5)。——如果在类型图中,某个实体数据类型没有被特征化为和其他的实体数据类型有ANDOR关系,本条规定的XML声明是允许的,但不是必须的。为了做出这个决定,模式产生器可能要考虑在相关语境模式中的整个声明集,包括实体声明,超类子句,子类限制,和其他的本地和全局约束。注:最后的这个决定需要一个复杂的算法,可能的附加知识。模式生成器不要求完成这样一个算法或者这些其他的知识。如果怀疑的话,它应该生成本条中所规定的声明。XML数据类型定义应该有如下形式:(XS:complexContent)(/xs:complexcontent>(/xs:complexType>XMI。元素声明应该有如下形式:txs:elementname=”identifier—value”type=”identifier—value”substitutionGroup=”exp.Single-Entity”/>其中:——爿∞fj矗e,:是从EXPRESS的实体数据类型的标识符导出的XMI.名称,在7.1.2中规定。——(accessorelementdeclarations存取访问元素声明):对于每一个在实体声明中出现的EXPRESS属性,extention应该包含一个存取访问声明,在7.6中规定。如果存在存取访问元素声明,应该包含在一个(all>中。例外:不应该存在对应于在实体声明中重声明过的EXPRESS属性的存取访问。示例:EXPRESS表达:ENTITYnamed_unit;dimensions:dimensional—exponents;unit—type:unit~enum;END_ENTITY;ENTITYsi—unitSUBTYPEOF(named_unit);prefix:OPTIONALsLprefix;name:siunit—rlame;DERIⅦsELF\naInedunitdimensions:dimensional—exponents:=dimensions—for8iunit(/xs:all>‘/xs:extension>(/xs:complexcontent>(/xs:complexType></xs:extension></xs:complexc。ntent>(/xs:complexType>(XS:elementname=”identifier-proxy”type=”Tns:identifier-proxy”substltuti。nGroup=”exp:edokey”/>其中:——埘en£j疗e,:对应于实体实例元素的XML名称,在7.5.5中规定。代理元素的名称和数据类型应该由这个XML名称和字符串”proxy“组合而成。——7ksjidenti矗erproxy:是代理元素的数据类型的完全合格名称。——(keyattributedeclarations关键属性声明):对应于实体数据类型的EXPRESS属性的存取访问元素的声明,在7.6中规定。实体数据类型为相应的实体实例形成一个唯一关键字。在exp:authority属性的值所指定的范围内,实体数据类型的每一个实例的关键字属性值标识一个唯一实体实例。示例:EXPRESS表达:ENTITYpipe;id:STRING;Descriptl。“:STRING。UNIQUEkey_attribute:1d;END_E册ITY:XML模式表达:(/xs:sequence>(/xs:extension></xs:complexContent)‘/XS:complexType>(xs:elementname一“Pipe-proxy”type--“Tns:Pipe-proxy”substitutionGroup一”exp:edokey”/)7.5.9实体数据类型的XML唯一性限制如果EXPRESS实体数据类型的实体声明包含一个或多个唯一性规则,相应的唯一性限制应该在导出的XMI。模式中声明,在本条中规定。对于每一个包含在实体声明中的唯一性规则,在导出的XML模式中应该定义一个xs:unique模式64 GB/T16656.28—2010/iso10303—28.2007组件,xs:unique组件应该有如下形式:(XS:fieldxpath=”entity-attributel/*/@ref”/)(XS:fieldxpath=”entity-attributeN/*/@ref”/)</xs:unique>其中:——en眦y:是EXPRESS实体数据类型的标识符,在7.1.2中规定。——msfancel"1aflle:是对应于实体数据类型的实例元素的合格名称,在7.5.5中规定。例外:任何的抽象实体类型应该被忽略。——su6fJfpeJ,⋯,subtypeN:是对应于实体数据类型的实例化子类的实例元素的合格名称。这个列表包括出现在类型图中的所有子类。如果实体数据类型是类型图中的一个叶节点,那么就没有这个列表了。注:列出子类实例元素需要唯一性限制,来保存实体数据类型的所有实例,包括那些标记为它的子类的实例要想列出实例元素的子类,需要在所有实体数据类型的元素上添加唯一性约束,包括那些已经被标记为其子类的实例。’一ru,ename:是唯一性规则的EXPRESS标识符,如7.1.2中所定义。如果规则没有标识符,那么第一个唯一性规则的rulename为1,第二个为2,依此类推。——am曲ukJ,⋯,attributeN是非实体数据类型的存取访问元素的XML名称,attributel,⋯,attributeN对应于在唯一性规则中所规定的EXPRESS属性。——∞rJ0,_aff“6ur“,⋯,entityattributeN是实体数据类型的存取访问元素的XML名称,entityattrihutel,⋯,entity—attributeN对应于在唯一性规则中所规定的EXPRESS属性。示例:EXPRESS表达:ENTITYproductdefinition;for—version:product—definition_formation;id:STRING;UNIQUEurl:for_version,id;END_ENTITY}ENTITYproduct—definition_with-attacheddocumentSUBTYPEOF(product—definition)}END_ENTITYENTITYproduct——definition_with——attached_document2SUBTYPEOF(product—definition);XML模式表达: GB/T16656.28—2010/ISO10303-2812007(XS:unlquename=”Productdefinitiorhrule_Uri’)7.6EXPRESS属性的XML模式声明本条规定了EXPRESS属性到XMI,模式的映射。7.6.2规定了实体自身的哪些EXPRESS属性应该映射到XMI.模式。对于7.6.2中规定的要映射到XMI.模式的每个EXPRESS属性,都应映射到一个XMI。元素,称为对应于该EXPRESS属性的存取访问元素,在7.6.3中规定。7.6.1存取访问元素和属性命名对应于EXPRESS属性的存取访问元素的名称应该从EXPRESS的属性标识符导出,在7.1.2中规定。例外:如果一个EXPRESS实体数据类型有两个不同的EXPRESS属性.这两种属性是在两个不同的实体声明中说明的,并且它们有相同的EXPRESS标识符,那么每个相应的存取访问名称都应该由以下内容组成:按照7.I.2规定从EXPRESS实体数据类型的标识符导出的XML名称,这些实体数据类型的实体声明说明了该属性,其后是字符‘.’(句点或句号),其后是——从EXPRESS属性标识符导出的XMI.名称,见7.1.2的规定。注:多重继承:如果一个EXPRESS实体数据类型从不同的超类继承了相同的属性,而这个属性又是超类依次从个公共“祖先”超类继承的,那么这个属性的两个“副本”不是“不同的EXPRESS属性”。它们在相同的实体声明中说明,实体数据类型的一个实例只有一个这样的属性。根据7.533中的规定,对应于该实体数据类型的XMI。模式数据类型只包含一个存取访问元素。上述的例外情况将不适用。7.6.2映射到XML模式的EXPRESS属性本条规定映射到XML模式的EXPRESS属性的种类和映射条件。7.6.2.1显式属性对于每一个在实体声明中出现的显式EXPRESS属性,都将有一个对应的存取访问元素声明,在7.o.3中规定。7.6.2.2INVERSE和DERIVED属性EXPRESSDERIVED属性和EXPRESSINVERSE属性不应该映射到导出的XML模式。7.6.2.3重声明的属性如果一个EXPRESS属性在一个子类中重声明了,重声明的属性的数据类型影响相应的存取访问元素的声明,在7.5.4中规定。除了在7.5.4中的规定,一个重声明的属性不映射到导出的XMI。模式。如果一个显式属性在一个子类中被重声明为DERIVED或INVERSE,那么子类原来的属性。就像被声明为OPTIONAL(可选的)一样来映射。7.6.2.4通用属性一个EXPRESS抽象数据类型(见6.3)可能有这样的属性:它的EXPRESS数据类型是不能实例化66 GB/T16656.28—2010/isO10303-28:2007的“通用类型”。这样的属性称之为通用属性。GB/T16656.11要求通用属性在抽象实体数据类型的每一个实例化的子类中都要重声明。当抽象实体数据类型映射到了7.5中所规定的XM[。模式,所有的通用属性都不应该当作这个抽象实体数据类型的一个属性映射到XMI。模式。只有可实例化子类中的通用属性的重声明需要映射。注:在XM[。模式中.重声明的属性将首先出现在对应子类的扩展中,它们将作为子类的新属性而出现。示例:EXPRESS表达:ENTITYapproval—relationshipABSTRACTSUPERTYPE;approval—data:approval;approvalitem:GENERIcENTITY;ENDENTITY;XMI一模式表达:{/xs:cooplexcontent>tXS:complexType)7.6.3存取访问元素对于每一个映射到存取访问元素的EXPRESS属性(见上面的7.6),对应实体数据类型的复合类型(complexType)中的(all>应该包含属性元素的一个相应声明。存取访问元素应该声明如下:~存取访问元素的名称,在7.6.1中规定。一存取访问元素的maxOccurs属性不需要在元素声明中给出。如果给出,它的值应该是“l”。~如果EXPRESS属性是强制的,那么存取访问元素的minOccurs属性不需要在元素声明中给出。如果给出,它的值应该是“1”。——如果EXPRESS属性声明成OPTIONAl。(可选的),或像在7.6.2中规定的那样按照OPTIONAI。来对待,那么XML元素声明应该包含XMI。属性minOccurs一”0”和XMI。属性nillable一”true”。注1:实例数据中,一个未设置的EXPRESS属性由缺失属性元素或者包含XMI.属性xsi:nil一”true”的空存取访问元素指定。注2:如果EXPRESS属性在这个实体数据类型的任何子类中重声明为DERIVED或INVERSE,那么EXPRESS属性应该按照OP]、IONAI,(可选的)来对待,在7.623中规定。—~声明存取访问元素时,应该包含XML属性exp:sttributeType,该属性在基本XMI。模式中以一个fixed值定义。如果存在这个属性,这个固定值应该是”explicit”。67 GB/T16656.28—2010/Lso10303—2812007——如果EXPRESS属性的数据类型不是一个实体数据类型,那么存取访问元素的XMI.数据类型应该按照7.6.3.1的规定给出。——如果EXPRESS属性的数据类型是一个实体数据类型,那么存取访问元素的XML数据类型应该按照7.6.3.2的规定给出。7.6.3.1数据类型不是实体数据类型的属性如果EXPRESS属性的数据类型不是一个实体数据类型,那么存取访问元素的数据类型应该声明为对应于EXPRESS属性的数据类型的XML模式数据类型,和7.2中的规定相同。示例1:属性的数据类型是简单类型的属性示例:EXPRESS表达:TYPEIdentifier=STRING2ENDTYPE;TYPEWeight—measure=REAL;ENDTYPE;ENTITYPipe;Nominal—size:NUMBF讯;Diameter:REAL:Bends:INTEGER;Available:BOOLEAN;Valid:LOGICAL;Description:OPTIONALSTRING;Image:BINARy;Id:Identifier;Weight;Weightmeasure;ENDENTITY;XMI。模式表达:(”:elementna】ne=”Valid”type=”exp:logical”/‘)68 GB/T16656.28—2010nso10303-28.2007(/xs:extension)(/xs:complexContent>(/xs:complexType>XMI,实例数据:30(/Nominal—size>(Diameter)275(/Diameter>(Bends)2(/Bends)(Available>true(/Available)‘Valid>unknown</Valid>(Description>Standardrigiddoable-elbow(,/Description>(Image>8AF(/Image>(Id>P1—1(/Id)(Weight>348(/Weight>(/Tns:Pipe>示例2:属性的数据类型是一个简单数据类型的集合的属性示例:EXPRESS表达:ENTITYPt3d:c:ARRAY[1:33OFREAL;END_ENTITY;XML模式表达:(xs:complexType)(xs:simpleContent>(xs:simpleType>(xs:minLengthvalue2”3”/)</xs:s1“plecontent)(/xs:complexType>(/xs:element>(/xs:all>(/xs:extension> GB/T16656.28~2010/Iso10303-28:200770(/xs:eomplexContent>(/xs:complexType>(/Tns:Pt3d>示例3:属性的数据类型是一个实体数据类型的集合的属性示例EXt’RESS表达:ENTITYPt3d;c:ARRAY[133OFREAL;INVERSEincurve:SETE01]OFPolylineFORpoints;ENDENTITY;ENTITYPolyline;points:LISTOFPt3d;ENDENTI。玎:在XML模式中,pt3d的声明和上面实例2中的完全形同。INVERSE属性pt3d.inctlr%,e不映射到XMI,模式。属性Polyine的XML模式声明如下:(xs:extensionbase=”exp:Entity”)(xs:groupref=”Tns:Pt3d-complexEntity-group”minOccurs=”0”maxOccurs=“unbounded”/、(/xs:sequence}(/xs:element>(/xs:a11)(/xs:extension>(/xs:complexContent>(/xs:complexType)XMI,实例数据:《Tns:Polylineid=”儿”)(Points)(Tns:Pt3did=”i4”)(C)100(/C)(/Tns:Pt3d> GB/T16656.28—2010/ISO10303—28:2007(Tns:Pt3did=”i5”)(C)00l00(/C)(/Tns:Pt3d’(/xs:all>‘/xs:extension>(/xs:complexcontent)(/xs:complexType>7.6.3.2数据类型是一个实体数据类型的属性本条规定数据类型是一个实体数据类型的EXPRESS属性的映射规则。存取访问元素的XMI.数据类型应该是一个匿名复合类型,有如下形式:(xs:complexType>(xs:sequence)(/xs:sequence>(/xs:complexType>其中:——instance-complexEntity-group:应该是相应的复合实体组的合格名称(见7.562)。示例:EXPRESS表达:ENTITYmeasure_witLunit5value_component:measurevalue;unit—component:namedunit;ENDENTITY;TYPEmeasure_value=REAL;END—TYPE;ENTITYnamedunit;dimensions:dimensional—exponents;END—ENTITY;ENTITYs1unit GB/T16656.28—2010/ISO10303—2812007SUBTYPEOF(named_unit);prefix:OPTIONALsLprefix;name:si—unit—name;DERIVESELF\namedunitdimensions:dimensional—exponentsdimensionsforsiunit(name);ENDENTITY}XML模式表达:(XS:complexTypeDame一”Measurewithunit”)(KS:complez|【Content)‘XS:sequence,(/xs:sequence>(/xs:complexType></xs:element)(/xs:all>‘/XS:extension></xs:complexContent></xs:complexType>7.7EXPRESS模式的XML模式和命名空间相关语境模式的EXPRESSSCHEMA声明应该映射到XML模式XS:schema。也就是说,应该有一个对应于相关语境EXPRESS模式的默认XML模式。XMI.命名空间(“目标命名空间”)应该和导出的XML模式相联系。与目标命名空间关联的命名空间URI应满足7.7.2的规定。XS:schema元素应该包含一个targetNamespace属性,它的值就是和目标命名空间相联系的命名空间URI。EXPRESS模式的名称和版本在XML模式的documentation元素中提供。注:EXPRESS模式的名称和版本不正式映射到导出的XML模式的任何元素。它们可能影响targetnamespaceURI的形成。见7.7.2。导出的XML模式的附加命名空间声明在7.7.3中规定。导出的XML模式应该明确包含在7.2~7.6和7.8中所规定的定义和声明。在附录C中所规定的基本XML模式应该,通过XS:import声明的方式,显式地包含在导出的XML模式中。在这种情况下,前置处理器应该选择一个命名空间前缀(见7.7.3)来对应通过7.6和7.8出现在7.2中的前缀”exp:”。所选择的前缀应该对应于由URN所标识的命名空间:urn:iso:std:iso:10303:一28:ed-2:tech:XMLschema:common。7.7.1命名空间前缀对于每一个命名空间,命名空间前缀应该由前置处理器规定,需满足如下限制:——对于整个文档,XML文档应将每个命名空间前缀映射到唯一的一个命名空间URl。——对于整个文档,每一个命名空间URI应该由一个并且只由一个名称前缀来表达。在GB/T16656的本部分中所用到的命名空间前缀——xs:、exp:、doc:、cnf:和Tns:,用于隔开并且标识所需要的(可能的)不同的命名空间。前置处理器可以自由地替换它们当中的任何一个有效的前7, GB/T16656.28—2010/ISO10303-28:2007缀,但是要符合上面的限制。7.7.2导出的XML模式的目标命名空间URI和导出的XML模式的目标命名空间相联系的命名空间URI可能是由前置处理器选择的,有如下准则。如果导出的XML模式是注册为国际标准的一个EXPRESS模式的默认映射,那么URI应该是一个有附录A中规定形式的URN。.若URI指定了被注册为国际标准的EXPRESS模式的其他映射的目标命名空间,则该URI不在16656的本部分中规定。它可以由相应的国际标准规定,或由符合IETF标准的其他方式规定。若URI指定了没有被注册为国际标准的一个EXPRESS模式的任何映射的目标命名空间,则该URI由自己的主体部分定义,应符合1ETFRFC2396标准和适当的注册步骤,且不在本标准的范围内。注:根据IETF2396的规定,统一资源定位符(URL)和统一资源名称(URN)是统一资源标识符(URl)的子类。一个URl可能也可能不表达一种方式,通过这种方式,可以找到标识资源。URL通常表示一条存取路径,URN从来不这样表示。每一类URI都有一个前缀:uri:,UrFI:,url:或http:一个初始的标识符,这个标识符由网络已分配号码管理组(IANA)分配,作为一个拥有URI的机构的唯一标识,尽管可能并不是它所指的资源。不同类的URl注册步骤由不同的IETF标准所规定。注意:URN的语法在1ETFRFC2141中规定,相应的注册步骤在1ETFRFC3406中规定。示例:GB/T16656203中包含的EXPRESS模式config_controldesign的默认映射的命名空间如下:XML模式表达:7.7.3导出的XML模式的命名空间声明XS:schema元素应该包含(xmlns)命名空间声明:——目标命名空间。在这个命名空间声明中所用到的命名空间URl的值应该和targetNamespace属性中所指定的值相同。——xML模式定义的当前版本。——基本XML模式(见附录c)。对于上面所要求的任何xmlns声明,前置处理器按照7.7.1的规定来选择前缀和适当的URI。如果XS:schema元素包含elementFormDefauh或者attributeFormDefauh属性,那么他们的值应该设置成”unqualified”,这个值是在XML模式第1部分:结构中所规定的默认值。示例:下例描述了从EXPRESSSCHEMA语句到XMI。模式的映射:EXPRESS表达:SCHEMAmy—sch鲫a; GB/T16656.28—2010/IS010303-28:2007XML模式表达:(xs:schematargetNamespace一”urn:xyzorg:xs/My_schema”xmlns:my一”urn:xyzorg:xs/My_schema”z。mlns:xs一”http://wwww3org/2001/XMLSchema”xmlns:exp一”urn:iso:std:iso:10303:一28:ed2:tech:XMLschema:COmmOn”elementFormDefault--”unqualified”attributeFormDefault--’’unqualified”、7.7.4导出的XML模式的导入声明对于用短表形式表达的EXPRESS模式,对应于EXPRESS相关语境模式的xs:schema元素应该为每一个命名空间包含一个直接的子元素xs:import,其中的命名空间对应于一个和EXPRESS相关语境模式相联系的EXPRESS模式。导入元素的命名空问属性的值应该是与接口模式关联的URN。导人元素的schemaI。ocation的值是XMI。模式的统一资源标识符(uRI),其中XML模式表示相联系的EXPRESS模式,URI解释为一个定位符,通过这个定位符XMI,模式可以从互联网网t存取来。xs:schema元素应该为每个引入相关语境模式的EXPRESS模式包含命名空间声明。示例:下例描述了从接口EXPRESS模式到XML模式的映射:EXPRESS表达:SCHEMAmy_schema;USEFROMotherschema(some_entity);REFE髓NCEFROManotherschemafanotherentity):END—SCHEMA;XMI。模式表达:(xs:schematargetNamespace=”urn:xyzorg:xs/My_schema”xmlns:my一”urn:xyzorg:xs/My_schema”Ⅻlns:xs一”http://wwww3org/2001/XMLSchema”xmlns:exp一“1lr“:iso:std:iso:10303:一28:ed_2:teeh:XMLschema:common”xmlns:oth--”llrn:xyzorg:xs/Other—schema”xmlns:ano一“urn:xyzorg:xs/Anotherschema”)(xs:importnamespace一”urn:xyzorg:xs/Other_schema”schemaLocation=。”other_schemaxs“/)(xs:importnamespace--”urn:xyzorg:xs/Anotherschema”schemaLocation=”anotherschemaxs”/)(xs:importschemaLocation一”expxsd”namespace一”i/rn:iso:std:iso:10303:一28:ed-2:tech:XMLschema:common”/>(!一otherentitiesomittedforsimplicity一)‘/xs!schema)7.8特定序列化单元的相关语境模式对于相关语境模式,在与导出的XML模式对应的命名空间中,应该有一个特定的序列化元素单元和一个相应的复合类型。序列化单元元素的声明应该有如下形式:(XS:elementref=”referenceable-instance_hame一1¨/)(XS:elementref=”referenceable-instance-name—n”/)(/xs:choice)(/xs:extension)(/xs:complexcontent)(/xs:complexType)其中:——referenceable-instance-name-i:是由上面所规定的可引用非实体实例元素的完全合格名称。示例:<’mlversion=“10”encoding=”UTF一8”7)(xs:schemaxmlns:XS=”http://wwww3org/200l/XNLSchema’’targetNamespace=”ur刀.xyzcom/Ahe。’xmlns:Tns=”urn:xyzcom/ASc”xmlns:exp=”urrl:iso:std:iso:10303:一28:ed-2:tech:XMLschemacommon”elementFormDefault=’’unqualified”attributeFormDefault=”unqualified”)(XS:importschemaLocation=”expxsd”namespace=”urn:iso:std:iso:10303:一28:ed-2:tech:XNLschema:common’’/)(XS:elementname=”uos”type=”Tns:uos”substitutionGroup。”exp.UOS”/(XS:elementname=”A”⋯)⋯(/xs:element}(XS:complexContent)(/xs:extension)</xs:complexContent>(/xs:complexType>(/xs:schema>8已配置的XML模式联编本章规定了从EXPRESS模式到与其对应的已配置XML模式的声明、定义及表示的映射关系。本章规定的导出XML模式被称作与给定EXPRESS模式所对应的已配置XML模式。本章适用于如下情形:已给定了一个配置文件,且该文件中至少包含了一个没有指明默认取值的指令,对于其他情形,应使用第7章的规定。本章的8.1--8.7规定了从EXPRESS模式导出的XMI.模式。8.1命名规则(naming-convention)本条规定了基于EXPRESS标识符生成相应的XMI。名称时的统一规则。8.1.1模式每个EXPRESS模式都有一个相关的XMI。命名空间URI,该URI应指定作为与该模式联编的模式特定元素的XMI。元素及数据类型名称的目标命名空间,具体见8.7。8.1.2EXPRESS标识符EXPRESS语言中的标识符是不分大小写的,而XML名称是要分大小写的。除非特殊规定,一个EXPRESS将映射为一个XMI。名称或者XMI,名称本地的局部标识部分,例如:——当命名规则(naming—convention)选项(见10.2.14)要求首字母大写(initialupper)时,映射后的XMI。名称除了首字母大写其余全部字母小写外与EXPRESS标识符完全一致,这是默认情况。——当命名规则‘namingconvention)选项的值为峰式命名规则(camel—case)时,XMI。名称将按如下规则从EXPRESS标识符导出:首字母大写,每条下划线之后的第一个字母大写,标识符中的其余所有字母均小写,同时删除所有下划线。——当命名规则(namingconvention)选项的值为保持大小写(preservecase)时,XML名称必须与EXPRESS标识符中字符大小写完全一致,而这种情况并不需要一个确保一致性的前置处理器。由于XML标准中对XMl。命名的限定,任何以“XMI,”字符开头的EXPRESS标识符,无论其大小写如何,将被映射为以“Xm1”开头。注:本条所提及映射规则适用于大部分EXPRESS模式中数据类型名称、实体名、属性名到XMI。的转换,例外情况将会在涉及特殊EXPRESS标识符的章条中说明。8.1.3数据类型每个EXPRESS数据类型的标识符必须映射到一个XMI。标准所限定的命名空间中。8.1.2中所规定的本身为限定的标识符名称的局部标识部分也同样可以是一个限定的数据类型名称,例外情况为:当一个实体entity或类型type的配置指令(见10.3.2和10.3.3)选择了一个76 GB/T16656.28—2010/ISO10303·28:2007EXPRESS数据类型并且提供了名称属性,则合格名将由那条指令具体声明。对于每一种在具体相关语境模式中声明的或明确了该模式接口的EXPRESS数据类型,其相关的限定的XMI.模式命名空间将由该具体的相关语境模式决定。对于明确了具体相关语境模式接口的每个数据类型,其合格名将按8.1.2中的规定从EXPRESS标识符中导出,其相关的命名空间将决定于该数据类型声明时所在的模式。注:对于URI中的非本地部分的命名,见附录A中用于GB/T16656和其他标准中定义的EXPRESS模式的命名空间URI标准化方法。8.2与EXPRESS数据类型对应的XML模式数据类型对于在相关语境模式中出现的每个EXPRESS数据类型,包括命名数据类型、内部数据类型及匿名结构型数据类型,都有一个对应的XML模式数据类型。本条规定了对应关系。注:本条不会规定任何在导出的XML模式中出现的定义或声明,而只是规定一些在其他章条的声明或定义中可能会用到的一些XML模式的组件。8.2.1EXPRESS简单数据类型本条规定了XML模式中数据类型与EXPRESS模式中自定义数据类型的对应关系。8.2.1.1BINARY数据类型EXPRESS中BINARY数据类型被映射为exp:hexBinary类型,当存在用于BINARY类型的配置指令map一”KS:base64Binary”时,将被映射为exp:base64Binary,另外有如下例外情况:一当一个BINARY类型的EXPRESS属性被映射为一个存取一个访问属性时,与其对应的XML数据类型为XS:hexBinary,或者应用了配置指令map一”xs:base64Binary”时为XS:base64Binary;——如果一个BINARY的EXPRESS数据类型规定了最大值或固定长度,其映射将按照8.2.1.1.1中进行。exp:hexBinary与exp:base64Binary数据类型均在基本XML模式中定义(详见Annexc)。示例:扩展72.11中的例子:配置指令如下:(attributeselect一”ablnary”map=”XS:base64Binary”/)XM[。模式表达(自由集成映射):(XS:complexTypenalne一”Entlty_withbinary_attribute”)(XS:complexContent)(/xs:complexType>8.2.1.1.1有约束的BINARY数据类型所谓有约束的BINARY指的是为其指定了最大值或固定长度的类型,它将被映射为一个复合类型,即对exp:hexBinary和exp:base64Binary类型加以限制的类型。当一个EXPRESS类型在声明时,将有约束的BINARY设定为基础类型时,与其对应的XMI。数据类型将在8.3.1.1中说明。当一个EXPRESS属性被映射为访问属性时,该EXPRESS属性的数据类型如果为有约束的BINARY数据类型,则相应的访问属性的类型为一个如下形式的简单类型:(XS:simpleType)77 GB/T16656.28—2010/ISO10303-28:2007其中:一一binary-type、minLength和maxLerIgt五的定义见后。注1:此处假定长度值为8比特的倍数。因此extraBits的值总是为0。对于有约束的BINARY数据类型的其他应用,导出的XMI,模式应该包括一个与该有约束的B1一NARY类型相关的XML数据类型定义,该类型定义具有如下格式:(/xs:complexType)其中:——t脚Ⅻe:如果一个map配置指令应用于有约束的BINARY类型,typename为该指令规定的XML中自身数据类型;否则typename为Binary。——miJlBns:如果EXPRESS声明为FIXED类型,minBits为EXPRESS中BINARY类型规定的固定长度(位);否则为0。——bits:为EXPRESS中BINARY类型规定的最大值或固定长度(位)。——binary-t辨:为exp:hexBinary或exp:base64Binary(应用了指令map一”XS:base64Binary”)。——ⅢinL∞gth:如果EXPRESS声明为FIXED类型,mini。ength为EXPRESS中BINARY类型所规定固定值的八进制值(详见下述);否则,xs:mini。ength将被省略。——Ⅲa置L∞gt^:为EXPRESS中BINARY类型所规定固定值的八进制值。——maind缸:如果EXPRESS声明为FIXED类型,remainder为bits%8所得的十进制数值(bits的值如下);否则该属性将被忽略。若假定bits为EXPRESS类型定义中的最大值或固定长度值(位),则其八进制值按如下方式计算:——如果bits%8>0,bits—bits/8+1;——如果bits%8—0,bits=bits/8。注2:如果有配置指令map一“xs:base64Binary”应用于EXPRESS类型,其八进制值计算方法同上。注3:minBits与bits值以位为单位,而minLength与maxLength以八进制为单位。示例:EXPRESS表达:ENTITYentity_withfixedbinary_attribute;a_binary:BINARY(12)FIXED;b_binary:BINARY(8);78 GB/T16656.28—2010/ISO10303—28.2007END_ENTITY;XML模式表达:如果exp—attribute=”attributecontent”不成立,见7.2.11l中XMI,模式的例子。如果expattribute--”attribute-content“成立.则:(XS:simpleType)(XS:maxLengthvalue=”2”/>(XS:minLengthvalue--”2"/)</xs:restriction></xs:simpleType>(/xs:attribute>(XS:attributename--”B—binary”)(XS:SimpleType>(/xs:simpleType>(/xs:attribute></xs:extension></xs:complexContent></xs:complexType>8.2.1.2BOOLEAN数据类型EXPRESS中BOOI。EAN类型被映射为XS:boolean类型,详见7.2.1.2中示例。8.2.1.3INTEGER数据类型EXPRESS中INTEGER类型被映射为XS:long,例外情况:当map配置指令应用于数据类型时(见10.5.4),INTEGER类型将按该指令规定进行映射(见10.2.13.2)。示例:扩展7.2.1.3中的例子:给出的配置指令如下:(XS:extensionbase=”exp:Entity’’>(XS:a11)</xs:complexContent></xs:complexType>8.2.1.4LOGICAL数据类型EXPRESS中该类型映射规则见7.2.1.4。8.2.1.5NUMBER数据类型EXPRESS中该类型被映射为XS:decimal类型,例外情况:当map配置指令应用于数据类型时(见79 GB/T16656.28~2010/Iso10303—28:2007lO.5.4),NUMBER类型将按该指令规定进行映射(见10.2.13.3)。示例:扩展7215中的例子:给出的配置指令如下:XMI。模式表达:</XS:complexContent)(/XS:complexType>8.2.1.6REAL数据类型EXPRESS中该类型被映射为xs:double类型,例外情况:当map配置指令应用于数据类型时(见10.5.4),REAL类型将按该指令规定进行映射(见10.2.13.3)。示例:扩展7.2l_6中的例子:给出的配置指令如F:(attributeselect--”areal”map一”xs:float”/)XMI。模式表达(继承映射):(XS:complexTypen{1me=”Entity_withrealattribute”>(/xs:extension>(/XS:complexContent)(/xs:complexType>8.2.1.7sTRING数据类型该类型映射规则分三类:如果EXPRESS数据类型声明为具有最大长度或固定长度,则按8.2.】.7.1进行映射;否则,当map配置指令应用于数据类型时(见10.5.4),STRING类型将按该指令规定进行映射(见10.2.13.4);其他情况下,该类型被映射为XS:n。rmalizedstring类型。示例;扩展72,1.7中的例子:给出的配置指令如下:(attributeselect一”astring”口ap一”xs:QName"/)XMI。模式表达(继承映射):(MS:sequence>(XS:elementtype一”XS:QName”name=”Astring”/)(/XS:sequence>(/xs:extension>(/xs:complexContent>80 GB/T16656.28—2010/ISO10303—28:2007(/xs:complexType>8.2.1.7.1有约束的STRING有约束的STRING是添加了最大值或固定长度约束的STRING类型,它被映射为一个简单类型(添加限定条件的KS:normalizedString类型)。如果EXPRESS类型声明时设定有约束的STRING为基础类型时,与其相对应的XMI。数据类型将在8.3.1.3中规定。对于有约束的STRING类型的其他情况,导出的XMI。模式应该包括一个与该有约束的STRING类型相关的XMI.数据类型定义,该类型定义具有如下格式:(/xs:restriction>(/xs:simpleType>其中:——typename:如果一个map配置指令应用于有约束的STRING类型,typename为该指令规定的XML中自身数据类型;否则typename为STRING。mlnLength:如果EXPRESS声明为FIXED类型,则minLength为EXPRESS中STRING类型所规定固定长度值;否则,其值为0并且KS:mini。ength将被省略。——ma吐eng七h:为EXPRESS中sTRING类型所规定最大长度或固定民度值。——strIng-t即e:如果一个map配置指令应用于有约束的STRING类型,string—type为该指令规定的XML中自身数据类型;否则string—type为XS:normalizedString。注:如果EXPRESS模式为有约束的STRING类型声明了一个自定义类型,则存在一个与其对应的XMI。自定义类型(见8.3)。上述有约束的STRING类型的自定义只有在匿名时需要。示例:详见7.2.1.7.1中示例。8.2.2聚合数据类型对于EXPRESS中的聚合类型,即SET、LIST、BAG、ARRAY,其基本类型为集合中组成元素的类型;与聚合类型对应的XMI。模式中数据类型取决于其中的基类型,及应用的tagless配置指令。注1:在一个EXPRESS属性声明中的聚合类型,与其对应的XMI。模式数据类型取决于所应用的exl>attribute指令的值,因为该指令能影响taglesss指令的默认值。注2:由于配置指令可以应用于任何数据类型或者仅针对特殊的EXPRESS属性,因此与其对应的XM[,模式数据类型可能因用法不同而异。表3中规定了与特定用法EXPRESS聚合数据类型相对应的XMI。数据类型,其中包括聚合类型、基本类型及基于该用法的tagless:——基本类型的值确定方式如下:如果聚合的基类型没有使用map映射指令,则基类型的值即为EXPRESS中声明聚合的数据类型时所确定的值;如果聚合的基类型使用了map映射指令并且XMI。数据类型命名中不包括空格,则基类型的值为一个简单数据类型且tagless的默认值为truel如果聚合的基类型使用了map映射指令并且XML数据类型命名中包括空格,则基类型的值为STRING,且tagless的默认值为false。~一所谓简单数据类型(simpletypes)是指其XMI。表达式中含有简单类型且不包含空格,包括BOOLEAN、INTEGER、I,OGICAL、REAL、NUMBER等EXPRESS类型,经过map映射配置指令生成的特定XMI.数据类型,及任何应用上述类型所生成的自定义数据类型。——聚合类型将由EXPRESS中声明该聚合数据类型时的值确定。本表中将ARRAYOFOP—T10NAL基类型视为一个特定的聚合类型。81 GB/T16656.28—2010/ISO10303-28:2007——应用于聚合数据类型的tagless指令的值将在10.5.5中说明。——一限定的数据类型属性和配置指令应按表3中格式进行排序,并对每行中的值进行一一比对。——表中限定属性或指令仅当其值唯一时才能与其所在的列匹配,例外情况:任何一条指令其限定值与一空行匹配。一一任何限定值必然与表中的某唯一一行的所有值匹配,与其相对应的XMI。数据类型会在章条一栏中具体规定。注3:表3仅仅包含了相关XML模式的声明,许多应用了同一种XMI。模式表示的联合声明有着不同的编码规则(见9.8)。表3聚合数据类型对应关系聚合类型基类型无标记童条ARRAY/I。IST/SET/BAGSimple823ARRAY/I。1ST/SET门jAGSimplefalse8.22ARRAY/LIS‘F/SET/BAGSTRING/BINARY8.223ARRAY/I。IST/SET/BAGSTRING/B1NARYfalse8.22ARRAY/LIST/SET/BAGENUMERATION825ARRAY/I,IS"I’/SET/BAGENUMERATl0Nfalse8.2.2.2ARRAY/l。IST/SET/BAGSEl。ECT826ARRAY/LIST/SET/BAGEmity828lARRAY/I.1ST/SET/BAGEntityfalse8282ARRAY/LIST/SET/BAGAggregationtype8.22.4ARRAY/LIST/SET/BAGDefineddatatype827ARRAY()I?()PTI()NAI。Simple82ARRAY()F()PTI()NAI。STRlNG/BINARY8.22ARRAYOFOPTlONAI,ENUMERATl0N82.22ARRAY0FoPTl0NAI。SELECT822.6ARRAY()F()PTl0NAI。Entity8282ARRAYf)FOPTl0NAl。Aggregationtype824ARRAYoFOPTI()NA【。Defineddatatype8.227注4:如102.8所述,tagless“true”仅当基本类型为下述其中之一时才成立:~上述定义的简单类型;一-不包含空格的STRING类型;值为八进制的BINARY类型;基本类型为ENUMERATION的自定义的数据类型;——基本类型为上述任意一种的自定义的数据类型;实体数据类型。注5:当聚合类型为ARRAYOFOPTIONAl。时,tagless值为false(见10.2.8)。8.2.2.1聚合数据类型的XML属性与某些EXPRESS聚合类型相对应的XMI。模式类型是具有7.2.2.1中所述的所有属性的元素序列形式。聚合的arraySize属性值指示了一个聚合中的元素个数,对于一个数组该值是固定的,其值为Hilndex—I。oIndex+1(如下述)。对于一个多维数组,其值是一个整数序列,每个元素指明了每一维中的元82 GB/T16656.28—2010/ISO10303-28:2007素数目(见8.2.2.4和9.8.5)。属性itemType和cType的定义见7.2.2.1。8.2.2.2聚合的元素序列形式如果EXPRESS中聚合类型图示为表3所示的有序结构,则与之对应的XMI,模式数据类型将是一个如7.2.2.2中所规定的复合类型(complexType)。注:对于使用了exp—attritube一”type-tag”配置指令生成的XMI。模式类型规则见84.22。8.2.2.3聚合的值列表形式如果EXPRESS中聚合类型图示为表3所示的列表结构,则与之对应的XML模式数据类型将基于一个如8.2.2.3.1中所规定的简单列表数据类型。如果XML数据类型是一个访问属性的类型(见8.6.3),见8,2.2.3.4;其他情况(即XML数据类型为XMI。元素的类型)见8.2.2.3.2。注1:总体说来,本章条内容适用于当EXPRESS数据类型的基类型为INTEGER、LOGICAl。、NUMBER、REAL或者基本类型是上述任意一种类型的自定义数据类型时;根据定义,所有B()OI。EAN、INTEGER、I.OGICAI。、NUMBER、REAl,类型中不能有空格.并且XML的列表型(以空格来分割符号)是一个明确的表示方式。注2:当EXPRESS聚合数据类型的基类型为STRING或BINARY,或者基本类型是STRING或BINARY的自定义数据类型时,822一般都适用,但本条按表3格描述时也适用。注3:当本条用于基类型为STRING的聚合数据类型时,相应的值默认是不含空格的;如果其中含有空格.该表示方式可能会被曲解。注4:当本条用于基类型为BINARY的聚合数据类型时.XS:hexBinary类型将被用作简单列表的itemType;由于不可能规定XMI.属性extra⋯bits所以其值为0。注5:由于存取访闻属性的XMI,数据类型必须是一个simpleType,而在其他用法中simpleType会丢失区别于其他相似聚合表达的信息,所以需要两种不同的XML数据类型。8.2.2.3.1支持聚合的简单列表类型如果EXPRESS聚合类型按表3规定的方式以列表型表示时,与其对应的XMI,模式数据类型是基于一个简单列表类型的,该简单列表类型将在导出的XML模式中以7.2.2.3.1中简单类型如何定义的方式进行定义,其中:——list—t即e:为以“I。ist一”开始,后跟与集合的基本类型相对应的XMI,模式类型中自有的合格名称,具体见8.2或8.3;——hse-t印e:为与集合的基本类型相对应的XMI。模式类型中限定的命名,见8.2或8.3;——对于具有相同基本类型的EXPRESS聚合类型,这种定义只需要进行一次,见7.2.2.3.1中示例。8.223.2XML元素的值列表形式如果XMI。元素的类型为列表型,则相关的XML类型为加以限制条件的复合类型complexType,这种类型如8.2.2.3.3所述可以支持EXPRESS基类型中的聚合类型。与EXPRESS中聚合类型相关联的XMI。类型具有7.2.2.3中所规定的形式,其中:——无限制类型(unrestrictedtype):为支持EXPRESS中聚合类型的无限制条件的复合类型com—plexType的合格名.如8.2.2.3.3所示;——列表类型(1isttype):与EXPRESS中简单列表数据类型相对应的合格名,如8.2.2.3.1所示;一lowerbound,upper—bound,aggregatetype,usage的对应关系详见7.2.2.3。8.2.2.3.3支持聚合类型的无限制复合类型导出的XMI.模式中包含一个对应7.22.3.2中无限制复合类型的复合类型的定义,其中:—一tns:listtype为上述8.2.2.3.1中所定义的简单列表类型的合格名;——seqtype类型以”seq一”开关,后跟与聚合类型中基本类型相对应的XML模式中自有类型的类型名,如8.2和8.3所述;83 GB/T16656.28—201O/ISO10303—28:2007basetype即itemType的属性值,为与聚合类型中基本类型相对应的XMl.模式中数据类型的合格名,如8.2和8.3所述。8.2.2.3.4存取访问属性的值列表形式如果XMI.的类型为存取访问属性的数据类型,则它将有如下形式:《KS:minLengthvalue=”lower—bound”/>(xs:restriction>(XS:listitemType=”xs:double”/)(/xs:simpleType>(/xs:restriction></XS:SimpleType>8.2.2.4聚合数据类型的聚合如果EXPRESS聚合类型的基类型是另一种聚合类型,或者基本类型为另一种聚合类型的自定义数据类型,则与之相对应的XML模式数据类型将在本章条中定义。如果EXPRESS聚合类型(如SET、LIST、BAG或ARRAY)作为另一个聚合类型的基类型出现在其相关语境模式中,则称它为嵌套的。84 GB/T16656.28—2010/ISO10303—28:2007对应于聚合数据类型的XML模式类型的映射规则如下:——对于除arrayofarray(数组的数组)结构外的所有结构,如果使用了flatten--”false”配置指令,则映射规则如8.2.2.4.I所述;一一对于其他所有情况.8.2.2.4.2对其进行了规定。8.2.2.4.1行序列结构如果EXPRESS聚合类型(下文中命名为A)选择了行序列结构,其基类型为另一种聚合类型(下文中命名为B),则本条中规定了与typeA所对应的XMI,模式的数据类型。与typeA对应的复合类型将是一系列与typeB相对应的复合类型的集合,该XML数据类型有如下形式的定义:(XS:complexType)(XS:attributeDkIme=”ref”type=”xs.IDREF”use=”optional”/)(XS:attributeref=”exp:arraysize”use=”optional”/)(XS:attributeref=”exp:itemType”fixed=”Tns:Seq-double”/>(XS:attributeref=”exp:cType”fixed=”list”7)(/xs:complexType>XMI。实例数据:(Tns:Matrix>(Tns:Seq-double)0054(/Tns:Seq-double>(/Tns:Matrix>8.2.2.4.2多维数组结构如果EXPRESS聚合类型typeA为一个多维数组结构(typeA的基本类型为另一个聚合类型,即关于集合的集合),则与typeA相对应的XMI。模式的数据类型将如7.2.2.4所述,其中:——base—instance:如果typeB是一个实体数据类型,则base—instance为与其对应的复合实体组类型的合格名(具体见8.5.6.2);如果typeB是一个SEI。ECT数据类型,base—instance为与其对应的组的合格名(见8.3.4.2);否则,base—instanee为与之对应的实例元素的合格名(见8.4)。所有其他定义,备注及释例见7.2.2.4。8.2.2.5ENUMERATION数据类型的聚合除了8.2.2.3中表格3所定义的情况,如果EXPRESS聚合类型的基类型为一个自定义数据类型(其基本类型为ENuMERATlON类型),则与之对应的XMI。模式数据类型如8.2.2.3所述。注:根据定义,ENUMERATION类型中不能包古空格,且简单列表类型(如果其名称被空格分开)是一个无二义性的表示方式。见7.2.2.5中示例。8.22.6SELECT数据类型的聚合如果EXPRESS聚合类型的基类型为一个自定义数据类型(其基本类型为SEI.ECT类型),并且选择列表中各选项只有一种类型,则我们认为其基类型为该选项的类型而不是SEI。ECT类型且表格3中的规则将适用于该类型。其余所有情况中,如果EXPRESS聚合类型的基类型为一个自定义数据类型(其基本类型为SE[。ECT类型),则相应的XML模式类型为complexType类型。如果自定义类型的基础类型不同于基本类型(也就是说,如果自定义类型是SEI,ECT类型的一个特例),则complexType将如8.2.2.2所述将自定义类型作为基类型。否则,comp[exType将有7.2.2.6中所规定的形式,其中:——拍s*group:为XMI。组或与自定义类型相对应的实例元素的合格名;86 GB/T16656.28—2010/ISO10303-28:2007一一base-type:为与集合的基本类型(即基本类型为SELECT型的自定义数据类型)相对应的XMI。类型的合格名;一aggregate-type,usage,group-or-element,lower-bound,upper-bound在7.2.2.6中定义。具体见7.2.2.6示例。8.2.2.7自定义数据类型的聚合如果EXPRESS聚合类型的基类型为自定义型,即通过EXPRESS中原有类型声明所自定义的类型,则相应的XMl。模式数据类型取决于该自定义类型的基本类型,表3中规定的以该基本类型为基类型的将适用于此种情况。在符合此条件的情况下,自定义类型将被视为基类型。例外情况:如果一个自定义数据类型(或其他任何一种特例情况)通过一条map配置指令明确地映射成一种XMI.模式数据类型(见10.2.13),则与EXPRESS聚合类型相对应的该XMl.模式数据类型模型取决于所应用的map指令,具体如下;——如果应用了map指令的XMI,模式数据类型中包含空格,则其基本类型将被视为一个简单类型(引用表3中规则);——否则,聚合类型将被映射成8.2.2.2中所示的通用形式。8.2.2.8ENTITY数据类型的聚合如表3中所述,如果EXPRESS聚合类型的基类型为一个实体类型,则相应的XML模式数据类型为listogreferences引用列表形式(见8.2.2.8.1)或者实体实例形式(见8.2.2.8.2)。8.2.2.8.1引用列表形式如果选择了引用列表形式,则相应的XML模式数据类型将基于一个XMI。IDREF的简单列表。如果XMI,数据类型为一个存取访问属性的类型(见8.6.3),它将有如下形式:(XS:simpleType></xs:SimpleType>其中:——】o№r-幻∞d:为EXPRESS集合的下限,当该下限值不是一个常量,则mini,ength属性的值为该下限值(以十进制整数表示);否则,minLength属性的值为0;如果minLength属性值为0,则该属性将被忽略。——哪r-bound:为EXPRESS集合的上限,如果该上限值为一个常量,则存在maxLength属性且其值为该上限值(以十进制整数表示);否则,maxLength属性将被忽略。注:如果EXPRESS集合的类型为ARRAY,则其上下限值为Hilndex(a)Lolndex(a)+l,其中a为一聚合数据类型。其他情况下,相应的XML数据类型有如下形式:(XS:complexType>(XS:si“pleContent)(XS:restrictionbase=”exp:Seq-IDREF”)(XS:simpleType>(XS:restrictionbase=”xs:IDREFS”)(XS:minLengthvalue=”lower—bound”/>(/xs:restriction></xs:SimpleType>87 GB/T16656.28—2010/ISO10303—28:200788</xs:restriction)(/xs:SimpleContent)(/xs:eomplexType)其中:一一l。wer—bound与upper—bound定义同上。——basetype:为与该实体类型相对应的XML模式类型的合格名,如8.3所述。——aggregate—type:是EXPRESS聚合类型的关键宇,其对应关系为:set对应SET,bag对应BAG,list对应IAST,array对应ARRAY,list—unique对应LISTOFUNIQUE,array—unique对应ARRAYOFUNIQUE,需要注意的是引用列表形式中没有使用ARRAYOFOPTIONAL。——usage:如果EXPRESS聚合类型为ARRAY类型且其上下限值为常量,则arraySize将声明为fixed一”upper—bound”(其定义如上所述);如果EXPRESS聚合类型为ARRAY类型且其上下限值不是一个常量,则arraySize将声明为use一“required”;否则,arraySize将声明为use一”optional”。注1:这种表示方式采用了82.23中”列表值”的形式,它适用于所有情况,除非XS:list的itemType为X5:IDREF而不是base-type(item]、ype属性的值为base_type)。注2:前边所涉及的访问属性Accessorattribute形式,及更为普遍的simple形式,与8.2.2.3所述的形式一致,都等价于:(XS:SimpleType}(xs:restriction>(XS:simpleType> GB/T16656.28—2010nso10303-28:2007(,/xs:simpleType)(/xs!restriction>(/xs:simpleContent></xs:complexType>或者(当XMI。数据类型是一个存取访问属性的数据类型)(XS:simpleTypena【ne=”Pt3dSet”)(xs:restrictionbase=”xs:IDREFS”/)(/xs:simpleType)8.2.2.8.2实体实例元素序列形式如果选择了“sequenceofentityinstanceelements”形式,则相关的XMI。模式数据类型为具有7.2.2.7所示的eomplexType形式,其中:——baseinstance:为与集合的基本类型对应的实体实例元素的合格名,如8.5.5所述;——basecomplexEntity—goup:为与集合的基本类型对应的复合实体组类型的合格名,如8.5.6.2所示;——10werbound,upper—bound,aggregate—type,usage:如7.2.2.7所示。参见7.2.2.7的示例。8.2.3结构化数据类型EXPRESS中定义了两种数据类型,一种叫做“结构化数据类型”,它只能出现在一个自定义数据类型的定义中。在XML模式中没有与组合数据类型相对应的数据类型,因为在EXPRESS中该类型不能为任意的数据类型。8.2.3.1ENUMERATION数据类型XML模式中与ENUMERATION类型相对应的类型为EXPRESS中该自定义的数据类型,见8.2.4和8.3.3。8.2.3.2SELECT数据类型XML模式中与SELECT类型相对应的类型为EXPRESS中该自定义的数据类型,见8.2.4和8.3.4。8.2.4自定义数据类型对于EXPRESS中每一个自定义数据类型,相应的XMI.模式中数据类型为用XMI,模式中已有数据类型加以定义得到的数据类型,其中所用到的XMI。数据类型名及其定义将在8.3阐述。8.2.5实体数据类型对于EXPRESS中每一个实体数据类型,相应的XML模式中数据类型为用XMI。模式中已有数据类型加以定义得到的数据类型,其中所用到的XML数据类型名及其定义将在8.5阐述。8.3EXPRESS自定义数据类型的XML模式定义及声明EXPRESS自定义数据类型是用EXPRESS类型声明定义的数据类型。类型声明采用基础类型定义该数据类型,自定义数据类型被称作基础类型的专门化。然而,EXPRESS自定义数据类型的基础类型自身也可能是一个EXPRESS自定义数据类型,而后者可以是由基于另一个基础类型的EXPRESS类型声明所定义的,如此类推。最终有一个基本类型,它本身不是EXPRESS自定义数据类型,而是由EXPRESS语言定义的数据类型。注1:术语自定义数据类型(defineddatatype)、基础类型(underlyingtype)、专门化(specialization)、基本类型(fundamentaltype)都来自GB/T16656.11,在GB/T16655的本部分中被广泛应用于定义自定义数据类型的映射及其值的编码。对于已声明的或明确在相关语境模式中介入的每一个EXPRESS自定义数据类型,相关的导出89 GB/T16656.28—2010/iso10303—28:2007XMI。模式中将包含一个该数据类型的定义。XMI.模式数据类型的定义将取决于EXPRESS自定义数据类型的基础类型,规则如下:——如果该自定义数据类型通过map配置指令(见lo.2.13)明确得映射为XMI,模式中的数据类型,则该类型的定义将在8.3.6规定。——否则,如果该自定义数据类型的基础类型为一个简单数据类型(如BINARY、BOOLEAN、IN—TEGER、L()GICAI,、NUMBER、REAI。、STRING),则相应的XMI。模式数据类型定义见8.3.1。一如果该自定义数据类型的基础类型为一个聚合类型(如ARRAY、BAG、LIST或者SET),则相应的XML模式数据类型定义见8.3.2。——如果该自定义数据类型的基础类型为枚举ENUMERA7F10N类型,则相应的XMI。模式数据类型定义见8.3.3。——如果该自定义数据类型的基础类型为一个SEI。ECT数据类型,则相应的XMI.模式数据类型定义见8.3.4。——如果该自定义数据类型的基础类型为其他自定义数据类型,则相应的XMI。模式数据类型定义见8.3.5。如8.4.3所述,导出的XMI。模式中或许包含一个相应的实例元素的声明,此时该XMI.数据类型的定义与该实例元素的声明将以独立地、外部地方式表现。注2:一个EXPRESS自定义数据类型的基础类型不能为一个实体数据类型。8.3.1简单基础类型当自定义数据类型的基础类型为一个简单数据类型时(如BINARY、BO()I.EAN、INTEGER、LOGICAL、NUMBER、REAL或者S"I、RING),并且没有应用映射指令,则相应的XML模式数据类型的定义将在本章条指明。当基础类型为一个BINARY数据类型,相应的XML数据类型定义见8.3.1.1。当基础类型为BOOI,EAN、INTEGER、LOGICAL、NUMBER或者REAL时,相应的XMI.数据类型定义见8.3.1.2。当基础类型为STRING数据类型时,相应的XMI。数据类型定义见8.3.1.3。8.3,1.1BINARY数据类型的定义当基础类型为一个无限制的BINARY数据类型时,相关的XML数据类型定义将有如下形式:(xs:complexTypenalNe=”identifier”)(XS:SimpleContent)(XS:restrictionbase=”binary-type”)</xs:restric七ion)(/xs:simpleContent>(/xs:complexType>其中:——1dentifier:是从EXPRESS自定义数据类型的标识符中导出的,见8.1.2;——binary_type:为exp:hexBinary或者exp:base64Binary(如果应用了map一“KS:base64Binary”指令)。当基础类型为一个有限定条件的BINARY数据类型时(见8.2.1.1.1),相应的XMI,数据类型定义将有如下形式:qn GB/T16656.28—2010/]so10303-28:2007(xs:maxLengthvalue=”maxLength”/)(XS:attributename=”extraBits”fixed=”remainder”/)(/xs:restrictlon></xs:complexType)其中:——identifierbinary—type的定义如上;——mini.ength,maxl。ength,remainder见8.2.1.1.1规则。8.3.1.2BOOLEAN,INTEGER,LOGICAL,NUMBER和REAL的定义当基础类型为BOOI。EAN、INI’EGER、LOGICAI。、NUMBER或者REAI。时,相应的XMI,数据类型定义将有如7.3.1.2所示的形式,其中:——ldentlfler:是从EXPRESS自定义数据类型的标识符中导出的,见8.1.2;underlylng—type:与基础类型相对应的XML模式中数据类型,见8.2.1。8.3.13STRING数据类型的定义当基础类型为STRING数据类型,相应的XMI.数据类型定义将有7.3.1.3中所示几种形式之一,其中:——l(1entlfler:是从EXPRESS自定义数据类型的标识符中导出的,见8.】.2;——minl,ength和maxl。ength(xg于有限定的STRING数据类型),见7.3.1.3。例外情况:如果基础类型为一个无限制的STRING数据类型且notation配置指令应用于该自定义数据类型,则相应的XMl,数据类型定义将有如下形式:(XS:complexTypename=”identifiez”)(xs:slmpleContent)(/xs:extension>(/xs:slmplecontent)(/xs:complexType、其中:——1dentlfier同上;——configured—notation的值为notation指令所给定的值。示例:对于EXPRESS声明:TYPElabel=STRINGoENDTYpE:TYPEclear—text=STRINGENDTYPE:TYPEuserid=STRING(8)FIXED:ENDTYPE;和配置指令:(/XS!restriction) GB/T16656.28—2010/ISO10303-28:2007o/xs:SimpleType>(x8:complexTypename=”Cleartext”>(xs:simpleContent>(XS:extensionbase=”xs:normalizedString”、(/xs:SimpleType)8.3.2聚合基础类型如果EXPRESS自定义数据类型的基础类型为一个聚合数据类型,如SET、LIST、BAG、或者ARRAY类型,则相应的XMI.模式数据类型取决于若干因素,如8.2.2所述。相应的XML模式数据类型定义的形式取决于所对应的基础类型的形式,但他们均为complexTypes复合类型。因此,相应的XMI,数据类型定义将有如下通用形式:(XS:complexTypena/Re=”identifier”>(body)(/xs:complexType)其中:讨ent讯er:是从EXPRESS自定义数据类型的标识符中导出的,见8.1.2;(body)是与默认聚合类型相对应的complexType类型的一个模型,如8.2.2所述。注:对于所有的实际应用,该数据类型定义与相关的数据类型是一致的,除非naFlle一”identifier”被加到了初始的(XS:complexType)元素中。8.3.3ENUMERATION基础类型如果EXPRESS自定义数据类型的基础类型为一个ENuMERATIoN数据类型,则相应的XMI.模式数据类型将有7.3.3所规定的形式,其中:ldentifier:是从EXPRESS自定义数据类型的标识符中导出的,见8.1.2;——enumitem1⋯.enumitem。ft在7.3.3中说明。8.3.4SELECT基础类型如果EXPRESS自定义数据类型的基础类型为一个SEI。ECT类型,则相应的XMI。模式数据类型将取决于工作选择列表中数据类型的数目,详见8.3.4.1。如果工作选择列表中不包含任何数据类型,则SELECT类型将不会被映射到导出的XML模式中。如果工作选择列表中只包含一种数据类型:一相关的XMI,模式数据类型将为与该类型相关的XML模式数据类型;——相关的实例元素将为与该类型相关的实例元素。否则,导出的XMI。模式中将包含一个XMI。组声明(详见8.3.4.2)和一个complexType复合类型声明(详见8.3.4.3),相关的XML模式数据类型将为一个如8.3.4.3所示的complexType复合数据类型。另外,导出的XMl。模式中将可能需要包含一个与SELECT数据类型相关的XMI。key(关键字)q≯ GB/T16656.28—2010/iso10303-28:2007的定义,如8.3.4.4所述。注:对于选择列表中有不止一种数据类型的一个SELECT类型,不存在与其对应的实例元素(详见84)。相反,对于SEI.ECT数据类型,8342所示的组即为与其相对应的实例元素。8.3.41工作选择列表SELECT数据类型工作选择列表将以如下方式运作:——工作选择列表将首先被初始化为SELECT数据类型所包含的EXPRESS数据类型。~对于工作选择列表中每个EXPRESS自定义数据类型,如果其基础类型为一个SEI.ECT类型,则将从列表中删除该自定义类型而替换为列表中原有类型所对应的默认SEI。ECT类型。——上一步骤将一直重复进行,直到列表中不存在基础类型为SEI。ECT类型的自定义数据类型。——对于工作选择列表中所出现的、并且应用了无条件继承映射的每一个EXPRESS实体数据类型(见8.5),所有在相关的子类组中出现的子类(此种情况见8.5.6.1)都应加入到该选择列表中。例外情况为:对于已经在选择列表中出现过的数据类型则没必要再重复添加。注1:应用有关实体数据类型的类型图示(见85.1),如果一个叶节点存在一条到另一个与实体数据类型相关节点的路径,则该叶节点表示了一个可能的子类,并且此路径上所有的节点也表示了一个可能的子类。——对于已经在选择列表中出现过的数据类型则没必要再重复添加。——每一个使用了无条件继承映射的抽象实体数据类型(见6.3)将会从工作选择列表中删除。注2:工作选择列表是所有EXPRESS数据类型的集合,这些EXPRESS类型的实例可被原始SELECT数据类型所接受。嵌套的SELECT数据类型也被扩展到了列表当中。注3:如果一个自定义数据类型的基础类型为另一个自定义数据类型,即使其基本类型为一个SELECT数据类型,它也不会在选择列表中被替换/扩展;该自定义数据类型通常被作为一个特例处理,该信息被保留在XMI。模式的类型模型中。见7.3.4.1示例。8.3.4.2SELECT数据类型的XML组声明当EXPRESS自定义数据类型的基础类型为一个其工作选择列表包含多种数据类型的SELECT数据类型时,导出的XML模式将包含一个与EXPRESS自定义类型相对应的组类型的声明。组的名字将会如8.1.3所示从EPRESS自定义数据类型的标识符中导出。组的内容是从SELECT数据类型的工作选择列表中导出,如8.3.4.1所示。组将包含一个选项元素。对于每一个选择列表中的EXPRESS数据类型,该选项元素将包含一个与该EXPRESS数据类型相关的实例元素的元素声明(见8.4),或者为每一个在其子类组中出现的实例元素进行元素声明(见8.5.6.1)。这种元素声明有一个ref属性,其值为该实例元素的合格名。也就是说,组声明将有7.3.4.2所述的形式,其中:——identifier:是从EXPRESS自定义数据类型的标识符中导出的,见8.1.2;~--select—list—item1⋯select—list—item—n及complexEntity—usage见7.3.4.2说明。注:由于工作选择列表中每个类型均有其类型名,实例元素的合格名将从相应的EXPRESS数据类型标识符中导出得到,见8.1.3规则。引用7.3.4.2示例。8.3.4.3SELECT数据类型的XML数据类型定义当EXPRESS自定义数据类型的基础类型为一个其工作选择列表包含多种数据类型的SELECT数据类型时,相关的XMI.模式数据类型为一个复合类型complexType,其内容模型为与SELECT数据类型相关的组类型,具体见8,3.4.2。其中complexType复合类型的定义将有7.3.4.3所示的形式,其中:——.dentmer:是从EXPRESS自定义数据类型的标识符中导出的,见8.1.2;——gr。up—name:为与SELECT数据类型相对应的组的合格名,见8.3.4.2;93 GB/T16656.28—2010/ISO10303-28:2007——exp:arraySizeusage:如果SEI。ECT组中包含有实例元素表示匿名集合,则其值为(XS:elementref一”exp:arraySize”use一”optional”/>;否则,该属性将被忽略。注1:与SELECT数据类型对应的组中的每个实例元素,包含了一个可选的XML属性path,如845所述。path属性规定了选择列表中其实际值所对应的类型。注2:为了让Aeeessor元素(见86.4)引用而不是包含一个SELECT数据类型的值,complexType复合类型必须包含ref属性,并且允许选项组被忽略。9.43中规定要么必须给定ref属性,要么其内容包含一个选项组的实例。见7.3.4.3示例。8.3.4.4SELECT数据类型的XML标识约束如果在导出的XMI,模式中应用了配置选项generatekeys=”true”,并且在相关语境模式中存在一个ExPRESs属性为自定义数据类型(如SEI。ECT),并且存在下述情况之一:——配置指令expattribute一”attributecontent”应用于该属性;——配置指令exp—attribute一”attribute—tag”,且content=”ref”或者content一”unspecified”应用于该属性。则导出的XML模式将包含一个与该自定义数据类型相对应的一个关键字key的定义。注1:exp-attribute=”attributetag”和content=“unspecified”是默认值。其中key关键字定义将有如下形式:(/xs:key>其中:一一schema是从EXPRESS模式中标识符导出的,见8.12;——ldentifier:是从EXPRESS自定义数据类型的标识符中导出的,见8.1.2;——seiect—list—item一1⋯select—list—itemn:与工作选择列表中数据类型相对应的实例元素的合格名,见8.4规则。注2:与SE[。ECT数据类型相关的XMI。key定义等价于与实例元素相关的key定义(见846)。与SELECT数据类型相对应的XML组声明等价于实例元素的声明,这几种定义方式类似。示例:接着上面8.342中的例子,XMI,关键字声明如下:(xs:keyn锄e=”Tns—S-key”>8.3.5自定义数据类型的基础类型如果EXPRESS自定义数据类型的基础类型为另一种自定义类型,则相关的XML模式数据类型模型将取决于与基本类型相对应的XML模式类型,例外情况:如果通过map配置指令明确地将基础类型映射为一个XML模式数据类型(见10.2.13),则该指令中规定的XML模式类型在本章条中将被视为“与基本类型相对应的XMI,模式数据类型”。如果与基本类型相对应的XML模式数据类型为一个simpleType简单类型,则相应的XMI。模式数据类型定义将有7.3.5simpleTypes所规定的形式;如果与基本类型相对应的XMI。模式数据类型为一个complexType类型,则相应的XMI。模式数据类型定义将有7.3.5complexTypes所规定的形式;94 GB/T16656.28—20IO/ISO10303-28.2007对于任意一种情况:一一identifier;是从EXPRESS自定义数据类型的标识符中导出的,见8,1.2。——(contentmodelforthefundamentaltype):如果与基础类型对应的complexType为XMI,基本元素的组合,这些XML基本元素描述了与自定义数据类型的基本类型相对应的XML数据类型的相关内容,如果基本类型为一个聚合数据类型则sequence部分在8.2.2阐述,或者,如果基本类型为一个SEI,ECT类型则group部分在8.34.2阐述。——underl—ng-t.ype和contentUsage在7.3中指明。注:内容模型不必包含基本类型的XML属性。见7.3.5示例。8.3.6由map配置指令映射出的自定义数据类型如果自定义数据类型通过一条map配置指令明确地映射为一个XML模式数据类型(见10.2.13),则相应的XML模式数据类型将为一个simpleType,该简单类型是按照map指令的限定条件从相关的XML模式数据类型导出。其中的XMI。模式数据类型定义将有如下形式:(XS:simpleTypeha/he=”identifier”)(xs:restrictionbase=”configured-type”/>‘/xs:SimpleType>其中:——identi{ier:是从EXPRESS自定义数据类型的标识符中导出的,见8.1.2;——configuredtype为map配置指令所规定的XML模式数据类型。示例:对于EXPRESS声明:TYPEidentifier=STRING;ENDTYPE;给定的配置指令:(typeselect=”identifier”map=”xs:Name”)在导出XMI。模式中的定义:(xssimpleTypena【ne=”identifier”)(/XS:SimpleType>8.4与EXPRESS数据类型相对应的实例元素所谓实例元素指的是一个XML元素,它是一个EXPRESS数据类型的名称并且代表了该数据类型的实际值。一个by—valueinstanceelement指的是其内容为数据值的实例元素。一个hyre{erenceinstanceelement指的是一个没有内容的实例元素,但它包含了一个对内容为数据值的byvalue实例元素的引用。注1:大部分非实体数据类型的实例元素为by—value类型的。与一个EXPRESS实体数据类型对应的实例元素的声明将在8.5阐述。如果EXPRESS数据类型既不是实体类型电不是一个选择类型(selecttype),则与其对应的实例元素的声明分为以下几种情况:——该EXPRESS数据类型以一个聚合类型的基本类型形式出现,且该聚合类型使用了8.2.2所述的元素序列的表示形式;——ExPREss数据类型在一个SELECT类型的工作选择列表中出现(详见8.3.4);——EXPREss数据类型的值能以引用的形式出现(详见8.4.7)。否则,实例元素的声明可以在导出的XMI。模式中,不过这不是必须的。95 GB/T16656.28—2010/lSO10303-28:200,7例外情况:如果实例元素已经在BASEXMI.模式中声明过(如8.4.1),则它将不会在导出的XML模式中再次声明。如果一个自定义数据类型的基础类型为SEI。ECT类型,则其相应的实例元素将不会被声明。注2:对于一个基础类型是SELECT类型的自定义数据类型,8342所规定的XML组声明等价于此处的实例元素声明。但是如果一个自定义数据类型的基础类型为另一个自定义数据类型并且其基本类型为一个SEI。ECT类型(即SEI,ECT类型的专门化),则它将有一个实例元素,上述的例外情况不适用于此种数据类型。注3:如果一个数据类型仅仅通过expattribute一”attribute-tag”指令以EXPRESS属性的方式出现,则上述的实例元素声明的要求将不适用于该数据类型.除非它也同时应用了content一”re{“指令或者content一“unspecified”指令。EXPRESS数据类型实例元素声明的相关规则将在8.4.1~8.4.4进行规定,另外,对于实例元素的XML一致性约束将在8.4.6规定。注4:一个非实体数据类型的EXPRESS数据类型的典型应用是将其作为一个实体属性的值。此种情况下,EXPRESS数据类型图示为XMI。元素的内容,或者表示为一个表示了EXPRESS实体属性的XM[.属性(见86)。然而,一个EXPRESS数据类型也可能作为一个聚合类型的部分类型或者SELECT类型出现在一个实例文档中。另外,如果应用了配置指令,一个EXPRESS属性值可能被映射为一个“独立”的实例元素,该实例元素的值即为该属性的值。在这类情况中,该值可以被表示为一个实例元素的值。8.4.1简单数据类型的实例元素在BaseXMI。模式(见附录c)中为每一个EXPRESS简单数据类型声明了一个相应的实例元素,该实例元素的数据类型为与EXPRESS数据类型对应的XMI。模式类型,并且为其添加了instanceAt—tributes属性组。(见8.4.5)某些情况下,导出的XMI,模式中可能为简单类型声明了额外的实例元素,具体见下述。8.4.1.1BINARY数据类型与EXPRESS中BINARY数据类型对应的实例元素为exp:hexBinarywrapper元素,例外情况为:⋯如果EXPRESS中BINARY类型通过一条map配置指令映射为exp:base64Binary类型,则相关的实例元素将为exp:base64Binarywrapper。如果EXPRESS中BINARY类型规定了最大长度或固定长度,相应的实例元素将在8.4.1.1.1中规定。exp:base64Binary-wrapper实例元素在BaseXML模式中的声明如下:(xs:complexgJpe)(/xs:SimpleContent)(/xs:complexgfpe)(/xs:element>exp:hexBinary_wrapper实例元素在BaseXMI.模式中的声明见7.4.1.1。8.4.1.1.1有约束的BINARY实例元素如果EXPRESS中BINARY数据类型规定了最大长度或固定长度(见8.2.1.1.1),则相应的XML模式中实例元素的声明将有如下形式:(/xs:simpleContent>(/xs:complexType>(/xs:element>其中:——typename为Binary,如果使用了map一“xs:base64Binary”指令则为base64Binary;——billary_type:为XMI。模式中为有约束的BINARY类型所声明的数据类型的合格名,详见8.2.1.1.1;——bits为EXPRESS中数据类型的以比特为单位的固定长度或最大长度;一minBits:如果EXPRESS中BINARY类型长度声明为固定FIXED,则其值被设置为bits,否则为0。见7.4.1.1.1示例。8.4.1.2BOOLEAN数据类型与EXPRESS中BOOLEAN数据类型对应的实例元素为exp:Booleanwrapper.它在BaseXMl。模式中的声明见7.4.1.2。8.4.1.3INTEGER数据类型与EXPRESS中INTEGER数据类型对应的实例元素为exp:Long-wrapper,例外情况为:如果IN—TEGER类型通过map配置指令映射为xs:decima(见10.2.13),则相应的实例元素将为exp:integerwrapper。BaseXMI.模式中exp:integerwrapper实例元素的声明如下:</xs:simpleContent)(/xs:complexType>(/xs:element)exp:longwrapper实例元素在BaseXML模式中的声明见7.4.1.3。8.4.1.4LOGICAL数据类型与EXPRESS中LOGICAl,数据类型对应的实例元素为exp:logical—wrapper,它在BaseXMI,模式中的声明见7.4.1.4。8.4.1.5NUMBER和REAL数据类型与EXPRESS中NUMBER数据类型对应的实例元素为exp:decimalwrapper,例外情况为:如果NUMBER类型通过map配置指令映射为XS:double(见10.2.13),则相应的实例元素将为exp:doublerwrapper。与EXPRESS中REAl,数据类型对应的实例元素为exp:doublewrapper,例外情况为:如果REAI。类型通过map配置指令映射为XS:decimal(见lo.2.13),则相应的实例元素将为exp:decimal—wrapper。97 GB/T16656.28—2010/ISO10303-"28120078.4.1.6STRING数据类型与EXPRESS中STRING数据类型对应的实例元素为exp:string-.wrapper,例外情况为:——如果STRING类型通过map配置指令映射为另一种XML数据类型(见10.2.13),则相应的实例元素将在8.4.1.6.2阐述;如果STRING类型规定了最大长度或固定长度,则相应的实例元素将在8.4.1.6.1阐述。BaseXML,模式中关于exp:string-wrapper的声明见74.1.7。8.4.1.6.1有约束的STRING实例元素如果EXPRESS中STRING数据类型规定了最大长度或固定长度(见8.2.1.7.1),则相应的XMI。模式中实例元素的声明将如7.4.1.7.1所示,其中:1一strlngtype:为与XML,模式中有约束的STRING数据类型相对应的自有类型名,详见82.1.7.1;——Tns:stringtype为与XML,模式中有约束的STRING数据类型对应的合格名。见7.4.1.7.1示例。8.4.1.62EXPRESSSTRING数据类型对应的XML数据类型表4规定了应用了map配置指令后EXPRESS中s7FRING数据类型可能被映射成的XMI.数据类型,及与其对应的实例元素(具体定义见附录c)。表4映射到XML数据类型的字符串数据类型的实例元素xML数据类型相应的实例元素xs:normalizedstring(defauh)ex口:strlng—wrapperexp:generalstringwrapperexp:language-wrapperXS.N8meexp:Name-wrapperXS:QN8meexp:C!Name-wrapperxs:NMTOKENexp:NMTOKEN--wrapperxs:anyURIexp:anyURbwrapper8.4.2匿名聚合类型的实例元素如上述8.4所述,如果一个实例元素表示了一个匿名聚合数据类型,则其声明将在本条中规定。对于一个匿名聚合类型的实例元素,它将与上下文环境中所有的聚合类型相对应,只要这些集合有相同的基本类型而不管其具体类型(如SET、LIsT、或ARRAY)。例外情况:如果两个基本类型相同的匿名集合通过配置指令指定了不同的结构(一个为列表结构,另一个为元素序列结构),则XML模式中将包含它们两个各自的相应的实例元素的声明。由于实例元素表示了任何基本类型相同的聚合类型,所以它将包含所有的8.2.2.1所示的ref.ar—raySize,itemType和cType属性。由于实例元素可以为引用的(见8.4.7)或者在更高级别的集合中可表示为一“行”.实例元素将包含instanceAttributos组(见8.4.5)。实例元素声明中的XML模式数据类型将取决于与聚合数据类型对应的XMI.模式中的类型,如8.2.2所述,但不同之处在于:叫啊如果与聚合类型对应的XML数据类型有8.2.2所示的列表形式,则相应的实例元素声明将在接下来的8.4.2.1规定;——如果与聚合类型对应的XML数据类型有8.2.2所示的元素序列形式,则相应的实例元素声明将在接下来的842.2规定;98 GB/T16656.28—2010/iso10303—28.2007——如果与聚合类型对应的XM[。数据类型有8.2.2.8.】所示的引用列表形式.则相应的实例元素声明将在接下来的8.4.2.3规定;~如果与聚合类型对应的XMI。数据类型有8素声明将在8.4.2.2以元素序列形式声明元素;2.2.4所示的顺序行形式,则相应的实例元其中嵌套数据类型的基本类型为每一“行”注l:如果外部聚合类型具有顺序行形式.则对于嵌套的聚合类型来说必须具有一个实例元素而不管其形式如何。~如果与聚合类型对应的XMI。数据类型有8.2.2.4所示的多维数组形式,则相应的实例元素声明将在8.4.2.2以元素序列的形式声明,略有不同的是此处的基类型被视为多维数组结构中最深层元素的基础类型。注2:因此,元素序列实例元素表达了所有(最深层)基类型实例元素的序列化聚合,不管其维数为多少。注3:因此.值列表实例元素表达了所有(最深层)基类型值的序列化聚合,不管其维数为多少。8.4.2.1list—of-values形式的实例元素如果与聚合数据类型相对应的XML模式中数据类型使用了8.2.23所示的值列表(1istofvalues)形式,则陔实例元素的内容模型为一个经XMI。实例属性和集合属性所扩展得到的简单列表类型。该实例元素的声明将有7.4.2.1所示的形式,其中:⋯E1ementname:为实例元素的XMI,名称,具有如F形式:Seqbase,其中base为与聚合类型的基本类型相对应的XMI.模式中数据类型的自带名称部分,如8.2昕述。一Unrestricted—type:为无限制条件XML数据类型的合格名,该类型支持任意聚合数据类型的基本类型,如8.2.2.3.3所述。注1:与基本类型相对应的实例元素在本文档描述中从未使用过。注2:如果实例元素被声明为use一”optional“,则其XML属性中存在许多必要的行为,这些行为在98规定。见7.4.2.1示例。8.4.2.2所有sequence-of-elements形式的实例元素如果与聚合类型相对应的XMI.模式中数据类型使用了8.2.2.2所示的元素序列的形式,或者82.2.4.1所示的顺序行的形式,或者8.2.2.4.2所示的多维数组的形式,则实例元素的声明将有7.4.2.2所示的形式,其中:—~豇“ent一/lame:为实例元素的XMI。名称,具有如下形式Seqbase,其中base为base—instance名称的自有部分(见下)。注1:对于基本类型是嵌套的匿名聚合数据类型且采用r顺序行形式,则此处的规则是递归的。也就是说,与嵌套聚合类型最深一层嵌套类型相对应的XML模式中数据类型的名称将有Seqbase形式,其中base为最深层次的基本类型,并且次深层次的匿名聚合类型映射得到的XML模式类型名将有Seqseqbase形式。一Base-instance:我们用术语“基本类型”来指代EXPRESS中具有元素序列或顺序行形式的聚合类型的基本类型,或者指代具有多维数组形式的最深一层的基础类型。如果基本类型为实体数据类型,则base~instance将为相关的复合实体组(见8.56.2)的合格名;如果基本类型为一个SEI。EC71类型,base—instance将为相关的组的合格名(见8.3.4.2);否则,它将为相关的实例元素的合格名(见8.4)。注2:如果实例元素表示了一个顺序行结构,则基本类型为此“行“所代表的类型,即行中所嵌套的聚合数据类型。如果实例元素表示了一个多维数组结构,则基本类型为最深一层的基础类型,具体见82.24。——Element—or-group:如果baseinstance是~个元素则该属性值为XS:dement.否则如果base—instance是一个组则其值为XS:group。注3:822所规定的与聚合类型相对应的XML数据类型实际上并未应用于此声明中。注4.尽管属性r甜州1、ype,arraySize被吉明勺ilSeoplienal”,98r}]规定在某些特定环境下它们是癣须的.尤茸是0n GB/T16656.28~20lO/iSO10303—2B:2007当实例元素表示r一个多维聚合类型。示例:EXPRESS匿名数据类型;LIST[17]。FARRAY[13]OFREAL其中配置指令flatten一“false”;实例元素声明如下:(xs:sequence>(XS:attributeGroupref≈”exp:instanceAttributes”/)(/xs:element>‘XS:sequence>(xs:attributeGroupref=”exp:instanceAttributes”/)(/xs:complexType>(/xs:element}注:如果嵌套集合中出现了flatten竺“false”,则将应用顺序行结构。8.4.2.3list-of-references形式的实例元素如果与聚合数据类型对应的XML模式数据类型中应用了引用列表(1ist.of-references)形式(见8.2.2.8.1),则该实例元素的类型模型为一个以XML实例属性和集合属性扩展得到的简单列表。该实例元素的声明将有如下形式:(/xs:restriction>(/xs:Simplecontent>(/xs;eomplexType>tOO GB/T16656.28—2010/too10303-28:2007t/XS:element)其中:——Element-name:具有形式Seqbasere{,其中的base为8.2中所述的与实体数据类型对应的XML模式类型名的自带部分。⋯Actual-has.type:为hemType属性的值,为8.2中所述的与实体数据类型对应的XMI,模式中数据类型合格名。注1注2示例实际的XMI。表示为一个实体的实例元素引用的简单列表,附加以XMI。实例元素的属性和集合的属性,这种表示类似于842i中所描述的简单列表。而此处的XML模式结构与其不同,因为相关的无限制条件的数据类型为exp:SeqIDREF并且此处没有为exp:itemType属性赋值。对于那些声明为use--”optional“的XML属性的实例元素,有许多必要的行为将在98规定。对于EXPRESS匿名数据类型:.ARRAY[1:3]OFPt3d;实例元素声明如下:(xs:elementDdme=”Tns:Seq-Ptd3d-ref”nillable=”true“>(XS:simpleContent>(/xs:simpleContent)(/xs:complexType></xs:element>8.4.3自定义数据类型的实例元素对于每一个EXPRESS中自定义数据类型,不管它是以聚合数据类型的基本类型出现.还是出现在一个SEI.ECT类型的选择列表中,导出的XML模式都将包含一个实例元素的声明。例外情况:如果一个自定义数据类型的基础类型为SELECT类型,则不存在与其相对应的实例元素,且相关的XMI。模式对象为一个组(见83.4.2)。注1:如果某自定义类型的基础类型为一个SELECT类型且工作选择列表包含不止一种数据类型,则与该自定义类型相关的XMI。模式对象为一个组类型(见8.3.4.2)。如果工作选择列表仅包含一种数据类型,则该唯一选项的实例元素将应用于该自定义类型(见8.3.4)。注2:如果一个自定义数据类型的基本类型为SELECT但其基础类型却不是SEI,ECT的情况,本条中将为此情况规定一个相应的实例元素。针对于与自定义数据类型对应的XML模式中数据类型为eomplexType还是simpleType,相应的实例元素的声明具有7.4.3所规定的形式,对于任意情况:——’rypename为与EXPRESS自定义数据类型对应的XMI。模式中数据类型的合格名(见8.1.3)。——Localtypename与elementname的规则见7.4.3。见7.4.3示例。8.4.4实体数据类型的实例元素对于一个EXPRESS实体数据类型,其相应的实例元素规则将在8.5.5规定。8.4.5实例元素属性所有的实例元素都有一个complexType,它包括了一个名为instanceAttributes的XML属性组。该属性组的定义见BaseXMI.模式及7.4.5所述。具体的属性定义见7.4.5。101 GB/T16656.28—2010/ISO10303—28:20078.4.6实例元素的XML标识约束这一条仅适用于使用generate—keys一”true”配置指令(见10.2.23)的导出XMLSchame。如果使用默认的generatekeys--”false”指令.导出的XMLSchame将不包含非实体数据类型的EXPRESS数据类型的标识约束。这一条详细讲述了EXPRESS数据类型的实例元素的XML标识约束,这些EXPRESS数据类型不是实体数据类型。实体数据类型的XMI。标识约束在8.5.9中详细讲述。如果实例元素的EXI’RESS数据类型是可引用的(见8.4.7),导出的XMI.Schame包含相应的XMI,关键字(key)定义(详见8.4.6.1)。例外:如果EXPRESS数据类型是无约束的简单数据类型,相应的关键字(key)定义出现基本的XMI。Schame里(见8.4.6.2),而不是导出的xMLSchame里。实例元素的引用有下面的约束:——被引用的实例元素(见9.10.2).与相同的EXPRESS数据类型一致。或者~被引用的存取访问元素(见9.4.3.1)或被引用的存取访问属性(见9.4.2),与数据类型为EXPRESS数据类型的EXPRESS属性相一致。像下面两种情况中使用EXPRESS数据类型时,如果使用content一“ref”或者content一”unspeci.1ied”,则序列化单元包含被引用的实例元素。使用元素序列格式映射的聚合类型的基本类型,或者使用expattribute一”doubletag”的EXPRESS属性的数据类型。如果序列化单元与XML模式一致并且配置指令包含被引用的EXPRESS数据类型的实例元素,那么导出的XMI。模式有一个相应的XMI。keyref定义(详见8.4.6.3)。例外:如果EXPRESS数据类型是无约束的简单类型,相应的keyref定义出现在基本XML模式中(见8.4.6.2),而不是在导出的XMI。模式中。注1:如果EXPRESS数据类型是有约束BINARY或s-IRING类型,key和keyref的定义都不在基本XM[。Schame中,实例元素的定义在导出的XMI,Schame中(见8.4.1.1.1和8.4.16.1),相应的key和keyref的定义在8.4.6.1和84.6.3中讲述。注2:当实例元素被存取访问元素或者存取访问属性引用时,要为存取访问创建一个额外的keyref定义(见8.63和86.4)。注3:与EXPRESS数据类型相应的XMI。key组件和keyref组件的声明是为了保证被引用的元素或属性可以引用一个恰当类型的值元素。值可以是EXPRESS属性的值或者在一个EXPRESS属性的聚合值中,也可以是包含在EXPRESS属性的值中。如果配置指令允许一个数据值被引用,则XMI,实例文档可能包含两种相应的实例元素(见910)——在与EXPRESS属性相应的存取访问元素的内容中的可被引用元素,和序列化单元的直接子单元中的独立的传值元素。传值元素有一个叫做、d的XM[。属性,这个属性的值是该传值元素在序列化单元中的一个本地XML标识。传递引用的元素有一个名为ref的XML属性,这个属性的值是一个本地XML标识。XMI。Schame对ref属性的IDREF数据类型的网一性约束耍求元素的·d属性的值与ref属|生的值相匹配,这保证了引用完整性,这一条中定义的目的是提供XMI。Schame声明.这个亩明说明了1d值和ref值相匹配的XMI。元素应该是相同数据类型的传值实例元素。8.4.6.1非实体实例元素的关键字定义对于明确的数据类型,受约束的BINARY或STRING数据类型,或者匿名的聚合数据类型,key的定义采用如下格式:(XS:keyname=”schemainstance-name-key”)(XS:selectorxpath=”Tns:instance-name”/)(XS:fieldxpath=”@id”/)(/xs:key)茸中:】02 GB/T16656.28—2010/ISO10303-2812007一schema:是EXPRESS机制的标识(映射过程见8.1.2)。——jnst∞ce_n∞e:是与EXPRESS数据类型相对应的实例元素的名字的本地部分。如果EXPRESS数据类型是一种明确的类型,名字的描述参见8.4.3。如果EXPRESS数据类型是受约束的BINARY或STRING类型.名字的描述分别见8.4.]1.1和8.4.1.6.1。如果EX—PRESS数据类型是匿名的聚合数据类型,名字的描述见8.4.2。——Tns:instance-nase:是对应于实体数据类型的实例元素的完全合格名。注:由于传值的实例元素只能在序列化单元的直接内容中被引用(见9102),对key的xs:selectorxpat扩展涉及实例元素,这些实例元素是序列化单元元素的直接子元素。这些元素必须要有一个-d属性(见9102)。示例:对于出现在模式APPLICATION—SCHEMA:中的EXPRESS匿名数据类型:ARRAYL1:3]OFSTRINGXM[。实例元素声明如下:(xs:elementilame=”Tns:Seq-string-wrapper“)(/xs:element)像在上面842中所描述的一样。相应的关键字和关键字引用声明如下:(xs:keyname=“Applicationschema_一Seq-string-wrapper—key”,(xs:selectorxpath=”Tns·Seq-string-wrapper”/)(xs:fieldxpath=”@id”/)(/xs:key>(xs:keyrefname=”ApplicationschemaSeq-string-wrapper-keyref”refer=”Tns:ApplicationschemaSeq-string-wrapper-key”)(xs:selectorxpath=”//Tns:Seq-string-wrapper”/l(xs:fieldxpath=”@ref”/></xs:keyref>8.4.6.2简单数据类型的关键字定义如果EXPRESS数据类型为一个无限制条件的简单数据类型,则与实例元素相对应的key定义及keyre{定义见BaseXMI,模式,它们不会出现在导出的XMI.模式中。表5匿名EXPRESS数据类型的XML关键字名EXPRESSXMI.实例元素名称关键字名数据类型BINARYexp:hexBinarywrapperexp:hexBinarykeyBINARYexp:base64Binaryexp:base64Binary—wrapperexp:base64BinarykeyBOOI。EANxs:booleanexp:booleanwrapperexp:booleankeyINTE(jERxs:longexp:long—wrapperexp:long—keyINTEGERxs:decimalexp:intege卜wrapperexp:mtegerkey1』OGlCAI,exp:logiealexp:logicalwrapperexp:logicalkeyNUMBERxs:decimalexp:decimal—wrapperexp:deximalkeyNUMBERxs:doubleexp:doubl⋯appe‘exp:double-keyREAI。xs.decimalexp:decimalwrapperexp:decimal—keyREAI。xs:doubleexp:double-wrapperexp:doublekeySTRINGxs:normalizedstringexp:stringwrapperexp:stringkey103 GB/T16656.28—2010nso10303-28:20078.4.6.3引用实例元素的Keyref定义如果遵循XMI,模式和配置指令的一个序列化单元能够包含与EXPRESS数据类型对应的实例元素的引用信息,则导出的XML模式中将包含一个相应的keyref定义,且其定义具有如下形式:(XS:keyrefname=”schema—instance-name-keyref”refer=”keyname”></xs:keyref)其中:——Schema与instancename的定义见8.4.6.1;Keyname为8.4.6.1中定义的相关的key组件的完全合格名,即为“Tnsnamekey”,其中Tns为导出的XMI。模式的相应的前缀。注:keyref的表达式XS:selectorxpath引用了出现在序列化单元中的元素单元内容中以引用方式产生的实例元素的数据类型。8.4.7可引用的实例一个EXPRESS数据类型被称为可引用的,指的是其中任意的一个序列化单元中的元素都能够包含一个其自身的引用信息。由于不同的EXPRESS数据类型在映射时存在不同的默认映射值,因此决定一个数据类型是否为可引用的实际上与其数据类型有关。8.4.7.1可引用实体实例在默认的XMI。模式中,每个EXPRESS实体数据类型都是可引用的,除非该实体类型不存在一个实例使得该实例的值为遵循上下文环境的序列化单元的任意属性值(或其部分值)。对于一个已配置的XMI,模式,EXPRESS实体类型可否被引用取决于以下规则:——对于EXPRESS数据类型的任意值,如果它为应用了exp—attribute一”attribute—content”指令的EXPRESS属性的合格名,则该实体类型是可引用的;⋯‘否则,如果应用了exptype一”value”指令,则该实体类型不可引用;——否则,对于EXPRESS数据类型的任意值,如果它为应用了content--”re{”或者content一”unspecified”指令的EXPRESS属性的合格名,则该实体类型是可引用的;一~否则,对于EXPRESS数据类型的任意值,如果它为应用了content一”ref”或者content一”unspecified”指令的聚合类型中某构成部分的合格名,则该实体类型是可引用的;——其他情况,该实体数据类型为不可引用的。注:exp-attribute一”attribute-content”指令强制使得属性的值为一个实体实例的引用。其他情形下实体都允许为可引用的,除非存在content一“value”指令,或者该实体类型应用了exp-type=”value“指令。8.4.7.2可引用的非实体实例元素默认的XML模式中每个EXPRESS数据类型都是可引用的。对于一个已配置的XML模式,一个非实体类型的EXPRESS数据类型为可引用的需要满足以下任意一个条件:.⋯Exp‘ype一”root”指令应用于该EXPRESS数据类型。——ExPREss数据类型是相关语境模式中的一些EXPRESS属性的数据类型,这个相关语境模式中content--”re{”。或者,EXPRESS数据类型出现在SEI。ECT数据类型的工作选择列表中,SELEcT数据类型是应用了content一”ref”的相关语境模式中的一些EXPRESS属性的数据类型。——ExPREss数据类型是相关语境模式中的一些EXPRESS属性的数据类型,这个相关语境模式中扩展属性不等于“属性一内容”(expattribute一”attributecontent”doesnotapply),并且内104 GB/T16656.28—2010/iso10303—28:2007容等于“未指明的”(content一”unspecified”)。或者,EXPRESS数据类型出现在SELECT数据类型的工作选择列表中,SEl,ECT数据类型是扩展属性不等于“属性内容”(exp—attribute一“attributecontent”doesnotapply),并且内容等于“未声明”(content--”unspecified”)的相关语境模式中的一些EXPRESS属性的数据类型。~--EXPRESS数据类型一个聚合类型的基本类型,这个聚合类型使用内容等于”ref”(content一”ref”)或者内容等于“末指明的”(content=”unspecified”)的XML格式而不是使用值的列表(见8.2.2)的形式。或者EXPRESS数据类型出现在SEI。ECT数据类型的工作选择列表中,SEI。ECT数据类型上述那种聚合类型的基类型。ExPREss数据类型出现在SELECT数据类型的工作选择列表中,SELECT数据类型图现为EXPRESS属性的数据类型,这些EXPRESS属性的扩展属性等于“属性一内容”(expattribute一”attribute—content”)。或者ExPREss数据类型是一种使用XML格式而不是值列表(见8.2.2)格式的聚合类型,并且表现为扩展属性等于“属性内容”(expattribute一”attribute—content”)的EXPRESS属性的数据类型。注:简单来说,数据类型是可引用的,除非它的exp—type--”value”或者在数据类型的所有使content一“value”(显式的或隐式的)。8.5EXPRESS实体数据类型的XML模式定义及声明在配置指令和在相关类型图的结构上(在8.5.1中详细介绍),对于每一个在相关语境模式中声明或者引入到相关语境模式中的EXPRESS的实体数据类型,其相应的XML模式的定义和声明应该依赖于EXPRESS实体的声明。对于每一个在相关语境模式中声明或者引入到相关语境模式中的EXPRESS实体数据类型,如果keep--”true”(见10.2.11),实体类型应该被包括到映射中,如果keep一”false”,映射中不应该包含实体类型并且没有与实体类型相应的XML模式的声明。对于包含在映射中的每一个实体数据类型,以下的实体数据类型要么使用继承映射(inheretancemapping)要么使用非继承映射(inheretance-freemapping)(这两种都在后面定义)。一一如果实体指定配置指令inheritance一”false”(见10.2.15),那么实体数据类型使用非继承映射。一如果相关语境模式指定配置指令inheritance--”true“,并且实体没有指定inheritance指令,那么实体数据类型使用非继承映射。一一如果指定了inheritance--”true”,并且实体数据类型有多于一个的直接超类,那么实体数据类型使用非继承映射。——否则,实体数据类型使用继承映射。注1:XML继承机制不支持复合超类和子类间的ANDOR关系。如果这些特征体现在一个类型图中,对这个类型图中的一些实体数据类型的恰当的表述不能使用XML继承机制——命名上任何实体数据类型有复合超类。因此,即使指定inheritance--”true”这些实体数据类型也采用非继承映射。对于映射中包含的每一个EXPRESS实体数据类型,导出的XML模式应该包含:对相应的XML数据类型的一个complexType定义(在8.5.4中详细介绍)。一相应的实例元素声明(在8.5.5中详细介绍)。——相应的XMI。组声明(在8.5.6中详细介绍)。——如果必须的话,还要有一个相应的单一的实体值声明(在8.5.7中详细介绍)。相应的代理元素声明(在8.5.8中详细介绍)。相应的XML唯一性约束(在8.5.10中详细介绍)。另外,如果应用配置指令generatekeys--”true”,导出的XML模式还应该包含:】05 GB/I"16656.28—2010/ISO10303-28.2007一相应的XM[,同一性约束(在8.5.9中洋细介绍)。例外:给定的实体数据类型如果包含一下几点:一实体数据类型采用非继承映射。一一实体数据类型声明为抽象类型(见6.3)。——实体数据类型没有直接子类使用继承映射。那么导出的XMI。模式应该有相应的XMI。组声明(在8.5.6中详细介绍)、相应的XMI。唯一性约束(在8.5.10中详细介绍)、可能的相应XMI,同一性约束(在8.5.9中详细介绍)和可能的单一实体值声明(在8.5.7中详细介绍),但是不包含本应声明的相应的XML数据类型、实例元素和代理元素。注2:对于继承映射,从句法上来说,必须要有对抽象实体数据类型的XMI.数据类型声明和实例元素声明。另外,列于选择(select)属性的值包含一个以上实体名的任何一个实体(entity)配置指令(见10.3.3)其导出的XML模式应该包括与一个实体数据类型相应的声明,这个实体数据类型没有在EXPRESS机制中声明,它称做组合实体数据类型。组合实体数据类型是由选择(select)属性的值命名的所有实体数据类型的子类。对于每一个组合实体数据类型,导出的XMl。模式应该包含:一对相应的XMI,数据类型的一个complexType定义(在8.5.4中详细介绍)。~相应的实体实例元素声明(在8.5.5中详细介绍)。相应的代理元素声明(在8.5.8中详细介绍)。——可能有相应的XMI。同一性约束(在85.9中详细介绍)。注3:根据定义,非继承映射适用于所有组合实体数据类型。如果配置指令tagsource应用于实体数据类型(见10.2.17),导出的XMI。模式还应该包括这个实体数据类型的动态子类元素(在8.5.11中详细介绍),或者可能包括相应的XMI.同一性约束(在8.5.9中详细介绍)。8.5.1与EXPRESS实体数据类型相关的类型图在相关语境模式中被声明或者引入的EXPRESS实体数据类型的集合形成了一个“类型图”集合。每一个类型图由一系列代表实体数据类型的节点和一系列代表SUBTYPEOF关系的有向边组成。这个类型图集合根据以下算法生成:(1)如果所有的EXPRESS实体数据类型已经被归人每个类型图,则转到第六步。(2)任选一个尚未归人类型图的实体数据类型,创建一个新的类型图,这个实体数据类型作为一个节点包含在这个新的类型图里。(3)对于给定的实体数据类型,把它的所有直接超类除去重复类型作为节点加入到类型图中.将给定的实体数据类型用代表SUBTYPEOF关系的有向边连接到它的每一个超类。(4)对于给定的实体数据类型,把它的所有直接子类除去重复类型作为节点加入到类型图中,将给定的实体数据类型的每一个子类用代表SUBTYPEOF关系的有向边连接到该实体数据类型。(5)重复第三三步和第四步,把每一个新的实体数据类型加入到类型图(通过第三步或第四步),直到操作完类型图中所有的实体数据类型,回到第一步。(6)对于每一个按8.5的要求创建的组合实体数据类型,确定它的超类属于那个类型图,并且在代表组合实体数据类型的类型图中添加节点,用代表SUBTYPEOF关系的有向边连接到它的每一个直接超类。(7)对于每一个应用了配置指令tagvalues的实体数据类型,在出现在tag—values指令值中的每一个XMI,名称的类型图中添加节点,并且把每一个这样的节点作为实体数据类型的子类连接到实体数据类型。注1:第六步保证了表示具体实例的多重实体数据类型实例的子类在类型图中能够恰当表示,该多重实体数据类型是由ANDOR相关联的。 GB/T16656.28—2010/ISO10303—28:2007在类型图中,代表一个没有超类的实体数据类型的节点叫做根节点。如果一个节点代表的实体数据类型在相关语境模式中没有子类,且没有综合子类,那么这个节点叫做叶节点。如果一个类型图有唯一的根节点,并且对于每一个叶节点,从叶节点走到根节点沿着有向边有唯一的一条路径,那么这个类型图被称为树结构。一个类型图与它其中表示的每一个EXPRESS实体数据类型有关联。使用上面定义的构造算法,相关语境模式中的每一个EXPRESS实体数据类型都与一个确定的类型图相关联。注2:见75l。8.5.2复合实体实例每一个EXPRESS实体实例实例化了一个或多个实体数据类型,就像8.5.1中所描述的,所有这些实体数据类型都能对应到同一个类型图中的节点。复合实体实例是由一个以上的EXPRESS实体声明描述的(复合实体实例的定义和详细介绍见7.5.2)。对于某些在序列化单元中描述的非特殊的实体实例(定义于7.5.2),导出的XMI。模式可能包含组合实体数据类型(见8.5.4.5)相应的声明,并且这些实例应该描述为组合实体数据类型的实例(9.3中详细介绍)。其他任何非特殊的实例实体可以用exp:complexEntity实例元素(见8.5.3.5)来描述,这在9.3中详细介绍。8.5.3EXPRESS实体数据类型的基本XML数据类型及元素导出的XML模式应该定义或者以引用形式包含一个代表EXPRESSGENERIc—ENTITY数据类型的XML数据类型,GENERIC—ENTITY数据类型是相关语境模式中所有实体数据类型的超类。导出的XML模式还应该声明或通过引用包含一个相应的XMI。元素。导出的XMl。模式可能还要声明一个根实体实例元素,这个根实体实例元素描述相关语境模式中所有独立的可实例化的EXPRESS实体数据类型的超类。这些定义和声明在下面的子目录下讲述。8.5.3.1实体数据类型的基本XML数据类型——exp:Entityexp:Entity的定义见7.5.3.1。8.5.3.2代理元素的基本XML数据类型——exp:edokey外部实例元素(externalinstanceelement)是一个包含在外部资源中的实体实例元素。代理元素(proxyelement)是一个出现在序列化单元中并且包含对外部实例元素的全局唯一的、永久性标识的元素,因此,信息应该能够进入外部实例。导出的XMI。模式包括与外部实体实例元素(见8.5.8)相对应的代理元素的声明。代理元素的XMI。数据类型是对名字为exp:edokey的复合类型的扩展。exp:edokey数据类型的目的是为代理元素提供基本的数据结构。代理元素的数据类型源自于exp:edokey,并且依赖于外部实体实例的数据结构。为了方便,代理元素声明属于一个一般的替代组,这个替代组基于一个同样叫做exp:edokey的抽象元素。exp:edokey数据类型和元素定义在基本的XMI。模式(见附录c)和7.5.3.2。XMI,属性的翻译见7.5.3.2。关键属性只在为个别的实体数据类型定义的exp:edokey的子类中出现。8.5.3.3通用实体数据类型和实例元素通用实体数据类型图示相关语境模式中所有EXPRESS实体数据类型的超类。它存在一个对应的XML元素,旨在成为包含所有实体实例元素的替代组的根。如果没有应用unoEntity配置指令,通用实体数据类型是exp:Entity类型,并且导出的XML模式中不需要另外定义。通用实体数据类型元素是exp:Entity,这在基本XMI.模式(见附录c)中声明如下:(XS:co“plexContent)(XS:extensionbase=”exp:Entity”>addedattributes(/xs:extension>(/xs:co“plexcontent)(/xs:complexType)(XS:elementname=”generic—entity”typeabstract=’’true’’/、其中:——generic-entity:是由unoEntity配置指令指定的名字。——addedattributes:是由unoEntity配置指令添加的属性,如果有属性的话。(见10.3.9)。一Tns:generic-emtity:是数据类型名字的完全受限格式。8.5.3.4根实体数据类型和实例元素根实体数据类型是相关语境模式中所有独立的可实例化的EXPRESS实体数据类型的超类。注:在EXPRESS中,独立的可实例化的实体数据类型就是那些经过USE而不是经过REFERENCE日1入的。如果没有应用rootEntity配置指令(见10.3.10),根实体数据类型应该与上面8.5.3.3介绍的通用实体数据类型相同,且根实体实例元素也应该与一般实体实例元素相同。如果应用了rootEntity配置指令(见10.3.10),则导出的XMI。模式应该包含一个根实体数据类型的定义,和一个相应的根实体实例元素的声明。这个声明的格式如下:其中:——rootentity是由rootEntity配置指令指定的名字。——gene“c—entity是如上面8.5.3.3中介绍的那样通用实体数据类型的完全合格名。——addedattributes是由rootEntity配置指令添加的属性,如果有属性的话。(见10.3.10)。——Tns:rootentity是数据类型名字的完全受限格式。8.5.3.5复合实体实例的实例元素——exp:eomplexEntityexp:complexEntity实例元素是用来描述序列化单元中非特殊的复合实体实例(见8.5.2)。exp:complexEntity实例元素在基本XML模式和7.5.3.3中声明。exp:complexEntity元素应该包括在复合实体实例中实例化了的每一个实体数据类型的单一实体值元素(在8.5.7中详细介绍)。实体的(entities)XML属性的值应该是一个与单一实体值相对应的实体数据类型的EXPRESS标识的列表(见8.5.7)。10R GB/T16656.28—2010/ISO10303-28:200785.3.6简单实体值的基本XML数据类型与元素——exp:Single-Entityexp:Single—Entity元素是替代组的基本XMI,元素,替代组描述序列化单元中的单一实体值(见8.5.7)。exp:Single—Entity数据类型是描述单一实体值元素的基本XMI,数据类型,在基本XMl。模式和7.5.3.4中定义。8.5.4实体数据类型的XML数据类型定义对EXPRESS实体数据类型的complexType定义依赖于所有XMI。complexType定义和element声明,并且出现在这些内容之外。就是说,complexType属于命名空间机制。eomplexType的结构依赖于配置指令、相关联的类型图的结构(见8.5.1)和重声明的属性,如下:如果实体数据类型是综合的,complexType的定义详见8.5.4.5。如果实体数据类型使用非继承映射,complexType定义详见8.5.4.1。如果实体数据类型使用继承映射,但是它的直接子类使用非继承性映射,complexType的定义详见8.5.4.1。如果实体数据类型和它的子类都使用继承性映射,且EXPRESS实体声明不包含重声明的属性,complexType的定义详见8.5.4.2。如果实体数据类型和它的子类都使用继承性映射,且EXPRESS实体声明即包含重声明的属性,complexType的定义见8.5.4.3。例外:如果导出的XMI。模式符合第一类(见4.2),应该忽略重声明的属性,complexType的定义详见8.5.4.2。如果实体数据类型和它的子类都使用继承性映射,且EXPRESS实体声明不仅包含重声明的属性也包含附加的属性,complexType的定义见8.5.4.4。例外:——如果导出的XML模式符合第一类(见4.2),应该忽略重声明的属性,complexType的定义详见8.5.4.2。——如果没有任何一个附加的属性实际映射到导出的XMI。模式(见8.6.2),——complexType的定义详见8.5.4.3。如果没有任何一个重声明的属性实际映射到导出的XMI,模式,complexType的定义详见8.5.4.2。注:当使用继承映射,但是类型图(见851)在某处包含综合类型,或者实体数据类型有多重继承时,某些子表使用继承映射而其余的不使用。t面的规则描述了三个情况:实体数据类型只使用继承映射,实体数据类型只使用非继承映射,或者实体数据类型两者都使用。8.5.4.1无继承数据类型定义对于所有使用无继承映射的EXPRESS实体数据类型,与EXPRESS实体数据类型相应的COIllplexType应该是对genericentity数据类型的扩展。该扩展应该包括对应于实体数据类型的EXPRESS属性的存取访问元素和存取访问属性的声明,详述如下:注1:存取访问元素声明于一个(all>标签组内,使得在任何实例文档中EXPRESS属性的独立顺序及扩展能力最大化即。complexType声明应该采用如下格式:(XS:complexTypename=”identifier”abstract=”abstract”)(XS:complexContent>(XS:all>(Accesserelementdeclarations)(/xs:a11),(Accesserattributedeclarations)‘/XS:extension,</xs:complexcontent>109 GB/T16656.28—2010/iso10303-28:2007</ms:complexType)其中:——identifier是源自8.1.2中提到的实体数据类型的EXPRESS标识,或者是由命名(name)配置指令产生的替代的名字。——abstract应为”true”,如果实体数据类型的ExPREsS声明为”abstract”(见6.3)。否则应为”false“或者省略掉。——genericentity。如果实体数据类型使用配置指令root一”true”(见10,3.3),generic—entity应该是完全受限的根实体数据类型的名字(在8.5.3.4中详细介绍);否则genericentity应该是完全受限的通用实体数据类型的名字(在8.5.3.3中详细介绍)。——Accessorelementdeclaration和Accessorattributedeclaration描述如下:extension组应该包括每一个出现在实体类型声明中的EXPRESS属性的存取访问声明(详见8.6)。如果有存取访问元素的话,extension组也包含存取访问元素的声明和一个部分。在与实体数据类型相关联的类型图中(见8.5.1),与实体数据类型对应的节点和一个或多个根节点之间有一条或多条路径。对于每一个出现在任意一条这些路径上的节点,extension组还应该包含对每个EXPRESS属性的存取访问的声明,这些EXPRESS属性出现在与节点相对应的实体数据类型的实体类型声明中。不管节点在几条路径中出现,这些与该节点相对应的属性只能映射一次。注2;上面的规定意味着每一个使用EXPRESS继承概念的“inherited”属性都在complexType内容模式中有一个相应的存取访问声明。注3:根据86.2,有些EXPRESS实体数据类型的属性不能映射到存取访问。如果一个EXPRESS属性在到每一个根节点的每一条路径中都有声明,存取访问的声明应该对应于重声明的属性,而不是原先声明的。如果EXPRESS属性在一条到一个实体数据类型的特定路径中声明了多次,这个实体数据类型的声明包含原来的EXPRESS属性,那么只有第一次在这条路径上重声明的属性可用。如果一个EXPRESS属性在每一条到实体数据类型的路径上的重定义不相等,这个实体数据类型的声明包含原来的EXPRESS属性,那么声明的使用由实际情况决定。最后一种情况中,前置处理器或者结合多个重定义的限制对属性的类型定义进行综合,或者使用最初的属性定义。示例:EXPRESS表达:ENTITYnamed_unit;dimensions:dimensionalexponents;unittype:unitenure}ENDENTITY:ENTITYsi—unitSUBTYPEOF(named_unit);prefix:OPTIONAL5Lprefix;name:si—unit—name;DERIVESELF\named_unitdimensions:dimensional—exponentsdimensions—for_si—unit(name);ENDENTITY;用XM[.模式(使用指令exp_attrlhute车”attribute-tag”):(/xs:complexContent)(/xs:complexType>(xs:complexTypenaIBe=”S1unit”)(XS:complexContent>(xs:extensionbase=”exp:Entity”)(/xs:all></xs:extension></xs:complexContent>(/xs:complexType>8.5.4.2无重声明的继承结构当EXPRESS实体数据类型使用继承映射,且EXPRESS实体声明不包含属性的重声明,相应的XML数据类型应该是complexType,下面将详细讲述complexType。complexType声明的格式如下:(Accessorelementdeclarations)</xs:sequence)(Accessorattributedeclarations)</xs:extension>(/xs:complexcontent)</xs:complexType>其中:——identifier是源自8.1.2中提到的实体数据类型的EXPRESS标识,或者是由命名(name)配置指令产生的替代的名字。——abstract应为”true”,如果实体数据类型的EXPRESS声明为”abstract”(见6.3)。否则应为”false”。——supertype应该是与超类相应的XML数据类型的合格名(详见8.1.3)。如果实体数据类型是相关联的类型图的根(见8.5.1),且实体数据类型使用配置指令root--”true”(见10.3.3),SH—pertype应该是完全受限的根实体数据类型的名字(在8.5.3.4中详细介绍);否则supertype应该是完全受限的通用实体数据类型的名字(在8.5.3.3中详细介绍)。——Accessorelementdeclaration和Accessorattributedeclaration:extension应该如8.6中所述,包含对应于每一个EXPRESS属性的存取访问元素或存取访问属性的声明,这些EXPRESS111 GB/T16656.28—201O/ISO10303-28:2007属性在实体数据类型的EXPRESS实体声明中声明。注1:这产生了能反映EXPRESS数据类型层次的XMI,类型层次(当这个层次仅包含单继承时)示例1:EXPRESS表达:ENTITYproperty_valuevaluename:STRING;ENDENTITY:ENTITYstring_valueSUBTYPEOF(propertyvalue);valuespecification:STRING;.END—ENTlw;XML模式表达:(xs:elementname=”Propertyvalue”type=”TnsPropertyvalue”block。”extensionrestriction”substitutionGroup=”expEntity”nillable=”true”/、(xs:extensionbase=”exp:Entity”>(xs:sequence></xs:extension><7x8:complexContent>(/xs:complexType)(xs:elementname=”Stringvalue”type=”Tns:String_value”block=’’extensionrestriction”substitutionGroup=”Tns:Propertyvalue”nillable=”true”)(7xs:element)《xs:extensionbase=”Tns:Property_value”>(MS:sequence)(xs:elementrme=“Value—specification”type=”xs:normalizedString”/>(/xs:sequence)(/xs:extension>(/xs:complexContent)(/xs:complexType>示例2:EXPRESS表达:ENTITYA:A—ATTR:STRING;ENDENTITY:112ENTITYBSUBTYPEOF(A)B-ATTR:INTEGER;ENDENTITY: GB/T16656.28--2010/1SO10303—28:2007ENfll’YCSUB"ETPEOF(B)2CAT2R:BOOLEAN;END_ENTITY;XML模式表达:(sequence>(elementnafae=”c_attr“type=”xs:boolean“/)(/sequence>(/extension>(/complexContent)(/complexType)根据XML模式,所得到的结构如下:(sequence>(!--theCmodel一)(sequence>(!--theBmodel一>(sequence></sequence>(/sequence>(sequence>(elementnalne2”C_attr”type=”xsboolean’’/)(/sequence>注2:每一层扩展在内部结构模式中产生一个额外的(sequence>if;。根据XML模式第一部分:结构,扩展的模式是~个包含两部分的序列,第一是基本部分的内容,第二是扩展部分的内容。在上面的示例中,最外层的序列是有效的包含了两个部分的C模型,第一部分为B的有效模型,第二部分为C扩展中的部分。并且B的有效模型为一个包含两部分的顺序结构,分别为有效的模型A和扩展B。8.5.4.3只有重声明的继承结构当EXPRESS实体数据类型使用继承映射,并且EXPRESS实体声明包含一个或多个属性声明,但是没有实体数据类型的额外属性能够映射到导出的XMI。模式(见8.6.2),对应的XMI。数据类型应该是complexType,complexType是对与EXPRESS实体数据类型的(唯一的)超类相对应的XMI。数据类型的限制。例外:当子类中的EXPRESS属性重命名超类中的属性时,相应的XML数据类型在8.5.4.4中规定。restriction应该包含XML数据类型的所有存取访问元素和存取访问属性的声明,包含与已经重定义的EXPRESS属性相对应的所有存取访问元素和存取访问属性的重声明。complexType定义应采用如下格式:(xs:restrictionbase=”supertype”>(XS:sequence>(unchangedandredeclaredAocessorelements)113 GB/T16656.28—2010/ISO10303-28:2007(/xs:sequence)(redeclaredAccessorattributes)(/xs:restriction)(/xs:complexContent)(/xs:complexType)其中:——identlfler是源自8.I.2中提到的实体数据类型的EXPRESS标识,或者是由命名(name)配置指令产生的替代的名字,且在字尾加上一temp。⋯一abstract应为“true”,如果实体数据类型的EXPRESS声明为“abstract”(见6.3)。否则应为‘‘false”。——supe“ype应该是与超类相应的XMI。数据类型的合格名(详见8.1.3)。——unchangedandredeclaredAccessorelements):与所有的超类属性(包括超类继承的属性)相对应的访问元素声明的集合,其中的超类最终被映射为访问元素。这些访问元素将以它们在XMI。数据类型声明中出现的顺序进行声明,并且sequence部分的结构与其超类相匹配。对于那些在实体数据类型中没有进行重声明的属性,其声明将与相关的XML数据类型中访问元素的声明一致。对于那些重声明过的属性,其访问元素的声明见8.6,其重声明当作了EXPRESS属性的声明。注1:如XML模式Parti所述,每个扩展都产生了一个包含两个部分的顺序型XML数据结构,当此扩展用于表示一个EXPRESS超类时(见85.4.2及8544),嵌套部分的第一层为该超类的内容模型,第二层为适合于该超类的访问属性的内容。此限制条件的内容模型必须与该结构匹配,其嵌套的层数必须与该实体类型到其类型结构图中根类型的层数一致。——(redeclaredAccessorattributes):与所有的EXPRESS超类属性(包括超类继承的属性)相对应的访问属性声明的集合,其中的超类最终被映射为访问属性且在实体声明中进行了重声明。对于每个重声明的属性,其访问属性的声明将在8.6定义,其重声明当作了EXPRESS属性的声明。注2:如XMI。模式第一部分所述,未改变的XML属性不需要重声明。示例:EXPRESS表达:ENTITYproperty_valuevaluename:STRING;colour:STRING;END_ENTITY;ENTITYstring_valueSUBTYREOF(property_value);value_specification:STRING;size:STRING;END_ENTITY;TYPEidentifier=STRING:E}ⅢTYPE:ENTITYidentifier_valueSUBTYPEOF(stringvalue);SELF\string—valuevaluespecification:identifierENDENTITY2 GB/T16656.28—201O/ISO10303-28.2007XMI。模式表达:‘/xs:extension}(/xs:complexContent)(/xs:complexType)</xs:extension}</xs:complexContent></xs:complexType}(xs:complexTypename=”Identifier—value”)《xs:complexContent>(xs:sequence>(xs:sequence}(xs:elementname=”Valuename”type=”xs:normalizedString”/)(xs:eleaentnanle=”Colour”type=”xs:normalizedString"//>(/xs:sequence)‘x3:sequence>(xs:elementDahle=”Valuespecification”type=”Tns:Identifier”/)(xs:elementname=”Size”type=”xs:normalizedString”/>(/xs:sequence></xs:sequence>(/xs;restriction}(/xs:complexContent)</xs:complexType>8.5.4.4包含了附加属性和重声明属性的继承结构继承映射被用于EXPRESS实体数据类型,并且EXPRESS实体声明包含了附加属性和一个或多个的属性重声明,对应的XMI。数据类型应符合本条规定。注1:在EXPRESS中,重声明和新属性可以在同一个子类中定义,但是在XML模式中一个complexType只能由一个restriction或者extension从其他的complexType中导出。所以,导出对应的XML模式数据结构应该有两11j GB/T16656.28—2010/Iso10303-28:2007步:第一步,从restriction(限制)中导出中间数据类型,第二步,从extension(扩展)中导出实际的类型源。导出的XMI。模式应该包含一个中间complexType定义,该定义是对应于实体数据类型的超类(唯一的)的XMI,数据类型的一个restriction(限制)。这个restriction应该包含所有的对应于超类的XMI.数据类型的Accessor元素和Accessor属性声明,以及Accessor元素和Accessor属性(重新)声明,其中Accessor元素和Accessor属性对应于在实体数据类型中重声明的EXPRESS属性。例外:如果在实体数据类型中EXPRESS属性的重声明RENAMES存在于超类中,那么restriction就不应该包含超类属性声明。中间的complexType定义应该为以下形式:(xs:sequence>(unchangedandredeclaredelements)(/xs:sequence)(redeclaredattributes)(/xs:restriction)(/xs:complexContent)(/xs:complexType)其中:——identifier或者是从实体数据类型的EXPRESS标识符得出的,见8.1.2的规定,或者如果定义了name配置指令,就是从name指令得出的替换名,后面再加上字尾一temp。--supertype是对应于超类的XML数据类型的合格名,见8.1.3的规定。一一(unchangedandredeclaredediements)部分是Accesser元素声明的集合,这些声明对应于映射成Accesser元素的所有的超类属性(包含超类继承的所有属性)。声明Aecessor元素的顺序,应该和他们在对应于超类的XMI。数据类型声明中出现的顺序相同,而且子句sequence的结构应该符合超类中的定义。对于那些实体数据类型中没有重声明的属性,这些声明应该和相应的Accessor元素声明严格一致,这里所说的Accesser元素位于与超类对应的XMI,数据类型中。对每个重声明的属性,Aceessor元素声明应该符合8.6的规定,但是使用EXPRESS属性声明的形式进行重声明。例外:此处所述不包含那种在重声明中重命名的EXPRESS属性。注2:按照XML模式Part1的规定,每个extension(扩展)给出了一个XML数据结构,是一条包含了两条sequece子句的sequece子句。所以,当用extension描述一个EXPRESS超类(见854.2和以下内容),这些嵌套子旬的第一个子句就是超类的内容模型,第二个子句包含了超类特有的Aecessor元素。限制的内容模型必须符合以下结构,在实体数据类型和类型图的根之间,嵌套和超类中有相同的层数。--(redeclaredattributes)部分是与某些超类属性(包含超类继承的所有属性)对应的Accesser元素声明的集合,这些超类属性被映射成了Accesser属性,而且在这个实体数据类型的实体声明中被重声明了。对每个重声明的属性,Accessor元素声明应该符合8.6的规定,但是使用EXPRESS属性声明的形式进行重声明。例外:此处所述不包含那种在重声明中重命名的ExPRESS属性。注3:按照XMI.模式Part1的规定,没有发生改变的XML属性不用重新说明。对应于EXPRESS实体数据类型的complexfype应该是中间XML数据类型的一个扩展。其中complexType定义应该为以下形式:]16 GB/T16656.28—2010/ISO10303-28.2007(XS:complexTypename=”identifier”abstract=”abstract”)(MS:c04plexContent)(XS:sequence)(renamedelements)(subtypeelements)(/xs:sequence)(renamedattributes)(subtypeattributes)(/XS:extension)(/xs:complexcontent)</xs:complexType>其中:——identⅢer或者是从实体数据类型的EXPRESS标识符得出的,见8.1.2的规定,或者如果定义了name配置指令,就是从name指令得出的替换名。——如果实体数据类型被声明为抽象类型,abstract值为“ture”(见6.3),否则为“false”。——对映射成一个Accessor元素和RENAMES为一个超类的属性的实体声明的每个属性,(renamedelements)部分都包含一个Accessor元素声明,对每个重声明的属性,Aecessor元素声明应该符合8.6的规定,使用EXPRESS属性声明的形式进行重声明。——如果一个(新的)属性,在实体数据类型的EXPRESS实体中被声明,而且像8.6所规定的那样,映射到了一个Aecessor元素,那么针对这个属性,(subtypeelements)部分都包含r一个Aceessor元素声明。这里的Aceessor元素声明应该都符合8.6的规定。——对映射成一个Accessor属性和RENAMES为一个超类的属性的实体声明的每个属性,(renamedattributes)部分都包含一个Accessor属性声明,对每个重声明的属性,Accesser属性声明应该符合8.6的规定,使用EXPRESS属性声明的形式进行重声明。一一如果一个(新的)属性,在实体数据类型的EXPRESS实体中被声明,而且像86所规定的那样,映射到了一个Accessor属性,那么针对这个属性,(subtypeelements)部分都包含了一个Accessor属性声明。这里的Accessor属性声明应该都符合8.6的规定。注4:ME规定得出了一个能够反应EXPRESS数据类型体系(当该体系中只有一个继承时)的XML类型体系。注5:导出XML模式并不保持RENAMES关系。在XMI。模式中,超类属性默认被删除,处理重声明时,把其当作~条新的属性来处理。示例:EXPRESS表达:KNTITYnamedunit;dimensions:dimensionalexponents;unit—type:unit—enum;ENnE胛TTYENTITYsiunitSUBTYPEoF(named_unit);prefix:OPTIONALsi—prefix;name:s1一unit—naJNe;SELF\namedunitdimensionsRENAMEDdimensions—for_s1一unltdimensionalexponents; GB/T16656.28—2010/ISO10303-28:2007ENDENTITY;XM[,模式表达:(xs:complexTypename=”Named_unit”)(xs:complexContent)(xs:extensionbase=”exp:Entity”)(xs:sequence>(xselementnaIne=”Dimensions”minOccurs=”0”type=”Tns:Dimensional—exponents”/)</xs:sequence)(/xs:extension)</xs:complexContent)(/xs:complexType>(xs:sequence>(xs:elementname=”Unit—type”type。”Tns:Unit—enum”/>(/Ks:sequence>(/xs:restriction)(/xs:complexContent></xs:complexType>·(/xs:extension>(/xs:complexContent>t/xs:complexType>在一个XML文档中:(Unit—type)lengthunit(/Unit—type>milll(/Prefix>8.5.4.5组合实体数据类型定义如果一个实体配置指令中(见10.3.3),select属性值包含多于一个的实体名,导出XML模式应该包含与一个组合实体数据类型对应的声明。组合实体数据类型可以被当作某类实体数据类型来处理,这种实体数据类型是所有的在select属性值中命名的实体数据类型的子类。每个组合实体数据类型,对应的complexType应该是exp:Entity数据类型的一个扩展,符合以下形式:Accessorattributedeclarations(/XS:extension)(/ms:cooplexcontent></xs:complexType>其中:⋯syntheticname:如果entity配置指令中给出了name属性值,则为该值;否则为在select属性值中出现的实体数据类型标识符的罗列,每个都按照8.1.2的规定去映射,和下一个标识符之间由HYPHEN—MINUS分隔。实体数据类型的标识符出现在构造名中的顺序应该和它们在select属性值中出现的顺序相同。——genericentity:如果配置指令root一”true”适用于组合实体数据类型(见10.3.3),genericentity应该是根实体数据类型的完全合格名,见8.5.3.4的相关规定;否则,generic—entity应该是组合实体数据类型的完全合格名,见8.5.3.3的相关规定。一一Accessorelementdeclarations和Accessorattributedeclarations符合以下规定:组合实体数据类型相关的类型图中(见8.5.2),在对应组合实体数据类型的节点和一个或多个根节点之间,会有_二条或多条路径。在这些任意一条路径上出现的每个节点,(sequence>组应该包含一个EXPRESS属性的元素声明,如果这些EXPRESS属性出现在与那个节点对应的实体数据类型的声明中,如8.6中的规定。无论那个在多少条路径上出现,对应于一个已给节点的属性集合只能够映射一次。如果一个实体数据类型的声明包含了源EXPRESS属性,在给出的这个数据类型的路径上,一个EXPRESS属性被重声明了不止一次,那么只有该路径上第一个重声明有效。如果在上述实体数据类型的任意路径上,一个EXPRESS属性都没有被重声明,那么就会使用源声明。注:根据定义,一个组合实体数据类型有多个直接子类。所以,其相关的类型图不是一个树结构,组合实体数据类型的模式是无继承(见8.5.3.5)。在组合实体数据类型中,没有EXPRESS声明,因此电就没有该数据类型“合适”的属性~所有属性都是“被继承的”。上述条款意味着。在complexType的内容模型中,每个由组合实体数据类型特征化的实体实例的EXPRESS属性都将有一个对应的存取访问声明。相应的EXPRESS属性元素用于表达所有包含该子图的未特征化的实体实例。8.5.5对应于实体数据类型的实例元素一个EXPRESS实体实例可能会在交换文档中表现出几种形式(见9.3)。应该用一个单独的ele—ment声明来声明XMI。元素类型,所有和EXPRESS实体数据类型对应的实体实例元素的形式都会用到这些XML元素类型。注:如85以上所述,一·个使用自由继承映射的抽象实体数据类型有可能投有实例元素。实例元素声明应该和所有XMLcomplexType定义与element声明无关,并位于这些内容之外。也就是说,实例元素类型应该隶属于schema命名空间。实体实例元素的element声明应该是以下形式:(/xs:group>其中:——Identiflergroup:Identifier是和实体数据类型对应的实例元素的XML名称的本地部分,见8.5.5的相关规定,“group”是一个常量字符字尾。——Tns:identifier是和实体数据类型对应的实例元素的合格名,见8.5.5的相关规定。“proxy”是一个常量字符字尾。一~Tns:subtypelgroup⋯Tns:subtypen—group是和实体数据类型的子类对应的choice组的合格名,见以上的规定。示例(是7.5.6.1中的实例的扩展)如果siunit和named—unit使用了继承映射,声明named—unitgroup如下:如果不允许外部调用,那么代理元素调用可以忽略。8.5.6.2对应于实体数据类型的complexEntity组对于相关语境模式中的每个实体数据类型,XMI,模式应该包含一个XML声明,用于声明和实体数据类型对应的eomplexEntity组。complexEntity组应该有一个choice组,其中包含了8.5.6.1所规121 GB/T16656.28—2010/iso10303-28:2007定的子类组,另外,如果实体数据类型的一些实例没有特征化,那么complexEntity组应该包含一个和exp:complexEntity元素相关的元素声明。complexEntity组的声明应该符合7.5.6.2中规定的形式,在其中:——Identifier—complexEntity-group:Identifier是和实体数据类型对应的实例元素的XMI。名称的本地部分,见8.5.5的相关规定,“一complexEntity—group”是一个常量字符字尾。——Tns:identifier和8.5.6.1中的定义相同。--complexEntityusage:如果实体数据类型的任意实例没有特征化,choice组应该包含(XS:ele—mentref一”exp:complexEntity”/>,否则,complexEntity元素可以忽略。见75.6.2中的实例。8.5.7对应于实体数据类型的单个实体值类型对那些是其他EXPRESS实体数据类型的子类的EXPRESS实体数据类型,如果它们出现在序列化单元中的没有特征化的实体实例的类型图中(见8.5.2),导出EXPRESSschema应该包含一个数据类型定义和一个元素声明,用以对应单独实体值。例外:——如果某个实体数据类型是它的关联类型图的根,那么本条规定的XMI。声明不应该出现在这种实体数据类型中(见8.5.1)。一如果某个实体数据类型对应与序列化单元,而且其所有有效实例在实例化时,都是被相关语境模式中的实体数据类型或者复合实体数据类型所特征化,那么本条规定的XML声明不应该出现在这种实体数据类型中(见8.5)。一一如果在类型图中,某个实体数据类型没有被特征化为和其他的实体数据类型有ANDOR关系,那么本条所规定的XML声明允许出现,但不是必须的。确定这种情况时,模式产生器会考虑到相关语境模式的所有声明,包括实体声明,超类子句,超类限制,以及其他的本地和全局约束。注:最后一个判断需要一个复杂的算法,可能用到其他的知识。我们并不要求模式产生器提供这样的算法和这些其他知识。当这个判断有疑问时,就会产生本条中规定的声明。XML数据类型定义应该有以下形式:(XS:complexTypenalne=”identifier-value”>(KS:complexContent>(xs!alI>(Accessorelementdeclarations)</xs:a11)(Accessorattributedeclarations)(/xs:extension)</xs:complexconten七>(/xs:complexType)而且,XMI,元素声明应该有以下形式:(xs:elementname一”identifier_value”type一”identifie>value”substitutionGroup=”exp:SingleEntity”/)其中:——如果name配置指令适用于实体数据类型,identifier就是name配置指令的值,否则,XML名会从实体数据类型的EXPRESS标识导出,8.1.2给出了相关的规定。(Accessorelementdeclarations)和(Accessorattributedeclarations):对于出现在实体声明中122 GB/T16656.28—2010Hso10303—28:2007的任意EXPRESS属性,extension应该包含一个Accessor声明,见8.6的相关规定。如果存在Accessor元素声明,应该包含在《a11)子句中。例外:在实体声明中重声明了的EXPRESS属性,不应有Accessor(存取访问)与之相对应。见7.5.7的实例。8.5.8对应于实体数据类型的代理元素代理元素的XML数据元素应该是exp:edokey数据类型的一个扩展(见8.5.3.2)。由一个包含Accessor元素的(XS:fieldxpath=”@id”/)(/xs:key>(xs:keyname=”schemaentity-proxyKey”>(xs:selectorxpath=”instance-name-proxy”/>(/xs:key>其中:——schema是EXPRESSschema的标识,按照8.1.2中的规定映射。——entity是EXPRESS实体数据类型的标识,按照8.1.2中的规定映射。in“ance—name是和实体数据类型对应的实例元素的合格名,见8.5.5的相关规定。注I:这个key部分需要那些发生在序列化单元的中间内容的所有相应的取值元素,用来包含一个有唯一值的ld属性。注2:8592中定义的keyref部分需要一个引用实例元素,通过引用schemaentity-key来引用相应的取值元素,还需要一个代理引用来引用schema—entity_proxykey。由于被引用的取值元素和代理元素只有出现在序列化单元元素的直接内容中时(见9.3),XS:selectorxpath表达式才引用实体数据类型的实例元素,这些实例元素是序列化单元元素的直接子元素。另外,如果从那些配置指令exp—attribute一”attribute-tag”或者exp—attribute一“attributecontent”适用的EXPRESS属性中,有任何可能的实体数据类型引用,那么导出XML模式应包含一个附加的key定义,用于所有的值实例元素和代理实例元素的说明,这些元素可能会用于描述一个EXPRESS实体数据类型的有效值。XS:key部分的形式如下:(xs:keymaine=”schema—entity-allKey”>其中:一schema,entity和instancename以上都做出了定义。如果EXPRESS实体数据类型被声明为抽象类型(见6.3),instance—name在表中就不应该出现。一一一subtypel,⋯,suhtypeN是和实体数据类型的可实例化的子类对应的实例元素的合格名。表中包含了类型图中出现的所有的子类。如果实体数据类型是类型图的叶节点,则该项为空。注3:subtypesKey和pr()xysubtyPesKey组件仅当EXPRESS实体类型有子类且该实体类型为EXPRESS中一个或多个属性标签的类型时,才会被定义。allKey组件仅当EXPRESS实体类型为EXPRESS中一个或多个内容标签的类型时,才会被定义,此时EXPRESS实体类型可以没有子类。注4:当EXPRESS实体类型本身声明为抽象类型时,这些key组件仍然是必须的。必须有表示实体数据类型合格124 GB/T16656.28—201O/ISO10303-28:2007名的通过值和通过代理得到的实例元素,且在序列化单元中的元素单元的直接内容中必须具有一个唯一值的ld属性。注5:8.6.3和8.6.4所定义的keyref组件,通过引用此处的key组件,需要访问元素及访问属性来实现对通过值或通过代理对元素的调用。由于仅仅在序列化单元中的元素单元的直接内容中出现的通过值和通过代理得到的元素才会被引用,因此表达式xs:selectorxpath引用了那些序列化单元中的元素单元的直接子类元素。示例:EXPRESS表达:SCHEMApersonandorganization;ENTITYOrganlzatlon;一allattributesomittedKNDENTITY;END_SCHEMA;用XML模式(在序列化单元元素声明之中):(XS:keyname=”Person_and—organization_一Organization-key”>(xs:selectorxpath=”Tns:Organization“/)(XS:fieldxpath=”@proxy”/)(/xs:keyref)其中:——schema:为8.1.2所定义的EXPRESS模式中标志符;⋯entity:为8.1.2所定义的EXPRESS实体数据类型中标志符;——lnstance—name:为8.5.5所定义的与实体数据类型对应的实例元素的合格名;——Tns:为导出的XMI。模式目标命名空间前缀。XMI,属性re{er为上述规定的XS:key组件的完全合格名。注:xs:keyref的XS:selectorxpath表达式,可以引用在元素的序列化单元内容中出现的任意的通过引用产生实体数据类型元素。示例(接着上面85.9.1中的例子);EXPRESS表达:SCHEMApersonand_organization;ENTITYOrganization:--allattributesomittedEND_ENTITY;125 GB/T16656.28—2010/ISO10303—28:2007END—s(丑EHA;用xML模式(在序列化单元元素声明之中):(XS:keyrefname=”Person_and_organizationOrganizatiorhkeyref”refer=”Tns:Person_and_organization一0rganization-key”)(XS:sequence}《xs:elementname=”Approvaldata”)129 GB/T16656.28—2010/too10303—28:2007(XS:complexType)tXS:sequence>(xs:elementref=”Tns:Approval”/)~/xs:sequence)</xs:complexType>(/xs:element、(!一thereisnodeclarationforApproval—item一>(/xs:sequence>《/xs:extension></xs:complexContent>(/xs:complexType>8.6.3Accessor属性对于每个映射到存取访问【Accessor)属性的EXPRESS属性(见8.6之前的部分),实体数据类型对应的complexType应该包含一个Accessor属性的对应的属性声明。Accessor属性的名字在8.6.1中给出了定义,如果EXPRESS属性是强制的,那么Accessor属性的use属性应该在属性声明中赋予值”required”。如果EXPRESS属性被声明为OPTIONAI.,或者和8.6.2中规定的那样,可以被当作OPTIONAI,来处理,那么Accessor属性的use属性应该在属性声明中赋予值”optional”。注1:一个没有设置的EXPRESS属性会由Accessor属性的缺失在实例化数据中设置(见931)。注2:当一个EXPRESSDERIVEd属性映射到XMI,模式时(见862.3),处理时可雌认为其已被声明为OPTIONAL。注3:如果EXPRESS属性在它的实体数据类型的子类中被重声明为DERIVEd或者INVERSE,认为EXPRESS属性为”OPTIONAI,”.引用8622和8624的规定。Accessor属性的数据类型的声明规则如下:如果EXPRESS属性中有map配置指令(见10.2.13),那么Aecessor属性的数据类型应该被声明为map指令规定的数据类型;如果EXPRESS属性的数据类型是实体数据类型,那么Accessor属性的XMI。数据类型应该被声明为IDREF;——如果EXPRESS属性的数据类型是聚合数据类型,或是基本类型为聚合数据类型的自定义数据类型,并且对应的XMI。数据具有元素序列形式或者聚合类型的任何聚合形式(见8.2.2),那么Accessor属性的XMI,数据类型应该被声明为1DREF;——如果EXPRESS属性的数据类型是SEI。ECT数据类型,那么Accessor属性的XMI。数据类型应该被声明为IDREF;——如果属性中包含了content一”ref”(见10.5.2),那么Accessor属性的XMI。数据类型应该被声明为IDREF;——其他情况下,Accessor属性的数据类型声明是应该按照8.2中的规定,将其声明为与EXPRESS属性数据类型相对应的XMI,模式数据类型。如果Accessor属性的XML数据类型为IDREF,导出XMI.模式应该包含一个设置属性的keyre{声明,此处引用8.6.3.1的规定。示例1:属性的数据类型是简单类型的例子EXPRESS表达:‘I"YEEIdentifier=STRING:END_TYpE;TYPEWeight—measure=REAL;ENDTYPE.130 GB/T16656.28—2010/ISO10303—2812007ENTITYPipe;Id:Identifier;Description:STRING;Nominal—size:NUMBER;Diameter:REAL;Bends:IN阿GER:Available:BOOLEAN;Valid:LOGICAL;Image:BINARY;Weight:Weightmeasure;ENDENTITY;XMI。模式表达:(xs:simpleType[1ame=”Identifier”)txs:restrictionbase2”xs:normalizedString。’/)f/xs:simpleType)‘xs:simpleTypen硼e=“Weightmeasure“)(xs:restrictionbase=“xs:double”/)</xs:simpleType>(/xs:complexContent)‘/xs:complexType>在XML实例数据中:(Tns:Pipeid=”i10”Id=”Pl一1’’Nominal—size=“30’’Diameter=”275”Bends=”2”Available=’。true”Valid=’1Lhqknown’’Weight=”348’’ GB/T16656.28—2010/ISO10303-28:2007Description=”Standardrigiddouble-elbow”Image=”8AF009F3ADCBEA04”/)注意XMI。模式中的Id属性和XMI,实例数据中的Id属性是不同的XMI。属性,前者是从EXPRESS属性中得到的,而后者是XMI。的语法要求。同时注意,XM[。属性的顺序是无关的。示例2:一个属性的数据类型是简单数据类型的集合的例子.使用了值列表的形式:EXPRESS表达:ENTITYPt3d;c:ARRAY[13]OFREAL{EN疋ENTITY;XMI。模式表达:(xs.complexTypename=”Pt3d”)(xs:restriction>(xs:simpleType)</xs:simpleType>(xs:minLengthvalue=”3”/>(xs:maxLengthvalue=”3“/></xs;restriction>‘/Xs:simpleType)(/xs:attribute></xs:extension>《/xs:complexContent)(/xs:complexType)(/xs:complexContent></xs:complexType)(xs:elementname=在XMI。实例数据中:(Tns:Polylineid2132”Polyline”type=”Tns:Polyline”nillable=”true”/) GB/T16656.28—2010/[so10303—28:2007(Tns:Pt3dref=“e006”XSi:nil=”true”/>(/Tns:Polyline)(Tns:Pt3did=“e006”C=”000l0”/)8.6.3.1Accessor属性的keyref定义如果Aecessor属性的XML数据类型是IDREF,导出XMI。模式应该包含一个和EXPRESS属性对应的XMLkeyre{定义,这个keyre{定义应该遵照以下形式:(XS:selectorxpath=”//Tns:entity”/)(XS:fieldxpath=”@attribute”/)(/xs:keyref)其中:一一schema是由EXPRESSschema的标识符推导而来的,引用8.1.2的规定。~~entity是本地部分,是对应于本地EXPRESS实体的XML名字,引用8.5.3的规定。—一att“bute也是本地部分,是对应于EXPRESS属性的XMI,名字,引用8.5.5的规定。~⋯Tns:entity是实例元素的有完全限定的XML名字,其对应于本身包含的EXPRESS实体,引用8.5.5的规定。——keyname是key部分的完全合格的名字,其对应于EXPRESS属性的数据类型。对于实体数据类型,keyname应该和Tns:associateallKey部分有关,这里的assoe{ate对应于属性的数据类型。(这个联合实体数据类型不是本身包含的实体数据类型)。对于SEI,ECT数据类型,keyname应该和8.3.4.4所规定的关键字部分相关联。对于其他的数据类型,keyname应该和8.4.6所规定的关键字部分相关联。注:序列化元素单元的任何地方出现的包含的实体数据类型的任何实例元素,都会影响到keyref部分包含的xs:selectorxpath表达式。xs:field的取值取决于Accessor属性。keyref的定义需要XMI。属性的取值用以决定在key分量中被keyname指定的标识类型的一个元素。示例:对之前的实例3的扩展EXPRESS表达:SCHEMAgeometry;ENTITYpt3d;c:kRRAY[1:3]OFREAL;ENDENTITY;ENTITYpolyline;points:LISTOFPt3d;ENDRNTTTYENDSCHEMA;在XMI。模式中,polyline的定义为:(XS:complexContent>(XS:extensionbase=”exp:Entity”>(XS:attributename=”Points”type=”xs:IDREF”use=”required”/、《/xs:extension>(/XS:complexContent>(/xs:complexType>如果声明的Aceessor属性Points包含了数据类型IDREF,那么需要按照以下形式声明keyref(XS.keyrefn矾e=”TnsPolylinePoints—keyref”refer。”Tns:GeometrySeq-Pt3d-key”)133 GB/T16656.28—2010/iso10303-2812007(XS:selectorxpath2“//Tns:Polyline”/)(xs:fieldxpath=”@Points“/)(/xs:keyref)8.6.4Accessor元素对于每个映射到Accessor元素的EXPRESS属性(见以上8.6的部分),对应于实体数据类型的complexType中的(sequence>或者(all>,应该包含一个与Accessor元素声明相对应的值。声明Accessor元素时应遵照以下规则:Accessor元素的命名规则应遵照8.6.1的规定。——Accessor元素的maxOccurs属性定义没有必要在元素声明中给出,如果给出了,应该赋值为’’1”。——如果EXPRESS属性是强制的,那么Accessor元素的minOccurs属性定义没有必要在元素声明中给出,如果给出了,应该赋值为”1”。——如果EXPRESS属性声明为OPTIONAI。,或者像8.6.2中给出的那样,可以被当作OPTIONAL来处理,那么XMI,元素声明应该包含XML属性minOccurs一”0”,和XMI。属性nillable一”true”。注1:在实例化数据中,一个未设置的EXPRESS属性由缺失属性元素或者包含XMI,属性xsi:nil一”trl/e”的空Accessor元素指定。(见9.3.1)注2:如果一个EXPRESSDERIVEd属性被映射到了XML模式,处理时可以认为该属性被声明OPTIONAI.(见8.6.2.3)。注3:如果EXPRESS属性在它的实体数据类型的子类中被重声明为DERIVEd或者INVERSE,认为EXPRESS属性为”OPTlONAI,“,引用8622和8624的规定:一声明Accessor元素时,应该包含XMI.属性exp:sttributeType,该属性在基本XMI。模式中以一个fixed值定义。如果EXPRESS属性是显式(或可以按照是显式来处理),取值应浚为“ex—plicit”;如果EXPRESS属性是INVERSE(或可以按照是INVERSE来处理),取值应该为”inverse”;如果EXPRESS属性是DERIVEd,取值应该为”derived”。例外:如果EXPRESS属性是显式,XMI,属性exp:sttributeType应该被省略。如果expattribute一”attributetag”适用于EXPRESS属性,并且EXPRESS属性的数据类型不是实体数据类型,那么Accessor元素的XMI.数据类型应该按照8.6.4.1的规定给出。如果expattribute一“attributetag”适用于EXPRESS属性,并且EXPRESS属性的数据类型是实体数据类型,那么Accessor元素的XMI。数据类型应该按照8.6.4.2的规定给出。——如果exp—attribute=”double—tag”适用于EXPRESS属性,那么Accessor元素的XML数据类型应该按照8.6.4.3的规定给出。另外,如果配置指令expattribute一”attribute—tag”适用于EXPRESS属性,并且content=”ref”或者congtent一”unspecified”也适用于EXPRESS属性,导出的XMI。模式应该包含一个对应的keyref定义,引用8.6.4.4中的规定。注4:当配置指令exlDattribute一”double_tag”适用于EXPRESS属性时,对应于属性值的XMI。keyref定义是不同的,859和8.463中需要该定义。8.6.4.1数据类型不是实体数据类型的标签属性(attribute-tagged)如果expattriJ)ute一”attributetag”适用于EXPRESS属性,并且EXPRESS属性的数据类型不是实体数据类型,那么Accessor元素的XMI。数据类型应该声明为与EXPRESS属性相对应的XMI。模式数据类型,引用8.2中的规定。注1:如果一个EXPRESS属性的数据类型不是实体类型,默认按照此方法来映射。例外:如果一个nlap指令适用于EXPRESS属性(见10.5.4),那么Accessor元素的数据类型应该134 GB/T16656.28—2010/ISO10303—28:2007被声明为map指令所规定的XMI。数据类型。——如果一个notation指令适用于EXPRESS属性但是不适用于元素的数据类型(也就是说,给出指令是为了设置属性而不是设置数据类型),那么Accessor元素的数据类型应该按照以下形式声明:(XS:complexType)tXS:siopleContent)</xs:complexType>其中:——att“})utetype是对应于EXPRESS属性的XMI。模式数据类型,参见8.2中的规定。configured—notation是notation指令给出的值。示例1到示例4见7631给出的实例。示例5:一个INVERSE属性映射的实例(试与76.3.1中的实例2做比较):EXPRESS表达:ENTITYPt3d;c:ARRAY[1:3]OFREAL;INVERSEincurve:SET[o1]OFPolylineFORpoints;ENDENTITY;如果配置指令为:‘cnf:entityselect=”Pt3d”)(cnf:attributeselect=”Incurve”keep=”true”/7(/cnf:entity>那么导出XMI,模式应该声明为:(XS:extensionbase=”exp:Entity”>(XS—restrlctlon、(xsSimpleType)(XS.minLengthvalue=”3”/)(XS.maxLengthvalue=”3”/>(/xs:restrictlon)t/xs:SispleType}</xs;element>(xs!elementname=”Incurve’’>】35 GB/T16656.28—2010/Iso10303—28:2007(xs:elementref=”Tns:Polyline”minoccurs=”0”maxOccurs=。’1”,、(/xs:sequence>(/xs:element>(/xs:a11)(/xs:extension>(/xs:complexContent)</xs:complexType>XMI。实例数据为:(Tns:Pt3did=”i4”>(c)100</C></Tns:Pt3d>8.6.4.2数据类型为实体数据类型的属性标记属性本条定义了当expattribute一”attribute-tag”适用于EXPRESS属性,并且EXPRESS属性的数据类型是实体数据类型的情况下,EXPRESS属性的映射规则。映射取决于继承映射或者自由继承映射是否适用于EXPRESS属性的数据类型,这里的EXPRESS属性的数据类型被称为相关实体数据类型(“ssociatedentitydatatype)。如果相关实体数据类型的映射是一个继承映射,那么Accessor元素的XMI。数据类型应该是对应于相关实体数据类型的XMI。数据类型,引用8.5.4中的规定。如果相关实体数据类型的映射是一个自由继承映射,并且相关实体数据类型在类型图中没有子类,那么Aecessor元素的XM[,数据类型应该是对应于相关实体数据类型的XML数据类型,引用8.5.4中的规定。如果相关实体数据类型的映射是一个自由继承映射,并且相关实体数据类型在类型图中有子类,那么Accessor元素的XMI,数据类型应该定义为exp;Entity。注l:当属性值是一个子类的实例时,Aceessor元素会有一个xsi:typeXML属性.因为exp:Entity声明为抽象类型,那些Accessor元素都有一个xsi:typeXMI.属性。注2:XMI,模式声明允许Accesser元素内容中以值描述或者引用描述的实体实例化。配置指令exp-type和content决定在哪种情况下使用哪种描述选项。示倒:EXPRESS表达:(对8544的实例的扩展)ERTITYmeasure_withunlt:value—component:measurevalue;unitcomponent:named—lmlt;ENDENTITY;TYPEmeasure—value5REAL;END_TYPE;ENTITYnamedunit;dimensions:dimensional—exponents;END_ENTITY;ENTITysiunitSUSTYPEOFI:named_unit);prefix:OPTIONALsiprefix;naIn8:sl_unit—Dame;136 GB/T16656.28—2010/ISO10303-28:2007删HiVESELF\namedunltdimensions:dimensionalexponents:=dimensions—forsiunit(name);END_ENTITY;XML模式表达:对于和NAMEr)UNIT和SIUNIT相对应的XML类型和元素的定义,见854(XS:simpleTypenaIne=“Measure_value”)(XS:extensionbase=”exp:Entity”、(/xs:extension>(/xs:complexContent></xs:complexType)如果UNIT—COMPONENT的exl’attribute=”attributetag”,并且为NAMEDUNIT自由继承而来,那么:(xs:complexTypenafae=”Measure_with-unit”)(XS:complexContent><”:extensionbase=”exp:Entity”)(xs:a11)(XS:elementname=”Valueeomponent”type=”Tns:Measure_value”/)(XS:elementDame=”Unit—component”type=”exp:Entity”/>(/xs:all></xs:extension></xs:complexContent)(/xs:complexType>8.6.4.3双重标记属性本条规定了适用exp—attribute一”double—tag”的EXPRESS属性的映射规则。注1:如果一个EXPRESS属性的数据类型是实体类型,默认按照本条的方法来映射。Accessor元素的XML数据类型应该是一个匿名的complexType,按以下形式给出:(XS:complexType>(XS:sequence)。element—or—groupref一”instance-name’’/、(/xs:sequence>(/xs:complexType)其中:——instance—name:如果EXPRESS属性的数据类型是一个实体数据类型,instance—name应该是对应的complexEntity组的合格名(见8.5.6.2)。如果EXPRESS属性所基于的数据类型是137 GB/T16656.28—2010/too10303-28:2007一个SEI,ECT数据类型,instance—name应该是对应的组或者实例元素的合格名(见8.3.4)。——elementorgroup:如果instance—name是一个元素,则elementorgroup应该是xs:element或者如果instance—name是组,则elementor_group应该是xs:group。洼2:XMI。模式声明允许元素是取值元素或引用元素。配置指令决定在哪种情况下使用哪种表达选项。示例:EXPRESS表达(本实例是8544的实例的扩展,可以与862其他条的内容比较):ENTITYmeasure—withunit;valuecomponent:measure—value;unitcomponent:named_unit;END_ENTITY;TYPEmeasure—value=REAL;ENDTYPE;ENTITYnamed—unit;dimensions:dimensionalexponents;ENDENTITY;ENTITYs1一unitSUBTYPEOF(namedunit);prefix:OPTIONALsi—prefix;ilanle:siunit—name;DERIVESEl2\naⅢedunltdimensions:dimensionalexponents;5dimensionsforsiunit(name);ENDENTITY;XMI.模式表达:如果UNIT—COMPONENT的exl>attribute-”doubletag”,并且为NAMEDUNIT继承而来,那么:(xs.extensionbase=”exp:Entity”>(xs:sequence>(xs.elementna【ne=”Value_component“type=”Tns:Measurevalue”/)(xs.element11aIne=”Unitcomponent”)(xs:elementref=“Tns:Named—unlt”/)</xs:sequence></xs:complexType)</xs二element>(/xs:sequence>(/xs:extension>(/xs:complexContent)(/xs:complexType>如果UNIT—COMPONENT的expattribute--”doubletag”,并且为NAMEDUNIT自由继承映射,那么:(xs.extensionbase=”exp:Entity”>(XS:sequence)(XS:groupref2”Tns:Namedunlt—complexEntity-group”/)(/xSsequence>(/xs:complexType>(/xs:element)</xs:all>(/xs:extension)(/xs:complexContent、(7x5:complexType)8.6.4.4存取访问元素的keyref定义如果配置选项generatekeys=”true”适用于导出的XMI,模式,并且配置指令exp—attribute一”attribute—tag“应用于EXPRESS属性,且content一”ref”或者congtent一”unspecified”同样也应用于EXPRESS属性,则导出的XMI。应该包含一个和该属性对应的XMLkeyref定义。keyref定义不能在任何其他的定义或者声明内出现,keyref定义应采用以下形式:(XS:keyrefname=”schema——entity——attribute-keyref”refer=”keyname”)(XS:selectorxpath=”.//Tns:entity/attribute”/>(XS:fieldxpath=”@ref”/>(/xs:keyref)其中:——schema是由EXPRESSschema标识导出的,见8.1.2。entity是与包含的EXPRESS实体对应的XMI。数据类型名的局部部分,见8.5.3。~attribute是对应于EXPRESS属性的XML名字,引用8.6.1。——Tns:elttity是与包含的EXPRESS实体对应的实例元素的完整限定的XML名字,见8.5.5。一一keyname是与EXPRESS属性的数据类型对应的key分量的完整限定的XMI。名字,其中的EXPRESS属性的数据类型有如下情况:(1)对于实体数据类型,如果相关实体数据类型有子类,keyname应该引用8.5.9规定的Tns:associateallKey部分,否则引用8.5.9规定的Tns:associatekey分量。在以上情况中.associate对应于EXPRESS属性的数据类型(是关联的实体数据类型,而不是包含的实体数据类型)。(2)对于SEI.ECT数据类型,keyname引用8.3.4.4中规定的key部分。(3)对于所有其他类型的数据类型,keyname引用8.4.6中规定的key部分。注:序列化元素单元的任何地方出现的包含的实体数据类型的任何实例元素,都会影响到keyref部分包含的xs:8eleczorxpath表达式。xs:field的取值取决于XML属性ref,这个属性在Accessor元素包含了一个引用来代替值时才会出现。keyref的定义需要ref属性的取值用以决定在key分量中被keyname指定的标识类型的一个元素。另外,如果以上的指令适用并且EXPRESS属性的数据类型是实体数据类型,那么导出的XMI。应该包含一个与属性值的代理表述相对应的XMLkeyre{定义。keyref的定义应该有以下形式:</xs:keyref)其中:——schenla、entity和attribute郁按照前述的定义。——keyname是对应的key分量的有完全限定的XMI,名字,如果相关实体数据类型有子类,keyname应该取决于Tns:associate—pro。ysubtypeKey分量,否则,取决于Tns:associate—proxyKey分量。在以上情况中,associate对应于属性值的数据类型(是相关实体数据类型,而不是包含的实体数据类型)。8.6.5类型标记属性如果配置指令expaltribute一“typetag“(见10.2.5)应用于EXPRESS属性,EXPRESS属性的数据类型应该是命名数据类型,或者是以命名数据类型为基类型的匿名聚合。例外:当EXPRESS属性的数据类型有子类时,”type—tag”应该是无效的。当EXPRESS属性的数据类型是一个匿名聚合,并且是自由继承映射,”typetag”应该是无效的。在这些情况下,应当用默认的expattribute值来代替“typetag”。注1:如果出现“下情况:一个属性的数据类型在类型图中有于类,或者具有相同数据类型的实体有多于一个的属性,或者属性是一个匿名聚合并且是自由继承映射,那么,为该属性说明exl>attribute=”type—tag”是错误的(见102.5)。对expattribute一”type—tag”适用的每个EXPRESS属性,对应于实体数据类型的complexType中的或者(all>组应该包含对应于自定义数据类型的实例元素(见8.4.3)。——如果命名数据类型是一个自定义数据类型,且其基本类型是SEI。ECT类型,则《sequence)或者(aid组应该包含根据以下规则确定的与自定义数据类型XML组对应的元素的求解集。——初始化(sequence)或者(a11)组时,应该包含所有与自定义数据类型对应的XML组中出现的XS:elements和XS:groups(见8.3.4.2)。——(sequence)或者(a11)组中出现的每个XS:groups,都应该被删掉,并用所包含的所有XS:elements和XS:groups替换。重复以上步骤,直到(sequence)或者(all>组中没有XS:groups。组中的任何复卒XS:elements都应该被删掉。如果EXPRESS属性的数据类型是命名数据类型(不是匿名聚合):——Accessor元素的maxOccurs属性定义没有必要在元素声明中给出,如果给出了,应该赋值为”l”。——如果EXPRESS属性是强制的,那么Aecessor元素的minOccurs属性定义没有必要在元素声明中给出,如果给出了,应该赋值为”1”。——如果EXPRESS属性声明为OPTIONAI。,或者像8.6.2中给出的那样,可以被当作OP—TIoNAL来处理,那么XMI。元素声明应该包含XMI。属性minOecurs一”0”,和XML属性nillable一”true”。⋯’如果EXPRESS属性的数据类型是一个匿名聚合.并且是继承映射,那么Accessor元素的minOccurs和nlaxOccurs属性应该在元素声明时具体化,它们应按照以下规则取值:如果聚合的基类型为OPTIONAL。,那么minOccurs属性值应该为”0”;否则,它应该是EX一140 GB/T16656.28—2010/ISO10303-28:2007PRESS聚合大小的下界,用十进制整数表示。注:如果EXPRESS属性的数据类型是匿名聚合,并且是自由继承映射,同时组不允许其中的元素有除了0和1之外的maxOccurs和mini)ccur8值,此时使用这条指令是错误的。——如果给出了EXPRESS聚合的上界,maxOccurs属性值就是这个上界,用十进制整数表示;如果没给出EXPRESS聚合的上界,或者上界不确定,那么maxOccurs的值应该为”unbounded¨。注2:如果EXPRESS聚合是一个ARRAY.下界和上界的值都是flllNDEX(A)一LOINDEX(A)+1.这里A是聚合数据类型。——如果EXPRESS属性声明为OPTIONAl,,或者像8.6.2中规定的那样,可以按照OPTIONAI。类型来处理,那么元素声明中应该包含XMI。属性nillable一”true”。注3:在实例化数据中,一个未设置的EXPRESS属性由缺失属性元素或者包含XMI,属性xsi:nil一”true”的空Accessor元素指定。(见931)注4:如果一个EXPRESSDERIVEd属性被映射到了XMI。模式,处理时可以认为该属性被声明为OPTIONAI。(见8623)。注5:如果EXPRESS属性在它的实体数据类型的任意子类中被重声明为DERIVEd或者INVERSE,认为EXPRESS属性为”OPTIONAL”(见8.624)。示例1:EXPRESS表达(与864中的实例比较来看):E耵ITYmeasurewithunit;valuecomponent:measurevalue;unitcomponent:r/amedunit2;END_ENTITY;TYPEmeasurevalue=REAL:END_TYPE;ENTITYDamedunit2;dilnensions:dimensional—exponents;END_ENTITYXMI。模式表达:如果UNIT—COMPONENT的expattribute--”type-tag”,并且为NAMEDUNIT2继承而来,那么:(xs:elementrklIne=”Valuecomponent”type=”Tns:Measurevalue”/)(/xs:complexContent)(/xs:complexType)如果UNIT—COMPONENT的expattribute一“typetag”,并且为NAMEDUNIT2自由继承映射,那么:(xs:complexTypen6u_11e=”Measurewithunlt¨)(xs:complexContent></xs:complexContent)</xs:complexType>示例2:本实例适用于一个属性的数据元素为实体数据类型的聚合的情况(与864l中的实例比较来看)。EXPRESS表达:ENTITYPt3dc:ARRAY[1:3]OFREAL;ENDENTITY;ENTITYPolylinepoints:LISTOFPt3d;END—ENTITY;XML模式表达:(xs:sequence)(/Xs:complexContent>(/xs:complexType>8.6.6无标记属性本条规定了适用exp—attribute一”130—tag”的EXPRESS属性的映射规则。注1:如10.5.1.5中的规定,EXPRESS属性的数据类型是在相关语境模式中没有子类的实体数据类型。在这里,提到实体数据类型时,可以看作是相关实体数据类型。在XML模式中,EXPRESS属性本身不应该有对应的Aecessor元素或者Accessor属性。在这里,相关实体数据类型的每个属性都应该按照8.6中的规定,当作是包含的实体数据类型的属性去映射。注2:也就是说,相关实体数据类型的所有属性实际上都转换成了包含的实体数据类型的属性。这就允许XML模式实现“连接”这两种实体数据类型的“视图”。示例:EXPRESS表达:EN2ITYresource:ENDENTITY;ENTITYprocess;END_ENTITY;TYPEresourceassignment—item=SEl正CT(process,⋯)ENDTYPE;ENTITYresourcerole:Da]ne:label;END_ENTITY;ENTITYresourceassignment;assigned_resource:resourcerole:resourcerole;142 GB/T16656.28—2010/ISO10303—2812007items:SET[17]OFresource_assignment_item;END_TYPE;在XML模式中,当exp-attribute一”no-tag”被指定为ROLE,RESOURCE_ASSIGNMENT的声明应该如下:(xs:complexType></xs:element>(/xs:sequence>(/xs:extension>(/xs:complexContent>(/xs:complexType>8.7EXPRESS模式的XML模式和命名空间用于相关语境模式的EXPRESSSCHEMA语句应该映射到XML模式分量XS:schema中。也就是说,应该有一个与上下文EXPRESS模式和一个给定的结构文件对应的导出的XML模式。XMI。命名空间(“目标命名空间”)应该和导出XMI,模式相关。8.7.2规定了和目标命名空间相关的命名空间URI。XS:schema元素应该包含一个targetNamespace属性,属性值就是以上提到的和目标命名空间相关的命名空间URI。如果有EXPRESSschema的名字和版本、结构文件的URI,或者其中的某项,那么应该在XML模式的documentation元素中给出。注:EXPRESSschema的名字和版本并没有正式的映射到导出XML模式的某个元素,它们可能会影响到target—namespaceURI的构成。见8.72。8.7.3规定了导出XML模式的附加的命名空间声明。8.2~8.6以及8.8的内容规定了导出XML模式必须包含的定义和声明。如果配置指令embed—schema—items一”true”适用(见10.2.24),导出XML模式也必须包含来自于附录C中的XML数据类型定义,属性声明和元素声明,针对上下文EXPRESSschema,8.2~8.6以及88中需求的定义和声明中使用了(直接或者间接)附录C。拷贝定义和声明应该和它们在附录C中的对应逐字匹配。这种情况下,在那些章条中的前缀”exp:”就取决于导出XML模式的目标命名空间,有可能就被直接替换成这些目标命名空间中所使用的前缀(见8.7.3)。如果配置指令embed—schema—items==“false”适用,导出XML模式则不能包含任何来自于附录C中的XMI。数据类型定义,属性声明和元素声明,取而代之的是,其中应该以一个XS:import的形式显】43 GB/T16656.28—201O/ISO10303—28:2007式包含附录C中规定的基本XML模式。这种情况下,前置处理器应该选择一个命名空间前缀(见8.7.3),用以和8.2~8.6以及8.8中出现的前缀”exp:”进行通信,被选择的前缀应该和被以下URN:urn:iso:std:iso:10303:一28:ed2:tech:XMI。schema:common标识的命名空间通信。8.7.1命名空间前缀对于应用了alias配置选项(见lo.2.25)的每个命名空间,命名空间应被包括在命名空间声明中.其前缀与prefix指令说明的一样。对于任何非alias配置指令说明的,而又要求的命名空声明,命名空间的前缀参照7.7.]。8.7.2用于导出XML模式的命名空间的URI如果有namespace配置指令,与导出XMI。模式的命名空问联合的命名空间URI应该由namespace配置指令定义(见10.2.18),否则,应该由包含了结构文件的configuration元素的schemaI,ocation给出。如果以上2种情况都没有给出,那么目标命名空间的URI应参照7.7.2的规定给出。8.7.3导出XML模式的命名空间声明XS:shema元素应该包含(xmlns)以下内容的命名空间声明:一一目标命名空间。这个命名空间声明中所使用的命名空间URI的取值应该和targetNamespace属性中所指定的值一样。一一xMI。模式定义的当前版本。如果配置指令embed—schemaitems=”false”适用(见上述内容),基本XMI。模式。在每个情况下,前缀的取值和命名空间URI应该由一个对应的namespace配置指令给出(见10.2.18)。对每个namespace配置指令,都应有一个在XS:schema元素中的xmlns声明与之相对应。如果以上任意的xmlns声明,没有相应的namespace配置指令,那么前置处理器就会按照8.7.1中的规定来选择前缀和适当的URI。如果XS:schema元素包含属性elementFormDefault或者attributeFormDefau/t,那么他们的值应该设成”unqualified”,即XMI,模式Part1:Structures中规定的默认值。见7.7.3的示例。8.7.4用于导出XML模式的输入声明输入声明应该遵照7.7.4中的规定。8.8语境模式中特定的序列化单元对于语境模式,在与导出XMI.模式对应的命名空间中,应该有一个特殊的序列化元素单元~个相应的cornplexType。序列化元素单元声明应该有以下形式:uniqueness—constraints(/xs:element,其中:一_-Tns是序列化单元的命名空间前缀,此前缀对应于和导出XML模式有关联的命名空间,如8.7所述。~如果有uosElement配置指令,则UOS是其所规定的名字(见10.3.8),否则为UOS。——unlqueness—constraints:8.5.10中所需的任意XS:unique结构内容。特定语境的complexType应该是exp:UOScomplexType的一个扩展,如5.6所述(没有内容模型的情况)。特定相关语境的complexType的内容模型应该是由以下内容组成的重复choice组:——类实体实例元素(见8.53.3);144 GB/T16656.28—2010/JSo10303--28.2007——exp:edokey实例元素;——对应于一个非实体数据类型的引用型实例元素(见8.4.7)。此外,如果存在uosElement配置指令规定的附加属性,那么complexType应该包含这些属性。也就是说,序列化单元的eomplexType应该有以下形式:(XS:eomplexTypename=”UOS”)‘XS:complexContent)(XS:elementref=”referenceable-instance—name一1”/)(XS:elementref=”referenceable-instiance_nⅫ}n”/)(/xs:choice)addedattributes{/XS:extension)(/xs:complexcontent>(/xs:complexType>其中:——如果有uosElement配置指令,则UOS是其所规定的名字(见lo.3.8),否则为u。s。——genericentity是类实体数据类型的具有完全合格名(见8.5.3.3)。——referenceable—instancename一1是上面说明的引用型实例元素的完全合格名。——addedattributes是由uosElement配置指令添加的属性,是一个可选项(见10.3.8)。见7.8的实例。9XML文档创建一个基于GB/T16656本部分的XMI,文档可以包含零个或多个EXPRESS模式,零个或多个配置文档,零个或多个序列化单元,每个表达EXPRESS模式描述的数据集。9.1前提条件一个XM[。实例文档的创建假定做了以下前提条件:——所有提供或引用的EXPRESS模式都与GB/T16656.11的规定一致;——每个提供或引用的配置文档都与第10章中的规定一致,并且描述了每个提供或71用的EKPRESS模式的映射;——每个序列化单元的相关语境模式都是一个提供或引用的EXPRESS模式;——每个序列化单元的数据g"hT--1"实体实例集合,这些实体实例满足在相关语境模式中规定的与实例数据类型对应的所有局部规则。9.2一般XML文档结构一个与GB/T16656本部分一致的XML文档应该以一个具有verMon--”1.0”的xml声明开始。注I:本条的其他要求规定了需要附加XML属性的环境。一个与GB/T16656本部分一致的XMI,文档或是如9.2.2中规定的一个uos文档,或是如9.2.1中规定的一个iso一1030328文档。注2:一个UOS文档只能包含~种数据集,这种数据集与控制它的EXPRESS模式的默认XML模式(见第7章)一致。一个lso一10303—28文档可能包含多种数据集,包括与已配置XML模式(见第8章)、EXPRESS模式和配/4j GB/T16656.28—2010/ISO10303-28:2007置文档一致的数据集。注3:在大多数情况下,一个与某个已配置XML模式一致的XM[,文档并不符合Is()10303的本部分。它可能与其他部分或标准一致。但是一些配置的结果是一个一致的UOS文档(见4.1.2)。9.2.1一个iso-10303-28文档的结构一个iso1030328文档应该包括iso一10303—28元素。iso一10303—28元素的内容关于文档模式(见附录D)是有效的。注i:iso1030338元素不必是文档的根元素.在文档类型(doctype)和文档模式之间不一定建立关系。如果XML文档包括文档头信息,这个信息应该用如5.2.1中规定的header元素表示。注2:除了附录C中定义的XMI,模式下有效XMI。元素外,GB/T16656的本部分没有对header元素的使用和它的内容做任何要求。iso一10303—28元素应该包括零个或多个express元素,如9.2.3中规定,通过引用或值的方式表示EXPRESS模式。iso一10303—28元素应该包括零个或多个configuration元素,如9.2.4中规定,每个configuration元素表示EXPRESS模式到XML模式的映射规则。如果一个EXPRESS模式被一个配置文件所引用或被用作iso一10303—28元素中的数据集的相关语境模式,那么在iso一10303—28元素的内容应该包含一个express元素(见5.4)。iso一10303—28元素应该包括零个或多个序列化单元元素,如9.2.6中规定,每个序列化单元元素表示一个给定EXPRESS模式描述的数据集。iso一10303—28元素应该包括零个或多个schema—population元素,如9.2.5中规定,每个schema—population元素把一个给定EXPRESS模式描述的一个完整模式实例定义成序列化单元元素表达的数据集的一个集合。示例:一个XMI。文档应该有下面结构:(?xmlversion2”10”encoding=”utf一8”?)(is01030328version=”20”1(header)⋯</header>7expressid=”schl01”schemaLocation=“URI:wwwtcl84一SC4org/schemas/Part214/cc6一if-schemaexp”7configurationid=”cfl01”schema=’’schl01’’configuration-location=”URI:wwwpdtnetorg/Abbildung/AP214cc6一cfxml”,)。UOSid=”dlOl一24”configuration=”cflOl’’xmlns=”URN:wwwpdtnetorg/Schema/AP214cc6”)(entities)(/uos>(/iso_i0303—28>9.2.2一个UOS文档的结构一个UOS文档应该包括一个如9.2.6中规定的单个序列化单元元素,且有以下附加要求:描述文档的导出XMI。模式应该是与EXPRESS相关语境模式相对应的缺省XMI。模式。——在所有情况下,序列化单元元素应该规定描述序列化单元元素中所用编码的XMI.模式。它可能还规定相关语境模式和序列化单元元素的配置。9.2.3EXPRESS模式的编码对每个在配置文件中引用或用作iso一10303—28元素中包括的一个数据集的相关语境模式的EX—PRESS模式,在iso一10303—28元素的相关语境应该有一个express元素(见5.4)。这个元素可能按值或引用提供EXPRESS模式。】46 GB/T16656.28—2010/ISO10303—28:2007如果这个模式由值提供,express元素的相关语境应该是一个单个字符串值,这个字符串值包括一个与GB/T16656.]l一致的EXPRESS模式的表达,使用为XML文档规定的字符集编码。注1:在很多情况下,大多数EXPRESS模式的方便的表达将是一个CDATA部分,这个CDATA部分包括EXPRESS模式的“格式化”文本。如果这个EXPRESS模式由引用提供,express元素的内容应该是空的,这个元素应该有属性xsi:nil--”true”,并且具有schemaI。ocation属性。schemaLocation属性的值应该按值定位一个包括EX—PRESS模式的资源。在任何一种情况下,express元素应该有一个id属性,并且它的值应该是一个对应于iso一10303—28元素内所有引用的与EXPRESS模式相关的局部XMI。标识符。schema—Tlaine属性的值应该是如8.1.1中规定的EXPRESS模式名称。如果存在schema—version属性的值,则应该标识EXPRESS模式版本。如果存在schema—identifier属性的值,则应该是(AsN.1)EXPRESS模式的模式标识符。至少存在一个schema—name或schema—identifier属性,并且具有相应的值。注2:只有一些EXPRESS模式有ASN1标识符。这为那些具有ASNl标识符的EXPRESS模式提供。9.2.4配置文件的编码如果iso一10303—28元素包括一个EXPRESS模式且这个EXPRESS模式满足:一用作iso一10303—28元素中包含的一个数据集的相关语境模式,和——使用了某些非缺省配置的XML模式映射。那么,iso一10303—28元素应该包括一个相应的configuration元素(见10.1)。每个configuration元素按值或引用提供一个或多个EXPRESS模式的配置的定义。configuration元素应该有一个ld属性,并且它的值应该是那个配置文件的一个局部XML标识符。这个局部XMI.标识符应该被用作iso一10303—28元素内对那个配置文件的所有引用。configuration元素应该有一个schema属性,并且它的值应该是express元素的局部XML标识符,这个express元素提供EXPRESS模式,这个EXPRESS模式的映射由这个配置文件定义。如果这个配置描述一个特定EXPRESS模式的映射,并且这个配置指令包括特定模式引用,则应该具有schema属性。如果这个配置文件描述一个任意EXPRESS模式的映射,并且配置指令不包括特定模式引用,schema属性可以被省略。如果配置文件由值提供,configuration元素的相关语境应该是配置指令的汇集,这些配置指令与10.2相一致,它使用XML文档特有的字符集编码定义这个配置。如果配置文件由引用提供,configuration元素的相关语境应该是空的,这个元素应该有属性xsi:nil一”true”,并且具有configuration—location属性。configuration—location属性的值应该按值定位一个包括配置的资源。9.2.5总体定义的编码如果上述(9.1)前提假设序列化单元中出现的每个实体实例都是有效的(即满足相关语境模式特定的实体数据类型的局部规则),那么,就不要求序列化单元的相关语境总体上是一个有效的population,这个population在GB/T16656.11中描述,并且满足相关语境模式中所有的全局RUI。ES。如果打算用一个给定的序列化单元元素的内容,或用一组序列化单元元素,表达一个有效的总体,这个事实通过一个如5.3中指定的schema_population元素,表达在iso一1030328元素中。对出现在iso_10303—28元素内容中的每个schema—population元素,序列化单元元素的对应组合应该组成相关语境模式的一个有效总体,在GB/T16656.1】中定义。schema—population元素规定一个总体的解释应该在5.3中指定。9.2.6数据集的编码——序列化单元本条规定控制序列化单元元素内容创建的规则,这个序列化单元元素与给定模式实例相对应。147 GB/T16656.28—2010/Jso10303-28:2007序列化单元是XML元素的一个集合,这个集合:——代表EXPRESS实体实例的组合,这些EXPRESS实体实例由单个EXPRESS模式描述,由序列化单元的contextschema指定;——已经根据本条中的规定由这些EXPRESS实体实例构造,并且——没有对不在序列化单元中的元素的局部XMI。引用(IDREFS)。对将要在isoJ0303—28元素中表达的每个序列化单元,一个序列化单元元素应该出现在iso一10303—28元素的相关语境中。序列化单元元素应该是与8.8指定的相关语境模式相应的XMI,元素类型。序列化单元元素或者规定用于序列化单元元素(见9.2.6.1)编码的XMI。模式,或者规定序列化单元元素(见9.2.6.1)的相关语境模式和配置,也可以两者都规定。9.2.6.1规定序列化单元的相关语境模式和配置XMI。属性express和configuration之一或两者可以出现在序列化单元元素中,如果存在,则规定用来定义UOS的XML模式的相关语境模式和配置。如果都不存在,则应该具有schemaI。ocation属性。如果configuration属性在序列化单元元素中存在,则在iso一10303—28元素中应该有一个与其id属性值相同的configuration元素。以下将该configuration元素称为规定的configuration元素。如果express属性在序列化单元元素中存在,则在iso一10303—28元素中应该有一个与其-d属性值相同的express元素。以下将该express元素称为规定的express元素。如果configuration属性在序列化单元元素中存在,并且不存在express属性.则schema属性应该存在于指定的configuration元素中(见9.2.4),并且它的值应该标识express元素,该express元素提供序列化单元的相关语境模式。这个指定的configuration元素应该提供相应XMI。模式的配置文件,这个XML模式控制序列化单元中元素的形成。如果express属性在序列化单元元素中存在,并月不存在configuration属性,则指定的express元素应该提供序列化单元(见9.2.2)的相关语境模式。与相关语境模式相对应的缺省XML模式应该控制序列化单元中元素的形成。如果configuration和expressXMI.属性都出现在序列化单元元素中,指定的express元素应该提供序列化单元(见9.2.2)的相关语境模式。指定的configuration元素应该提供相应XML模式(见9.2.4)的配置信息,这个XMI。模式控制序列化单元中元素的形成。指定的configuration元素本身的任何express属性都应该被忽略。注:这就是,如果序列化单元只有一个configuration属性,它涉及的configuration元素标识相关语境模式并且描述XMI。模式配置。如果序列化单元只有·个express属性,它标识相关语境模式,并且缺省XMI。模式配置被使用。——如果序列化单元既有configuration属性,也有express属性,express属性标识相关语境模式,并且configu—ration属性标识将要使用的配置。9.2.6.2规定序列化单元的XML模式如果存在schemaI。ocaion属性,它应该规定一个资源列表,这个资源列表包括导出XML模式,这个导出XML模式是用于序列化单元中描述编码的。按照惯例,列表的第一项应该是一个URI或URN,这是XML模式的全局唯一标识符,如果有的话,随后的项应该是URLs,导出XML模式的文本能够在这个URI.S处找到。9.2.6.3规定序列化单元的XML命名空间XML属性xmlns应该出现在序列化单元元素中,并且它的值应该指定与相关语境模式对应的XMI。模式关联的命名空间,正如在上面规则中确定的一样。注:XML类型的名称和导出模式中声明的实例元素的前缀的使用不是必须的。然而,W3C强烈鼓励前缀的使用。 GB/T16656.28~2010/ISO10303-28:2007序列化单元元素应该还包括下面的xmlns属性,如果序列化单元包括基XMI。模式中声明的实例元素:xmlns:exp一”urn:iso:std:iso:10303:一28:ed-2:tech:XMLschema:common’’如果序列化单元的表达使用来自任何其他命名空问的XMI。名称,序列化单元元素对每个这样的命名空间应该包括一个附加的xm[ns属性。注:配置文件可以包括在导出XML模式中附加命名空间使用需求的指令,但是这些命名空间只有在包括来自这些命名空间的元素名称或属性名称的序列化单元元素中需要。9.2,6.4规定序列化单元的数据相关语境序列化单元元素的相关语境应该包括XML元素的一个组合汇集,表达序列化单元中EXPRESS实体实例的集合。序列化单元中每个EXPRESS实体实例应该由如9.3中指定的序列化单元元素的相关语境中的一个或多个XML元素表达。注:一些实体实例通常由元素表达,这些元素是序列化单元元素的直接子元素。根据配置指令,所有的实体实例可能都要求如此表达,或者部分实体实例在表达其他实体实例的元素内容中表达。示例:以下例子说明了序列化单元:用XMI。实例数据:《。xmlversion=”l0”?>JohnQPublic(/Name>(090i!Carid=”id20”)(Make)BMW(/Make)(Car_model)Z3(/Car—model)140 GB/T16656.28—2010/ISO10303-28:2007(/OWn:Car)(/uos)‘/isol030328,9.2.6.5将序列化单元标记为企业数据对象企业数据对象(enterprisedataobject)是一个可能在商业交易和其他交换文档中涉及到的数据资源。一个企业数据对象有一个固定的用于认知的全局标识符。为与XMI,习惯一致,这个固定全局标识符是一个“引用URI”,它独立于位置。如果包含在序列化单元中的EXPRESS实体实例的集合表达一个企业数据对象,则edo属性在序列化单元元素中应该存在,并且它的值应该是这个固定全局标识符。否则,edo属性应该不存在。注l:数据资源的相关语境模式应该和序列化单元的相关语境模式一致,但是配置并不重要多个配置可能被用于传达同样的数据源。注2:edo标识符的主要作用是方便接收者的未来交换。但是它也可以使接收者便于决定该数据集与接收者已经获得的另一数据集相同还是不同。注3:一个企业数据对象中实体实例的局部XMI。标识符可能不仅具有局部意义。即,数据资源中的特定实体实例可能已经具有众所周知的标识符,并且被引用uRI+局部ld外部引用。注4:序列化单元的内容本身并不表达一个企业数据对象也是可能的,但是一个或多个其所包含的实体实例(加之它引用的所有其他实体实例)组成一个企业数据对象。在这样的情况下,edo属性不应该出现在序列化单元元素中,而应该出现在每个实体实例(见931)中。9.3EXPRESS实体实例的表达序列化单元中的每一个EXPRESS实体实例应该在序列化单元元素的某处被一个在9.3.1中规定的按值实体实例元素或一个在9.3.4中规定的复合实体实例元素表达。例外:通过9.3.2中规定的外部引用,一个序列化单元可能包括定义在一个单独序列化单元中的实体实例(被引用的实例在一个单独序列化单元元素中采用取值表达)。一个实体实例可能被表示为序列化单元元素的直接子元素,或者表达在其他某个实体实例的一个属性值中,或者同时表示为两者。表示为序列化单元元素的直接子元素的一个EXPRESS实体实例称为一个独立实体实例(independententityinstance)。每个独立实体实例应该被表示为一个9.3.1中规定的按值实体实例元素。表达在其他某个实体实例的一个属性值中的一个EXPRESS实体实例称为一个从属实体实例(de—pendententityinstance)。一个从属实体实例可能以9.4和9.8中规定的几种方式中的任何一种表达,包括9.3.1中规定的按值表达,9.3.3中规定的按引用表达和9.3.2中规定的外部表达。注1:相同的一个实体实例可能既被表达成一个从属实体实例,又被表达成一个独立实体实例。区别并不在于这个实体实例的本质,而在于出现的位置。注2:当一个EXPRESS实体实例是一个属性值或一个聚合值的组成部分(一个从属实体实例)时,它可能有一个不是一个实体实例元素的表达。见94和98。当一个EXPRESS实体实例被一个实体实例元素【任何一种)表达时,它应该被一个与EXPRESS实体数据类型对应类型的实体实例元素表达,这个EXPRESS实体数据类型图征那个实例(见8.5.2)。例外:如果配置指令tagsource应用于表征这个实例的EXPRESS实体数据类型,并且实体实例中的tagsource属性值匹配相应的tagvalues名称之一,EXPRESS实体实例应该被一个与8.5.11中规定的动态子类对应类型的实体实例元素表达。但是如果实例中的tagsource属性值不与任何tagvalues名称匹配,与这个EXPRESS实体数据类型对应的一个实体实例元素应该被使用。注3:当tagsource指定的EXPRESS属性值是tagvalues名称之一.相应的动态子类是恰好是表征该实体实例的那个类型。——如果没有EXPRESS数据类型图征这个实例,但是这个配置文件指定一个表征这个实例的组150 GB/T16656.28—2010/iso10303-28:2007合实体数据类型(见8.5.4.5),这个实例应该被与这个综合实体类型对应类型的实体实例元素表达。一如果没有EXPRESS数据类型图征这个实例,并且没有组合实体数据类型图征这个实例,这个实例应该被一个9.3.4中规定的exp:complexEntity元素表达。9.3.1实体实例的值表达表达一个实体实例的取值实例元素应该有XML元素类型,如8.5.5中所述,这个XML元素类型与表征这个实例(见9.3)的EXPRESS实体数据类型对应。例外:当这个取值实例元素把这个实体实例表达成其他某个实体实例的一个EXPRESS属性值,并且配置指令expattribute一”attributetag”应用于那个EXPRESS属性(见10.5.1.3)时,XMI。元素类型应该如9.4.3.4中的指定。注1:表征这个实例的EXPRESS实体数据类型可能是一个如上面讨论的综合数据类型。当这个取值实体实例元素表现为序列化单元元素的一个直接子元素时,实体实例元素应该有一个局部XMI.标识符和一个id属性,这个id属性的值应该是那个标识符。当这个取值实体实例元素(表达一个associated关联实体实例)出现在另一个取值实体实例元素(owning实体实例)的内容中:一如果配置指令use—id一”true”应用于关联实体实例(见10.5.2),与关联实体实例对应的按值元素应该有一个局部XMI。标识符和一个id属性,这个id属性的值应该是那个标识符。一如果配置指令USeid--”{alse”应用于关联实体实例,这个id属性不应该出现在取值元素中。当这个取值实体实例元素(表达一个singleentityvalue)出现在一个exp:complexEntity元素的内容中时,它应该如9.3.4.2中指定。ref属性不应该在取值实体实例元素中出现。proxy属性不应该在取值实体实例元素中出现。href属性不应该在取值实体实例元素中出现。edo属性可以在取值实体实例元素中出现。如果出现了,它的值应该是实体实例的某个标识符,用来在某个“企业命名空间”(见9.2.6.5)中标识实体实例。注2:GB/T16658的本部分没有规定edo属性的用法。旨在提供实体实例的一个通用标识符,与实体实例的一个专用编码的标识符区别开来。它可能提供一个比序列化单元范围更大的标识符,或者声明这个序列化单元中的编码与同一个实体实例的另一个编码等同。按值实体实例元素应该包括实体实例中的EXPRESS属性值的表达,正如9.3.1.1~9.3.1.4中所描述的。一个EXPRESS实体实例,它的按值表达有~id属性,应该在序列化单元中只被值表达一次。注3:edo属性可以用来指出两个按值实体实例元素表达同一个实体实例。9.3.1.1显示属性的编码对于实体数据类型的每一个EXPRESS强制显示属性,该属性不是一个tag—source属性(见10.2.17),也没有被keep一”false”配置指令(见10.3.5和10.2.11)所删除,这个按值实体实例元素应该包括实例中EXPRESS属性值的表达,正如9.4中所描述的。对于实体数据类型的每一个EXPRESSOPTIONAL属性,该属性不是由一个inverse配置指令(见10.3.5)倒置的,针对该属性,实体实例有一个值,按值实体实例元素应该包括实例中那个EXPRESS属性值的一个相应表达,正如9.4中所描述的。如果这个实体实例没有那个属性的值,在这个实体实例元素的内容中就没有相应的XML元素或XMI,属性。注:显示属性的运用在93l_3中规定,这些显示属性是由inverse指令倒置的。tagsource属性的运用在93.1.2中规定。示例:一个实体实例的例子,这个实体实例有一个属性,这个属性的值仍然是一个实体实例:EXPRESS表达:ENTITYdimensional—exponents;】51 GB/T16656.28—2010/ISO10303—28:2007lengthexponent:INIEGER;Ⅱlass—exponent:INTEGER;timeexponent:Ih”FEGER;electric—currentexponent:INTEGER;temperature_exponent:INTEGER;amount—of—substanceexponent:INTEGER;luminousIntensity_exponent:INTEGER;ENDENTITY;ENTITYnamedunit;dimensions:dimensionalexponents;unit—type:unitenum;name:STRING;ENDENTITY;XML表达:(Namedunltid=”cubicmetre”)3</Length_exponent>0</Massexponent>(Time—exponent>0(/Timeexponent>(Electric—currentexponent)0(/Electric—current—exponent)(Temperatureexponent)0(/Temperatureexponent>(Amountof—substallce—exponent>0(/Amauntof—substance—exponent)cubic—metre</Name>(/Named_unit>9.3.1.2标记源属性的编码对于实体数据类型的显示属性,这个实体数据类型是tagsource属性(见10.2.17),如果有的话,显示属性应该如下表达:——如果tagsource属性值与相应的tagvalues列表中一个名称匹配,取值实例元素不应该包括那个属性值的表达,但是实例元素标记应该被相应地选择(见9.3)。——如果tag—source属性值不与相应tag—values列表中任一名称匹配,取值实例元素应该包括那个属性值的表达,正如9.4中所描述的。9.3.1.3INvERSE和倒置属性的编码对于实体数据类型的每个强制或OPTIONAI。显示属性,该属性是由一个inverse配置指令(见10.3.5)倒置的,这个显示属性应该被当作声明为INVERSE,并且如下表达:——如果keep=”true”应用于这个显示属性(见10.5.9),并且这个屑性在实体实例中有一个值,取值实例元素应该包括那个属性值的~个表达,正如9.4中所描述的。然而,出现在那个属性值中的每个EXPRESS实体实例应该通过引用表达,即配置指令content一”re{”应该总是应用而不考虑任何与它相冲突的指令。——如果keep一”false“应用于这个属性,或者这个属性在这个实体实例中没有值,这个属性在取值实例元素中不应被表达。注:倒置属性是有效地SET[o:?]OF(x)。针对上面的每一个要求.当这个集合为空时——投有其他实体实例152 GB/T16656.28—2010/lSO10303—28:2007以这种方式确切和它关联存取访问并不表现为空集或有一空值;该集合被一起省略。对实体数据类型的每一个INVERSE属性,该属性由一个inverse配置指令倒置,并且对这个实体数据类型的每一个新的显示属性,该属性由一个inverse配置指令(见10.3.5)创建,这个属性应该被当作它声明实体数据类型的一个显示属性,按值实体实例元素应该包括实例中新的/INVERSE属性值的一个表达,正如9.4中所描述的。实体数据类型的每个INVERSE属性,该属性没有被一个inverse配置指令影响,应该在按值实体实例元素中表达,如下所示:——如果keep=”true”应用于这个INVERSE属性,并且这个属性在实体实例中有一个值,取值实例元素应该包括那个属性值的一个表达,正如9.4中所描述的。然而,出现在那个属性值中的每个EXPRESS实体实例应该通过引用表达,即,配置指令content一”ref“应该总是应用而不考虑任何冲突指令。如果keep一”false”应用于这个属性,或者这个属性在这个实体实例中没有值,这个属性在取值实例元素中不应被表达。9.3.1.4DERIVEd属性的编码实体数据类型的每个DERIVEd属性应该在按值实体实例元素中表达,如下所示:——如果keep=”true”应用于这个DERIVEd属性,并且这个属性在实体实例中有一个值,这个值对前置处理器是可用的,按值实体实例元素应该包括那个属性值的一个表达,正如9.4中所描述的。然而,出现在那个属性值中的每个EXPRESS实体实例应该通过引用表达,即配置指令content一”ref”应该总是应用而不考虑任何与它相冲突的指令。⋯u如果keep--”false”应用于这个DERIVEd属性,或者这个属性没有对这个前置处理器可用的值,这个属性在取值实例元素中不应被表达。9.3.2EXPRESS实体实例的外部表达当EXPRESS实体实例在一个单独的序列化单元中描述,在相应的序列化单元元素中按值(和它引用的其他实例一起)表达时,它可能由外部引用(externalreference)包括在活动序列化单元元素中,正如本条所描述的。每一个从一个序列化单元中元素到另一个序列化单元中元素的引用应该使用一个外部引用,即使两个序列化单元元素在同一个XMl。文档中。对一个EXPRESS实体实例的外部引用可能采用下面两种方式之一:一是通过路径实例元素,如9.3.2.2中所描述的,二是通过代理实例元素,如9.3.2.1中所描述的。没有序列化单元包括两种方式:一个序列化单元应该要么对所有外部引用使用通过代理实例元素,要么对所有外部引用使用通过路径实例元素。注1:一个通过路径元素比较简单,但是当序列化单元将包括很多对同一外部表达实体实例的引用时,每个通过路径元素将包括完全外部引用,并且如果外部实体实例被移动了,那么每个这样的元素将不得不改变。因此.通过路径元素在引用同一个复合文档中不同序列化单元元素的实例元素时是最有用的。相比之下,一个单一的代理元素表达序列化单元内所有通过代理引用的外部实体实例,还支持更多的复合存取机制。这使得通过代理方法对固定外部信息集合的引用更有用。上面排除规则的目的就是避免存在同一个序列化单元包括对同一资源引用的两个不同结构。术语外部引用元素(externalre{erenceelement)既适用于通过路径的实例元素,也适用于通过代理的实例元素,并且下面的所有都适用于两者:表达一个实体实例的外部引用元素应该有与表征(见9.3)的EXPRESS实体数据类型一致的XML元素类型(如8.5.5中所规定的)。例外:当外部引用元素把这个实体实例描述为某个其他实体实例的EXPRESS属性值,并且配置指令exp—attribute一”attribute—tag”应用于那个EXPRESS属性时,XMI.元素类型应该如9.4.3.3所描述。注2:表征这个实例的EXPRESS实体数据类型可能是一个合成数据类型,如上所讨论的。外部引用元素的内容应该是空的,并且外部引用元素应该有属性xsi:nill=”true”。153 GB/T16656.28—2010/ISO10303-28:2007id属性不应该在外部引用元素中出现。ref属性不应该在外部引用元素中出现。edo属性不应该在外部引用元素中出现。9.3.2.1通过一个通过代理实例元素表达当外部引用元素是一个通过代理实例元素时,本条应该适用。序列化单元应该包括一个与实体实例的EXPRESS数据类型一致的代理元素,这个实体实例如8.5.8所描述,它提供对一个按值实体实例元素(见9.3.1)的完全引用,这个按值实体实例元素表达其他某个序列化单元中实体实例。代理元素应该有一个局部XML标识符,id属性在这个代理元素中应该出现,并且它的值应该是那个标识符。authority属性在这个代理元素中应该出现,并且它的值应该是一个符合IETFRFC2396的URI,URI定位包括取值实例元素的一个资源。在需要的地方,代理元素应该包括附加关键属性,这些附加关键属性的值用来通过那个资源(见8.5.8)获取取值实例元素。注:代理元素引用的序列化单元可能出现在当前iso一10303—28元素中或认为对后处理器是有用的其他某个资源中。在大多数情况,没有附加关键属性是必须的。edo属性可能出现在代理元素中。如果edo属性出现在代理元素中,它应该也出现在代理元素引用的按值实体实例元素中,并且值应该是一样的。通过代理实例元素应该有XMI。属性proxy,并且它的值应该是这个代理元素的局部XMI.标识符,这个代理元素提供实体实例的按值表达的完全引用。.hreI属性不应该出现在通过代理实例元素中。示例:使用9.3.1.1中的EXPRESS模式,并且这里的按值表达和序列化单元中的按值表达一样,由URI:starsup—plier.com:units指定,以XMI,形式:(Named_unitKeyid=”unitll”authority=”URI:starsuppliercom:units’’instance-id=”cubicmetre”/)9.3.3EXPRESS实体实例的通过引用表达一个EXPRESS实体实例的通过引用表达,当这个实体实例在序列化单元元素中别的某处按值表达时,它可能被使用。只有当一个实体实例元素包含在另一个实体实例元素的通过值表示中时,才使用通过引用表示。表达一个实体实例的通过引用实例元素应该有与特征化这个实例(见9.3)的EXPRESS实体数据类型一致的XMI。元素类型,如8.5.5中所规定的。例外:当配置指令expattribute一”attribute—tag”应用于这个EXPRESS属性,这个EXPRESS属性的值由这个通过引用实体实例表达时,XML元素应该如9.4.3.3所描述的。注l:表征这个实例的EXPRESS实体数据类型可能是一个合成数据类型,如9.3中所讨论的;或者exp:complex】54 GB/T16656.28—2010/]so10303-28:2007Entity实例元素可能被使用,如9.341中所描述的。通过引用实例元素的内容应该是空的,并且通过引用实例元素应该有属性xsi:nill--“true”。id属性不应该在通过引用实体实例元素中出现。proxy属性不应该在通过引用实体实例元素中出现。hre{属性不应该在通过引用实体实例元素中出现。edo属性不应该在通过引用实体实例元素中出现。序列化单元应该(在某处)包括一个表达这个实体实例的按值实体实例元素。按值实体实例元素应该有一个局部XMl.标识符;如9.3.1中所规定的。ref属性应该在通过引用实体实例元素中出现,并且它的值应该就是那个局部XMI.标识符。注2:没有通过引用实例元素能够引用一个取值实例元素,这个取值实例元素包括在另一个取值实例元素中,除非使用use—id=”true”(见93.1)。注3:引用XMI。属性的值总是引用同一个序列化单元内的取值实例元素。每个从一个序列化单元中的元素到另一个UOS中的元素的引用使用一个外部引用元素,如932中所规定的,即使两个序列化单元元素在同一个XMI。文档中。示例:使用93.11中的EXPRESS模式,并且这里的按值表达与序列化单元中别的某处的”cubicmetre“实体实例的按值表达一样.”cubicmewe”实体实例被表达为一个measure—with—unit实体的~个属性值。EXPRESS表达:ENTITYmeasure_with-unit;measurevalue:REAL;unit:namedunit;ENDENTITY;XML表达:(Measurewithunitid=”m304”>(Unit)</Measure_with_unit>9.3.4EXPRESS实体实例的复合实体表达复合实体表达应该只被一个实体实例使用,这个实体实例并不以相关语境模式中的任何实体数据类型为特征,也不以任何合成实体数据类型为特征。注:本特征类似于GB/T1665621的”externalmapping“特征。一个不表示特征的复合实体实例应该通过引用或值表达,正如下面所描述的。对一个不表示特征的实体实例没有外部表达。9,3,4.1不表示特征的实体实例的通过引用表达当复合实体实例是由引用表达,这个表达应该如9.3.3中所描述的,有以下例外:——exp:complexEntity实例元素应该被用来代替(不存在的)表征这个实例的实体实例元素。——相应的取值实例元素应该如9.3.4.2所描述。9.3.4.2不表示特征的实体实例的按值表达表达一个不表示特征的实体实例的取值实例元素应该有XMI。元素类型exp:eomplexEntity(见8.5.3.5)。例外:当这个取值实例元素把这个实体实例描述为其他某个实体实例的一个EXPRESS属性值,并且配置指令exp—attribute一”attribute—tag”应用于那个EXPRESS属性(见10.5.1.3),XML元素类型应该如9.4.3.4所描述的。当按值exp:eomplexEntity元素表现为序列化单元元素的一个直接子元素,这个元素应该有一个局部XML标识符和一个id属性,这个id属性的值应该是那个标识符。】55 GB/T16656.28—2010/mo10303—28:2007当按值exp:complexEntity元素(表达一个associated实体实例)出现在另一个按值实体实例元素(owing实体实例)的内容中:——如果配置指令use—id一”true”应用于关联实体实例(见10.5.2),exp:complexEntity元素应该有一个局部XML标识符和一个id属性,这个id属性值应该就是那个标识符。——如果应用配置指令useid一”false”,id属性不应该在这个exp:complexEntity元素中出现。下面属性不应该在按值exp:complexEntity元素中出现:ref,proxy,href。entities属性应该在exp:complexEntity元素中出现。它的值应该是用空格分开的XML名称列表,这些XMI,名称与关联于复合实体实例(见8.5.3)的类型图中的leaf节点相关。edo属性应该在exp:complexEntity元素中出现。如果出现了,它的值应该是实体实例的某个标识符,该标识符用来在某个“enterprisenamespace(企业命名空间)”(见9.2.6.5)标识实体实例。注l:GB/T16656的本部分并没规定edo属性的用法。它本想提供实体实例的一个全局标识符,用来与这个实体实例特别编码的一个标识符区分开来。它可能提供比序列化单元范围大的一个标识符,或者指出这个序列化单元中与同一个实体实例的另一个编码等同的编码。一个EXPRESS实体实例的按值表达有一个id属性,这个EXPRESS实体实例应该在序列化单元中按值只表达一次。注2:edo属性能够用来指出两个按值exp:complexEntity元素表达同一个实体实例。按值exp:complexEntity元素的内容应该如下:对每一个在复合实体实例中实例化的实体数据类型,这个复合实体实例是这个关联类型图(见8.5.3)的root,exp:complexEntity元素应该包括一个按值实体实例元素。被包括的按值元素应该有XML元素类型,正如0中所规定的,与根实体数据类型一致。它不应该有以下XMI。属性:id,ref,href,proxy,edo。它应该包括EXPRESS属性值的表达,这些EXPRESS属性在根实体的EXPRESS实体声明中说明,并且出现在实体实例中。每一个这样的属性应该如9.3.1.1~9.3.1.4中规定的表达。对例示在复合实体实例中的每一个子类,即不是关联类型图的根的每个实体数据类型,exp:complexEntity元素应该包括一个单个实体值元素。这个单个实体值元素应该有XMI,元素类型,如8.5.7中规定的,与子类一致。它应该包括EXPRESS属性值的表达,这些EXPRESS属性在子类的EXPRESS实体声明中说明,并且出现在实体实例中。每一个这样的属性应该如9.3.1.1~9.3.1.4中规定的表达。9.4EXPRESS属性的表达本条规定在按值实体实例元素中表达EXPRESS属性值的规则,这个按值实体实例元素表达这个实体实例。这个表达依赖于应用于这个EXPRESS属性的配置指令,如果有的话,还依赖于这个EX—PRESS属性的数据类型。EXPRESS属性的值可能根据应用的配置指令的不同采取引用(byreference)或取值(byvalue)表达,见9.4.1中的描述。如果配置指令exp—attribute一”attribute—content”应用于EXPRESS属性,对应的EXPRESS属性的值应该如9.4.2中规定的编码。如果配置指令expattribute--”attributetag”应用于EXPRESS属性,对应的EXPRESS属性的值应该如9.4.3中规定的编码。如果配置指令expattribute=”doubletag”应用于EXPRESS属性,对应的EXPRESS属性的值应该如9.4.4中规定的编码。如果配置指令exp—attribute--”typmtag”应用于EXPRESS属性,对应的EXPRESS属性的值应该如9.4.5中规定的表达。如果配置指令exp—attribute一”130—tag”应用于EXPRESS属性,对应的EXPRESS属性的值应该如9.4.6中规定的表达。156 GB/T16656,28—2010/ISO10303-28:2007注:exp-attribute--”notag”只能应用于值是实体实例的EXI’RESS属性。9.4.1决定by-reference或by-value表达EXPRESS属性值可能根据应用的配置指令不同采用byreference或byvalue方式的表达,如下:——如果配置指令content--”value”应用于这个EXPRESS属性,或者配置指令content--“unspecified”应用于这个ExPREss属性并且exl}type--”value”应用于这个EXPRESS属性值的数据类型,这个值的表达应该按值。——如果配置指令content一”ref”应用于这个EXPRESS属性,或者配置指令content一”unspeci—fled”应用于这个EXPRESS属性并且exptype=”root”应用于这个EXPRESS属性值的数据类型,这个值的表达应该按引用。——如果配置指令content一”unspecified”应用于这个EXPRESS属性并且exptype一”unspecified”应用于这个EXPRESS属性值的数据类型,这个值的表达可以按引用或按值。注:这个值的实际数据类型,而不是这个属性的声明数据类型,当内容=“未规定”应用于这个属性时确定表达规则。对一个给定值按引用和按值表达的更进一步要求依赖于这个值的EXPRESS数据类型,还依赖于应用的配置指令expattritmte的值,如下面条描述的。9.4.2EXPRESS属性值作为存取访问属性的表达如果配置指令exp—attribute一”attribute—content”应用于EXPRESS属性,EXPRESS属性应该在固有实体实例元素中由相应的存取属性(见8.6)表达。EXPRESS属性值应该如下编码:——如果EXPRESS属性的数据类型是实体数据类型,则序列化单元应该(在某处)包括一个取值实体实例元素,如9.3.1描述,或一个代理元素,如9.3.2.1描述,表达关联实体实例。取值实体实例元素或代理元素应该有一个局部XML标识符;并且存取访问属性的值应该是那个局部XMI,标识符。——如果EXPRESS属性的数据类型不是实体数据类型,并且根据9.4.1需要该值的引用表达,则这个值应该在一个取值实例元素中编码,见9.10描述。取值实例元素应该是序列化单元元素的一个直接子元素,并且应该有一个局部XML标识符。存取访问属性的值应该就是那个局部xML标识符。——如果EXPRESS属性的数据类型是原始的数据类型(BINARY,BOOI。EAN,INTEGER,I。OGICAI。,NUMBER,REAL或STRING):并且根据9.4.1允许取值表达,则这个值应该在存取访问属性的值中根据它的数据类型编码,见9.5的描述。——如果EXPRESS属性的数据类型是聚合数据类型,值列表表达适用于该聚合数据类型(见8.2.2),并且根据9.4.1允许取值表达,则这个值应该在存取访问属性的值中编码,见9.8.1的描述。——如果EXPRESS属性的数据类型是聚合数据类型,可应用除值列表外的任何表达,包括聚合表达的所有集合,都适用于这个聚合数据类型(见8.2.2),则这个值应该在一个取值实例元素中编码,如9.10中描述的。这个实例元素应该是序列化单元元素的一个直接子元素,并且应该有一个局部XML标识符。存取访问属性的值应该就是那个局部XML标识符。——如果EXPRESS属性的数据类型是基本类型为ENuMERATl0N数据类型的EXPRESS自定义数据类型,并且根据9.4.1允许按取值表达,则这个值应该在存取访问属性的值中编码,见9.6的描述。——如果EXPRESS属性的数据类型是基本类型为SELECT数据类型的EXPRESS自定义数据类型,则这个值应该在取值实例元素中编码,见9.7的描述。该实例元素应该是序列化单元元素的一个直接子元素,并且应该有一个局部XML标识符。存取访问属性的值应该就是那个】57 GB/T16656.28—2010/ISO10303—28:2007局部xML标识符。——如果EXPRESS属性的数据类型是基本类型为原始数据类型或聚合数据类型的自定义数据类型"贝Ⅱ这个值应该如上面对基本类型一样进行编码。注l:对于存取访问属性,当它是一个实体实例、一个SE[。ECT数据类型的值或当它是一个不使甩值列表形式的聚合值时.94.1并不影响属性值的编码。在这些情况下.表达总是日{用表达。此外.当9.4.1允许取值表达时.则属性就必须采用取值表达。注2:当这个值是引用表达时,存取访问属性的值总是在同一个序列化单元内引用一个取值实例元素。注3:除非引用是针对一个use-id=“true”应用(见9.3.I)的实体实例,这个取值实例元索总是序列化单元的一个直接子元素一一没有存取访问属性能够引用一个包含在另一个取值实捌元素中的取值实体实例元素。注4:从~个序列化单元中一个存取访问属性到另一个序列化单元中一个实体实例元素的引用,甚至当两个序列化单元元素在同一个XML文档时.需要一个代理元素。存取访问属性并不支持按路径表达(见93.22)。9.4.3EXPRESS属性值的Attribute-tag表达如果配置指令exp—attribute=”attribute—tag”应用于EXPRESS属性,其属性值应该按照本条的描述表达。如果值是一个实体实例:——如果按照9.4.1允许该值的引用表达,则该实体实例应按照9.4.3.3的描述编码。——如果按照9.4.1要求该值的取值表达,则该实体实例应按照9.4.3.4的描述编码。如果值不是一个实体实例:——如果按照9.4.1要求该值的引用表达,或者按照9.4.1允许该值的引用表达且前置处理器选择采用引用表达,则该值应该按照9.4.3.1的描述编码。——如果按照9.4.1要求该值的取值表达,或者按照9.4.1允许该值的取值表达且前置处理器选择采用取值表达,则该值应该按照9.4.3.2的描述编码。注:除特殊情况外,前置处理器应该使用非实体实例值的取值表达。9.4,3.1引用的Attribute-tag表达该值应该在与其实际EXPRESS数据类型对应的类型的取值实例元素中编码。如果这个值是一个实体实例,则该取值实例元素应符合9.3.1的描述;否则它应符合9.10.I的描述。在这两种情况下,该实例元素都应该是序列化单元元素的直接子元素并且应该有一个局部XML标识符。注;这个实例元素符合于这个值的实际数据类型,不一定符合于这个EXPRESS属性的声明数据类型。特别地,实体数据类型的实例根据它们表现特性的类型编码,并且一个SEI,ECT类型的实例根据它们的实际数据类型编码,但解释为一个自定义数据类型值的值相当于这个自定义数据类型使用这个实例元素。这个EXPRESS属性应该由相应的存取访问元素(见8.6)在自有的实体实例元素中表达。这个存取访问元素应该是空的(没有内容)。如果这个属性的EXPRESS数据类型不是一个SE—LECT数据类型,这个存取访问元素应该有XMI,属性xsi:nil一”true”。这个存取访问元素应该有XMI。属性ref,并且它的值应该是编码值的实例元素的局部XML标识符。这个存取访问元素应该没有其他描述这个值的XMI。属性。在适合的地方,这样的属性应该总是出现在取值实例元素中。9+4.3,2取值的Attribute-tag表达该EXPRESS属性应该由相应的存取访问元素(见8.6)在自有的实体实例元素中表达。EXPRESS属性的值应该根据这个属性的EXPRESS数据类型在存取访问元素的内容中编码,这些EXPRESS数据类型如下:——如果数据类型是原始的数据类型(BINARY,BOOLEAN,INTEGER,LOGICAL,NUMBER,REAL或STRING),则该值应该按9.5的描述编码。——如果数据类型是聚合数据类型,则该值应该按9.8的描述编码。】58 GB/T16656.28—2010/too10303-28:2007——如果数据类型是基本类型为BINARY,BOOI.EAN,INTEGER,I。OGICAI。,NUMBER,REAI。或STRING的自定义数据类型,则该值应该按9.5中基本类型的描述编码。——如果数据类型是基本类型为聚合数据类型(ARRAY,BAG,LIST或SET)的自定义数据类型,T),则该值应该按9.8中基本类型的描述编码。——如果数据类型是基本类型为ENuMERATIoN数据类型的自定义数据类型,则该值应该按9.6的描述编码。——如果数据类型是基本类型为SELECT数据类型的自定义数据类型,则该值应该在取值实例元素中编码,它符合这个值的实际数据类型,如9.10.1中描述。注:数据类型名义上是一个SEI。ECT数据类型的EXPRESS属性当“取值”表达时可有效地表示成”double-tag”。9.4.3.3实体实例引用的Attribute-tag表达EXPRESS属性应该由类型符合于EXPRESS属性(见8.6)的存取访问元素在自有的实体实例元素中表达。存取访问元素在除元素标记外的每个地方都应该表达关联实体实例就好像它是一个引用实例元素,如9.3.3中描述,或是一个外部引用元素,如9.3.2中描述。即它应该有空内容和9.3.2或9.3.3中描述的确定的XML属性值。如果这个表达是作为一个外部引用元素,并且表征这个关联实体实例的数据类型并不直接符合存取访问元素的声明XML数据类型,这个元素应该有,并且它的值应该与XML数据类型一样,这个XML数据类型符合表征关联实体实例的EXPRESS数据类型,如8.5.3.5中描述。如果这个表达就好像它是一个引用元素,存取访问元素不需要包括xsi:typeXMI。属性。9.4.3.4实体实例取值的Attribute-tag表达EXPRESS属性应该由类型符合于EXPRESS属性(见8.6)的存取访问元素在固有实体实例元素中表达。存取访问元素应该表达关联实体实例好像它正是一个取值实例元素,如9.3.1中描述,有以下例外:——元素标记应该符合于固有属性,而不符合于关联实体实例的数据类型。——如果表征关联实体实例的数据类型并不直接符合于存取访问元素的声明XML数据类型,存取访问元素应该有xsi:typeXMI。属性,并且它的值应该是XMI。数据类型的合格名,这个XML数据类型符合于表征关联实体实例的EXPRESS数据类型,如8.5.3.5中描述。——不管use—id的设置如何,id属性都不应该在这个元素中出现。9.4.4EXPRESS属性值的doable-tag表达如果配置指令exp-attribute--”doubletag“应用于EXPRESS属性,这个EXPRESS属性应该由相应的存取访问元素(见8.6)在固有实体实例元素中表达。存取访问元素的内容应该是一个表达EX—PRESS属性值的单个实例元素。如果这个值的按引用表达在9.4.1中需要,或这个值的按引用表达在9.4.1中允许,并且前置处理器选择采用按引用表达,那么这个值应该如9.4.4.1中描述的编码。如果这个值的按值表达在9.4.1中需要,或这个值的按值表达在9.4.1中允许,并且前置处理器选择采用按值表达,那么这个值应该如9.4.4.2中描述的编码。9.4.4.1引用的doublmtag表达EXPRESS属性应该由相应的存取访问元素(见8.6)在固有实体实例元素中表达。如果这个值是一个实体实例(称为关联实体实例),存取访问元素的内容应该是一个表达值的单个引用实例元素,如9.3.3中描述,或是一个如9.3.2中描述的外部引用实例元素。如果这个值不是一个实体实例,存取访问元素的内容应该是一个表达值的单个引用实例元素,如9.10.2中描述。9.4.4.2取值的doublmtag表达EXPRESS属性应该由相应的存取访问元素(见8.6)在固有实体实例元素中表达。 GB/T16656.28—2010/ISO10303·28:2007如果这个值是一个实体实例,存取访问元素的内容应该是一个表达关联实体实例的单个取值实例元素,如9.3.1中描述。注:在这种情况下,td属性的出现依赖于配置指令use—id。如果这个值不是一个实体实例,存取访问元素的内容应该是一个表达值的单个取值实例元素,如9.10.1中描述。9.4.5EXPRESS属性值的Type-tag表达如果配置指令expattribute=”typetag”应用于EXPRESS属性(见10.5.1.2),这个EXPRESS属性值应该由零个或多个实例元素在实体实例元素的内容中表达。注1:没有类型标记值的存取访问元素。存取访问元素被零个或多个表达属性值的实例元素取代,即存取访问元素被本应是它内容的元素取代。注2:exl>attribute一”type-tag”只应用于数据类型是命名数据类型或命名数据类型集合的EXPRESS属性.并且这些实例元素应该与相应的XMI。名称一起标记。如果EXPRESS属性的值是匿名聚合数据类型的一个值,并且没有组成元素,那么这个值不应该在实体实例元素的内容中表达,即它由零个实例元素表达。如果EXPRESS属性的值是一个单一实体值,它应该由符合这个值的一个实体实例元素在固有实体实例元素中表达。如果这个值的按引用表达在9.4.1中需要,这个值应该如9.3.2或9.3.3中描述的编码。如果这个值的按值表达在9.4.1中需要,这个值应该如9.3.1中描述的编码。如果两者都允许,这个值应该按前置处理器的意思采用9.3中描述的表达之一编码。如果EXPRESS属性的值是一个自定义数据类型的单个实例,它应该由符合这个值的一个实例元素在固有实体实例元素的内容中表达。如果这个值的按值表达在9.4.1中需要,这个值应该如9.10.1中描述的编码。如果这个值的按引用表达在9.4.1中需要,这个值应该如9.10.2中描述的编码。如果两者都允许,这个值应该按前置处理器的意思如9.10.1或9.10.2中描述的编码。如果EXPRESS属性的值是一个至少有一个组成元素的聚合值,它应该由一系列实例元素在固有实体实例元素的内容中表达,这序列中的每一个实例元素都表达它的一个组元值,如9.8.7中描述。对于9.8.7的目的,应用于这个EXPRESS属性的配置指令content的值应该解释为应用于所有的组元值。注3:对于类型标记属性,配置指令content被解释为应用于聚合值的每一个组元而非应用于这个聚合值。注4:除非在特别情况下,当前置处理器有选择时,它应当使用不是实体实例的值的按值表达。注5:除非由配置指令另作说明,对这一系列实例元索是同一种类没有要求。即一些可能是按值表达,一些是按引用表达,并且还有一些是外部的。注6:因为满足EXPRESS属性数据类型的实体实例可能属于不同的子类,实体实例元素上的XML标记不需要直接符合于EXPRESS属性的数据类型,并且对聚合值不同组件的XML标记可能不同。相似地,当定义数据类型是SELECT数据类型时,每个值将按它满足的EXPRESS数据类型的一个实例编码。实例元素上的XML标记将不会直接符合于EXPRESS属性的数据类型,而是符合于工作选择列表的成员之一,并且聚合值不同组件的XMI,标记可能不同。9.4.6实体实例的No-tag表达作为EXPRESS属性值如果配置指令expattribute=”notag”应用于EXPRESS属性(见10.5.1.5),这个EXPRESS属性的值应该是一个称为associatedentityinstance实体实例,把它和具有这个属性且称为owningentityinstance的实体实例区别开来。这个关联实体实例应该由与这个关联实体实例的EXPRESS属性一致的一系列存取访问元素或存取属性在固有实体实例元素中表达。即这个固有实体实例对这个关联实体实例的每一个EXPRESS属性都应该有一个存取访问,并且这个关联实体实例不应该有一个特别的表达。这个关联实例的每一个EXPRESS属性值都应该编码,如9.3.1中描述,就好像它是这个固有实体实例的一个相应属性值。注:对无标记值投有存取访问元素。存取访问元素由符合于这个关联实体实例属性的存取访问元素替代。即这个】60 GB/T16656.28—2010/iso10303—28:2007存取访阃元素由本应是它内容的元素替代。9.4.7实体实例的No-tag-simple表达作为EXPRESS属性值如果配置指令exp—attribute=”notag—simple”应用于这个EXPRESS属性(见10.5.1.6),那么这个EXPRESS属性的值应该是一个XMI。文本节点。9.5简单值的表达本条规定简单数据类型值的表达规则,作为XMI。元素的内容或XMI。属性的内容。注1:所有EXPRESS数据类型值的表达都是由简单值的表达构造而成的。每个值都应该根据它名义上的EXPRESS数据类型图达,如下所描述的。如果map配置指令应用于这个值(见10.5.4),这个值应该如XML模式部分2中规定的表达:map指令规定的XML数据类型。特定EXPRESS数据类型值表达上容许的map指令的作用面向下面每个EXPRESS数据类型加以描述。如果这个实际值不能表示为这个规定XMI.数据类型的一个有效值,这个值应该根据它的EXPRESS数据类型编码,如下所描述的,但是结果XMI。文档在配置的XMI。模式下将不会有效。注2:在多数情况下,map配置只影响XM[。模式中规定的XMI。数据类型,并不影响任何给定数据的表达。即所有10213允许表达一个给定EXPRESS数据类型的XMI,模式数据类型都使用共同的表达形式而只有允许值是不同的。因此一给定值的表达对所有可能由map指令规定的XMI。模式数据类型都是相同的,但不是(基本)EXPRESS数据类型的所有值都是所有能指定XML模式数据类型的有效值。map指令的目的是允许XML模式获得EXPRESS数据类型值或属性的约束,这个属性可能在EXPRESS模式的WHERE规则中给出或在实现协议中规定。9.5.1BINARY值的表达一个EXPRESSBINARY数据类型的值应该如XML数据类型hexBinary规定的表达,hexBinary在XML模式部分2:数据类型中,或如对XMI。数据类型base64Binary规定的表达,base64Binary在XMI。模式部分2:数据类型中,如果map配置指令(见10.2.13)所需要。如果BINARY值的长度,看起来是一个位字符串,不是八的倍数,这个值应该这样编码,最后八位字条的高位是有含义的,而最后八位字条的低位是零。extrabitsXMI。属性应该出现在内容是BINARY值的XML元素中。extrabitsXML属性值应该规定最后编码八位字条低位(o~7)的数目,这个最后编码八位字条并不解释为BINARY值的一部分。例外:extrabitsXML属性如果它的值是⋯0’那就不需要出现。即如果extrabits属性没有出现,那么最后编码八位字条的每~位都应该解释为BINARY值的~部分。9.5.2BOOLEAN值的表达EXPRESS数据类型BOOI,EAN的值应该如XML数据类型boolean规定的表达,boolean在XMI。模式部分2:数据类型中。注:对值TRUE的规定表达是字符序列“true”。对值FALSE的规定表达是字符序列”false”。示例;下例阐述类型BOOI。EAN的EXPRESS属性对它们相应XMI。表达的映射:EXPRESS表达:EMrI口caroairbag:BOOLEAN;sunroof:OPTIONALBOOLEAN;ENDENTITY;没有exl>attribute=”attribute_content”的XMI。实例数据:(Carid=”i100”)(Sunroof>0(/Sunroof)(/Car}有exp_attribute=”attribute-content”的XMI.实例数据:】6】 GB/T16656.28—2010/ISO10303—28:2007,Carid=”i100”Airbag=’’true”Sunroof=’10’’/、9.5.3INTEGER值的表达EXPRESS数据类型INTEGER的值应该如integer数据类型规定的形式表达,integer在XMI。模式部分2:数据类型中。注:表达形式由一个可选连字符号跟着一个或多个数字组成,连字符号(负号)的出现表示这个值是负的。如果相应于EXPRESS数据类型的XML模式数据类型由map配置指令(见10.2.13)规定成long,或integer的任何其他XML模式子类,这个整数值应该在那个XML模式数据类型规定的界限内。如果实际值不能表达成规定的XMI。数据类型的一个有效值,这个值应该如integer规定的编码,但是结果XML文档在配置XML模式下将不会有效。示例1:下面是表示数据类型为INTEGER的EXPRESS属性值的有效常量:INTEGER1012678967543233示例2:以下例子阐述了类型INTEGER的EXPRESS属性到它们对应XMI.数据的映射EXPRESS表达:ENTITYcar2mileage:INTEGER;weight:0PTl0NALn仃嘟R;END_ENTITY;没有exp-attribute=”attribute-content”的XML实例数据:(Mileage>14345</Mileage>(/Car>有expattribute=”attribute—content”的XMI.实例数据:true</Frontairbag>unknown(/Side_airbag)(/Car)有exDattribute=”attribute-contenl”的XML实例数据:(Car1d=”1100”Frontairbag=”true”Sideairbag=”unknown”/>】62 GB/T16656.28—2010/ISO10303-28120079.5.5NUMBER值的表达EXPRESS数据类型NUMBER的值应该如数据类型decimal规定的表达,decimal在XM[。模式部分2:数据类型中定义,除非map配置指令另有说明(见10.2.13)。注:符合XMI。模式decimal数据类型的内容数据的一般形式是一可选负号(连字符号),后面是一序列指定整数部分的一个或多个数字,选择性地跟着由一十进制小数点(句号或逗号)和一个或多个数字组成的分数部分,选择性地跟着由字母”e”或”E“,一符号/加号或连字符)和一个或多个数字组成的指数部分。如果相当于EXPRESS数据类型的XMI,模式数据类型由map配置指令规定成double或float,这个值应该如数据类型REAL(见9.5.6)规定的编码。9.5.6REAL值的表达EXPRESS数据类型REAI.的值应该如XML数据类型double规定的表达,double在XMI.模式部分2:数据类型中,除非map配置指令另有说明(见lo.2.13)。注:符合XMI。模式double和float数据类型的内容数据的一般形式与对XMl,数据类型decimal(见955的注)规定的一样,除了指数的范围是有限的。double和float数据类型也支持无穷值和异常值的表达。对正的无穷值规定的表达是字符序列“一nf¨。对负的无穷值规定的表达是字符序列”一·nf”。对异常值规定的表达是字符序列’。NaN“。如果对应EXPRESS数据类型的XMI.模式数据类型由map配置指令规定为decimal,这个值应该如9.5.5中数据类型NUMBER规定的表达。如果对应EXPRESS数据类型的XML模式数据类型是double或float,那么REAI。值应该在那个XMI。模式数据类型规定的界限内。如果实际值不能表达成规定的XMI.数据类型的一个有效值,这个值应该按照对decimal的规定进行编码,但是导出的XML文档在配置XML模式下将不会有效。对GB/T16656的本部分而言,REAI,导出的任何EXPRESS数据类型都被认为是由无穷值和异常值扩展而来的,只要那个数据类型被规定由double或float表达。在这样的情况下,无穷和异常值应该如对double或float数据类型规定的表达,double或float数据类型在XML模式部分l:结构中。示例1:下面是有效数据符号,它们可能被分配给表达EXPRESS类型REAI。或NUMBER值的一个XML属性:——1E—』41267.43233E+121278e_212iml示例2:以下例子阐述类型NUMBER和REAI,的EXPRESS属性到它们对应XMI。数据的映射:EXPRESS表达:ENTITYcar;power:NUMBER;mileage:RE乩:weight:OPTIONALREAL;ENDENTITY;没有exl}attribute=”attrmute_content”的XML实例数据:fCarid=”i100”)(Power>320《/Power>(Mileage>143457</Mileage>(Weight}23E+3(/Weight)</Car>有exp—attribute=”attribut}content”的XMI。实例数据:Ford(/Make)(carmodel)143457(/Car—model)(Options)(exp:string-wrapper>Leatherupholstery(/exp:string-wrapper)(exp:string-wrapper>Pr伽iumsoundpackage(/exp:string-wrapper)(/Options>(/Car>有expattribute一”attribute_content“的XML实例数据:(Carid=”iiO”Make=”Ford”car_model=”Explorer”>(exp:string-wrapper)Leatherupholstery</exp:string-wrapper)(exp:string-wrapper>Premiumsoundpackage(/exp:string-wrapper)(/Options)(/Car>t64 GB/T16656.28—2010/ISO10303-28:20079.6枚举项的表达EXPRESSENuMERATI()N数据类型的值——枚举项——应该用一个对应枚举项的XML字符串值表达,正如8.3.3中所描述的。示例:下面例子阐述了数据类型是ENuMERATIoN类型的一个EXPRESS属性到它的对应XML表达的映射:EXPRESS表达:TYPEbsplinecurveform=ENUMERATIONOF(elliptic—arc,circular—arc,parabolic—arc,hyperbolic—arc,polyline_form,皿speclfied);END_TYPE;ENTITYb—spline_curve;degree:INTEGER;curveform:bsplinecurveform;control—points:LIST[2:?]OFpt3d;ENnB册ITY;没有exp-attribute一”attribute-content”的XML实例数据:(B_spline_curveid=”b106”)(Degree>2</Degree>(Curveform)elliptic_arc</Curve_form>(Controlpoints>fPt3d)⋯</Pt3d)(Pt3d)⋯</Dt3d)(Pt3d>⋯</Pt3d></Control—points)(/B_spline—curve>有expattribute--”attribute—content“的XML实例数据:(Bspline_curveid=”b106”Degree=”2”Curve_form=”ellipticarc”>(Pt3d>⋯(/Pt3d)(Pt3d>⋯(/Pt3d>(/Control—points)(/Bspline_curve>9.7SELECT类型值的表达基本类型是SEI。ECT数据类型的EXPRESS自定义数据类型的值应该表达成符合于这个实际值的EXPRESS数据类型的一个实例元素(见8.4)。注1:这个值的EXPRESS数据类型总是一个自定义数据类型或实体数据类型。实例元素应该是XML模式group的一个有效成员,这个group对应自定义数据类型的基本类型SELECT。注2:如果这个名义上被表达的EXPRESS自定义数据类型是SEI。ECT数据类型的一个规范,它的对应XML数据类型是一个命名数据类型,这个命名数据类型是对应于SEI。ECT数据类型的complexType的一个限制,但是内容模型是一样的group。·当实际值是一个实体实例,这个实体实例的数据类型或它的一些父型出现在基本SEI,ECT类型(见8.3.4.2)的工作选择列表中,这个值应该编码为一个实体实例元素,如9.3中所规定,但是取值编码(见9.3.1)或引用编码的使用应该如9.4.1中描述的值被表达的属性编码。注3:当继承映射适用于这个实体实例,那这个实体实例元素可以表达出现在对应于SEI。ECT数据类型的group中的数据类型的一个子类。然而,它将是这个群的一个有效成员,依靠这个实体实例元素(见85.5)的置换群]65 GB/T16656.28—2010/[so10303-28:2007体特性。当这个实际值是一个出现在工作选择列表中的定义数据类型的一个实例时,这个实例元素应该对应于那个定义数据类型,如8.4.3中所描述的,并且这个值应该根据这个值的基本类型,如9.9中所描述的,在这个实例元素的内容中编码。注4:根据EXPRESS的规则,实际值不能是数据类型规范的一个实例,这个数据类型出现在工作选择列表中,除非那个规范本身出现在工作选择列表中。如果这个实例元素表达直接出现在这个基本SEI.ECT类型的选择列表中的一个EXPRESS数据类型,path属性不应该出现在这个实例元素中。如果这个实例元素不表达直接出现在基本SELECT类型的选择列表中的一个EXPRESS数据类型,path属性应该出现在这个实例元素中。这个path属性的值应该是一系列XMI。名称,这些XMI。名称符合于对实际在这个值中实例化的数据类型的所有一般化的EXPRESS标识符(见8.1.2)。这些XMI。名称应该由空格分开并且应该以从最外面SEI。ECT类型到最里面SEI。ECT类型的顺序出现。注5:上述规则处理嵌套的SELECT数据类型,即在这种情况下实际数据类型多余一个类型声明,这个类型声明是从要求的SELECT数据类型移除的。在这种情况下,这个实例元素的path属性规定“通过SEI。ECT图表的路径”,通过它到达这个值的实际数据类型。按GB/T1665611,“path”的意思就是这个实际值是这个路径上(和可能的其他路径上)的所有命名数据类型的一个实例。示例:下面例子阐述了一个EXPRESSSE[,ECT数据类型的一个实例的表达:EXPRESS表达:TYPELabel=STRING;RNnTYPE:TYPELength_measure=REAI.;EI∞_T"IPE;TYPETraffic_light=ENUMERATIONOF(red,yellow,green);END_TYPE;TYPEInner2SELECT(Label,Lengthmeasure);END_TYPE;ENTITYPipe;Name:STRING;END_ENTITY;TYPES2SELECT(Lengthmeasure,Traffic—light,Pipe,Inner);ENDTYPE;ENTITYA;sn:S;END_ENTITY;在2l部分文件中的关联实例数据:#i0=A(城NGTH—MEAsuRE(314));#20=A(LABEL(7Hello,world’));#30=A(TRAFFICLIGHT(RED));#40=A(#50);#50=PIPE(‘P1—1’);XML实例数据:(Aid=”i10”)(sn)(Length_measure-wrapper>314(/Length_measure-wrapper>(/Sn></A>(/Sn>f/A>red</Traffic—light>(/Sn></A>(Aid=”i40”)(Sn>,PipeName=”Pl一1“/、</Sn>(/A>上例中,expattribute=”attributecontent”为实体Pipe假定。exp—attribute的值并不影响实体A的编码。9.8聚合值的表达聚合值是EXPRESS聚合数据类型(ARRAY、BAG、IAST或SET)的一个值或基本类型是EXPRESS聚合数据类型的自定义数据类型的一个值。聚合值的成员值是组成聚合值的基类型的值。一个聚合值的表达依赖于被表达的EXPRESS数据类型,还依赖于应用于这个值的配置指令。在已给事件中一个聚合值的XML表达应该如表7中对聚合类型、基类型和应用于这个事件的tagless的组合规定,如下:——如果没有map指令应用于这个成员值(见10.5.4),这个基类型应该在这个聚合数据类型的EXPRESS声明中规定。如果map指令应用于这个成员值,并且这个命名XML数据类型的值空间只由不包括空格的值组成,那么,基类型应该被认为是一个simple数据类型,并且tagless的缺省值应该是true。如果map指令应用于这个成员值,并且这个命名XMI。数据类型的值空间包括包含空格的值,那么,基类型应该被认为是一个STRING数据类型,并且tagless的缺省值应该是false。——simple类型就是它们的XMI。表达具有simpleTypes,并且不包含空格,包括EXPRESS类型BOOI。EAN,INTEGER,LOGICAI。,REAl.和NUMBER,还包括由map配置指令映射到某些XMI。数据类型的已有数据类型(map配置指令定义如上),以及是以上任意类型的特殊化的自定义数据类型。——聚合类型的值应该如在聚合数据类型的EXPRESS声明中所规定的。在本表中,ARRAYOFOPTIONAL基类型被认为是一个不同聚合类型。——应用于这个聚合值的指令tagless的值应该如10.5中描述的。——配置指令的可应用数据类型性质和可应用值应该象表格中的列一样排序,并且在表的每一行和值一对一比较。——可应用性质的值或在列中的指令当且仅当它们是唯一时与一给定行中的那一列的值匹配。例外:指令的任何可应用值都与行中的一空白单元匹配。——可应用值将与表中确定的一行中的所有值匹配。聚合值的XMI,编码在于列中应该按照那一行的条描述进行标识。表7控制聚合值的XML表达聚合类型基类型无标记章条ARRAY/LISTSimple98.1ARRAY/LISTSimplefalse9.8.2ARRAY/LISTSTRING/B1NARY98.1 GB/T16656.28—2010/ISO10303—2812007表7(续)聚合类型基类型无标记章条ARRAY/I,ISTSTRlNG/BINARYfalse9.82ARRAY/LISTENUMERATION9.8.1ARRAY/I,ISTENUMERATIONfalse982ARRAY/1。ISTSFI。ECT982ARRAY/I,ISTDefineddatatype9.8.6ARRAY/LISTEntitydatatype98.4ARRAY/I。ISTEntitydatatypefalse98.2ARRAY/I。ISTAggregationdatatype98.5ARRAYoFoPTIoNALSimple9.8.3ARRAYOFOPHONALSTRING/BINARY98.3ARRAYoFoPTl0NALENUMERATION9.8.3ARRAYOFOPTIONALSELECT9.8.3ARRAYOFOPTIONAI.Defineddatatype986ARRAYOFOPTloNAI,Entitydatatype98.3ARRAY()FOPTlONALAggregationdatatype98.5SET/BAGSimple9.8.1SET/BAGSimplefalse9.8.2SET/BAGSTRING/BINARY981SET/BAGSTRING/BINARYfalse9.82SET/BAGENUMERATION981SET/BAGENUMERATl0Nfalse9.8.2SE-I/BAGSELECT98.2SET/BAGDefineddatatype9.8.6SET/BAGEntitydatatype9.8.4SET/BAGEntitydatatypefalse9.8.2SET/BAGAggregationdatatype9.8.59.8.1聚合值的值列表表达如果符合于EXPRESS聚合数据类型的XMI,模式数据类型有值列表形式,如8.2.2中所描述的,聚合值应该如本条描述的编码。注1:如果聚合值的基类型是BOOLEAN,INTEGER,LOGICAL,REAL或NUMBER,或基本类型是这些当中的一些的定义数据类型,8.2.2.3规定XMI。模式数据类型导出于xs:list。注2:如果基类型是一个自定义数据类型,这个自定义数据类型的基本类型是ENuMERAIoN类型,822.5规定XMI,模式数据类型导出于xs:list。注3:如果基类型是一个白定义数据类型,或是自定义类型的一个专门化,这个自定义数据类型由map配置指令(见10.2.13)声明为由一个XMI.数据类型图达,这个XMI,数据类型的值不包括空格.8.2.2.7规定XML模168 GB/T16656.28—2010/ISO10303-28:2007式数据类型导出于xs:list。注4:除上面注3中注解的外,如果基类型是BINARY、STRING、一个SELECT类型、一个实体数据类型或一个聚合数据类型,本条并不适用。但是本条可以应用于一个嵌套集合的聚合值的编码中。见9.8.5。聚合值应该(在存取访问元素的内容中,存取属性值中,或符合于这个聚合数据类型的实例元素的内容中)由一单个XMI,list值表达。这个聚合值的每个成员值都应该根据它的数据类型在list值中表达,当它的数据类型是ENuMERATION时如9.5中或9.6中所描述的。成员值的表达应该由空格分开,如XML模式部分2:数据类型中所描述。如果聚合值没有成员值,XMLlist值应该是字符的空序列。对EXPRESSARRAY值,成员值应该以从最低索引到最高索引的顺序出现。对EXPRESSlAST值,成员值应该以位置的顺序出现。对EXPRESSSET或BAG值,成员值应该以任意顺序出现,但是每个成员值应该和它在聚合值中出现的次数一样。当成员值是EXPRESS数据类型STRING的值,或基本类型是STRING的自定义数据类型时,成员值不应包括空格。当成员值是EXPRESS数据类型BINARY的值,或基本类型是BINARY的自定义数据类型时,每个成员值都应该是一个八位字条字符串(即每个成员值的长度都应该是八位二进制位的倍数)。示例:下面例子阐述了如XML实例数据的简单值的集合表达:EXPRESS表达:TYPEcolor=ENUMERATIONOF(red,blue,green,white,black);END_TYPE;ENTITYproductdefinition;packagesizes:BAGOFINTEGER;dimensions:ARRAY113]OFREAL;options:LIST[1々]OFBOOLEANcolors:SET[o?]OFcolor;END_ENTITY;有exp-attribute一”attribute-tag“的XML实例数据:(Product_definitionid=”idlO”>(Package_sizes>l41212(/Package_sizes>(Dimensions)1234(/Dimensions)truetruefalse</options)(Colors)redbluewhiteblack<:/Colors)</Productdefinition>有exp-attribute一”attribute-content”的XMI,实例数据:(Components)FX-7721—004A(/Standard—part)(Partref=”p306”xsi:nil=”true”/)</Components)(/Assembly>9.8.3聚合值的索引表达这个表达是为EXPRESS数据类型的一个值选择的,这个EXPRESS数据类型有一个ARRAYOFOPTIONAl。的EXPRESS聚合类型,如在表7中所描述的。这个聚合值应该在存取访问元素的内容中,或外部集合元素(见9.8.5)的一个实例元素的内容中表达,作为一序列XMI.元素,它们中的每一个对应于这个聚合值的一个成员值。每个成员值应该在对应的实例元素中编码,如9.8.7中所描述的。存取访问元素或外部集合的实例元素,可以但不是必须具有属性arraySize。如果arraySize被指定,并且聚合值是ARRAY,arraySize的值应该是这个数组声明的大小。如果arraySize被指定,并且聚合值是IAST,arraySize的值应该是聚合值中成员值的数量。注1:当聚合值是一个ARRAY值,即使是一个ARRAYOFOPTIONAl,值,聚合值中值的数量总是等于这个数组声明的数量。但在ARRAYOFOPTIONAl,情况下,它们可能不会所有都在这个存取或外部实例元素的内容中表达。参见下面。注2:对基类型是一个聚合数据类型的集合,本条并不适用。见表8。170 GB/T16656.28—2010/ISO10303—28:2007对EXI’RESSARRAY值,成员值的实例元素应该以从最低索引到最高索引的顺序出现。对EXPRESSIAST值,成员值的实例元素应该以列表中的位置顺序出现。在每个成员实例元素中,pos属性应该出现。对ARRAY的一个成员,pos的值应该是成员值的数组索引。对I.IST的一个成员,pos值应该是它在列表中的位置,从1开始。如果聚合值没有成员值,对应于成员值的XMI。元素的序列应该是空的。当一个给定位置的成员值对前处理器不可用时,成员实例元素的序列应该不包含对应于那个位置的实例元素。注3:当基本聚合数据类型是ARRAY并且它的基类型被声明为OPTIONAl。时,成员值可以不要。因为成员值必须以顺序出现,后处理器能够从索引值序列中的间断推断一个或多个成员没有值。示例:这个例子阐述STRIN(,值的集合索引表达。与982中的例子对比:EXPRESS表达:ENTITYproducLdefinition;annotations:ARRAY[14]OFOPTIONALSTRING;ENDENTITY;XML实例数据,在这里annotations[3-并不存在:(Product—definitionid=”idl0”)(Annotations)lexp.string-wrapperpos=”l¨)Requiresspecialprocess314(/exp:string-wrapper>(exp:string-wrapperpos=”2”,Endstobefinishedbyhand</exp:string-wrapper>‘exp:strin}wrapperpos;”4”)CheckforconformanceofmaterialtoS1106《/exp:stringwrapper>(/Productdefinition>9.8.4聚合值的引用列表表达如果对应于EXPRESS聚合数据类型的XML模式数据类型有引用列表形式,如8.2.2中所描述的,聚合值应该如本条描述的编码。注1:本条只适用于当聚合类型的基类型是一个实体数据类型并且配置指令tagless--”lr//e”应用于这个聚合值时。聚合值应该通过一单个XMl.1ist值(在存取访问元素的内容中,存取属性值中或对应于这个聚合数据类型的一个实例元素的内容中)表达。聚合值中每个成员实体实例应该通过XMI。数据类型IDREF的一单个值在list值中表达。IDREF值应该由空格分开,如XMI。模式部分2:数据类型中所描述的。对每个成员实体实例,序列化单元应该(在某处)包含表达该实体实例的一个按值实体实例元素;如9.3.1中所描述的。这个按值实体实例元素应该有一个局部XMI。标识符。在XMI,list值中,对应于那个实体实例的IDREF值应该就是那个局部XMI.标识符。注2:当这个表达被使用时,投有保证IDREF值引用基类型值的XMI.标识限制(keyref)。对EXPRESSARRAY值,对应于这个实体实例的IDREF值应该以最低索引到最高索引的顺序出现。对EXPRESSLIST值,这个IDREF值应该以位置的顺序出现。对EXPRESSSET或BAG值,IDREF值的顺序是任意的,但是每个实体实例被表达的次数应该与它在聚合值中出现的次数准确相等。如果聚合值不包含实体实例,XMI.1ist值应该是空的字符序列。示例:EXPRESS表达:ENTITYPt3d;~additionalattributesskippedEND—ENTITY;171 GB/T16656.28—2010/[SO10303—28:2007ENTI。l。Ycurve2deflectionpoints:LIST0FPt3d:ENDENTITY;有ex]Dattribute一”attribute-tag”的XML实例数据:(Curveid=”idl0”)(Deflectionpoints)id001id002id003(/Deflectionpoints(/Curve),Pt3did=”id001’’、/Pt3d)Pt3did=”id002’1/Pt3d)Pt3did=。。id003”(/Pt3d)有exp-attribute=”attribute-content”的XMI,实例数据:。Curveid=”idlO”Deflection_points=”id001id002id003”/、fPt3did=”id001”⋯/、(Pt3did=”id002”⋯/>l020(/Tns:Seq-double>0040(/Tns:Seq-double>】73 GB/T16656.28—2010/ISO10303-28:2007(/Tns:Matrix>在这种情况下,XMI。属性exp:itemType和exp:arraySize有fixed值并且不需要出现在XMI,数据中,除非在GB/T16656的本部分范围以外的序列化单元的使用约定有这样的要求。为了清楚起见它们被包含在这里。9.8.5.2作为索引行的表达当事件的XML模式声明如8.2.2.4.1中所描述时,索引行表达可能被使用(见表8)。当索引行表达被选择时,基本聚合值应该如下表达:基本聚合值应该在存取访问元素的内容中,或对应于这个基本聚合数据类型的一个实例的内容中表达,作为一序列XMl。元素,它们中的每一个对应于这个聚合值的一个成员值,即一个嵌套聚合值。存取访问元素或基本集合的实例元素,可以但不是必须具有属性arraySize。如果arraySize被指定,并且基本聚合值是ARRAY,那么,arraySize的值应该是这个数组声明的大小。如果arraySize被指定,并且基本聚合值是LIST,那么,arraySize的值应该是实际出现在聚合值中成员值的数量。注l:当基本聚合值是一个ARRAY值,甚至一个ARRAYOFOPTIONAI。,聚合值中值的数量总是等于这个数组的声明大小。但在ARRAYOFOPTIONAI。情况下,它们不可能所有都在存取或基本实例元素的内容中表达。参见下面。对应于每个成员值的元素应该是对应于这个成员值的EXPRESS数据类型的一个实例元素,如果这个基本集合的基类型是匿名的,则如8.4.2中所描述的;如果这个基本集合的基类型是命名的,则如8.4.3中所描述的。每个成员值应该本身作为一个如表8中所描述的聚合值使用应用于那个成员的基类型和配置指令在相应的实例元素中编码。注2:即在表达这个成员值的实例元素的内容中,嵌套7成员聚合值变成被编码的基本聚合值,并且当前基本聚合值变成关于那个成员的外部聚合值。嵌套,成员聚合值的编码依赖于它的基类型和应用于它的其他指令,如表8中所描述的。这个成员值本身可以是聚合值的一个集合,并且可以有表达的一个不同选择。当基本聚合值是一个EXPRESSARRAY值时,这个成员值的实例元素应该以从最低索引到最高索引的顺序出现。对一个EXPRESSLIST值,这个成员值的实例元素应该以在列表中的位置顺序出现。对一个EXPRESSSET或BAG值,这个成员值的实例元素可以以任意顺序出现,但是每个成员值的出现次数应该与它在聚合值中出现的次数准确相同。如果这个基本聚合值没有成员值,对应于这个成员值的XML元素序列应该是空的。在每个成员实例元素中,pos属性应该出现。对一个ARRAY的一个成员,pos值应该是表达这个成员值的数组索引的一个十进制整数。对一个LIST的一个成员,pos值应该是表达列表中位置的十进制整数,从1开始。当一给定位置的成员值对前处理器不可用时。成员实例元素的序列不应该包含对应于那个位置的实例元素。注3:当基本聚合数据类型是ARRAYOFOPTI()NAI,时,可以不要成员值。因为成员值必须按顺序出现,后处理器可以从索引值序列的空格推断一个或多个成员没有值。示例:简单类型的多维数组的索引行表达(与9.8.5中例子做比较)。EXPRESS表达:TYPEMatrix=ARRAYLl3]OFARRAY[i:2]OFREAL;END_TYPE;使用GB/T166562l纯正文编码如((10,2o),(o0,4o),(o.0,5.4))表达的值在XML实例数据中表达,使用索引行表达如:(Tns:Matrixexp:itemType=“Tns:Seq-double”exp:arraysize=“3”)(Tns:Seq-doublepos=⋯1)102O</Tns:Seq-double>(/Tns:Matrix>在这种情况下,XMI。属性exp:itemType和exp:arraySize有fixed值,并且不需要出现在XML数据中,除非不在174 GB/T16656.28—2010/too10303—28:2007GBFll16656的本部分范围内的序列化单元的使用约定要求。为了清楚它们被包含在这里。9.8.5.3作为一个多维数组的表达当事件的XMI。模式声明如8.2.2.4.2中所描述时,多维数组表达可能被使用(见表8)。当多维数组表达被选择时,基本聚合值应该如下表达:基本聚合值应该在存取访问元素的内容中,或对应于这个基本聚合数据类型的一个实例元素的内容中表达,作为一序列实例元素,它们中的每一个都对应于一个最深值。每个最深值应该在对应的实例元素中编码,如9.8.7中所描述。存取访问元素,或这个基本集合的实例元素应该有XML属性arraySize。arraySize的值应该是十进制整数的一个序列,每个十进制整数表示多维数组值中的一维的实际大小。这些大小应该按从最外面(基本)集合到最深的顺序出现,并且应该由空格分开。例外:当一些嵌套聚合数据类型被声明为一个LIST时,对应维的值应该如下:在这个基本聚合数据类型的任何给定值中,对应于那个LIST的所有成员值应该有成员的同样数目,并且如果这样,那个数目应该用作对应维数的值。在(反对)情况下,对应于那个LIST的成员值并不是都有一样的成员数目,在这些LIST值中成员的最大数目应该被用作那个基本聚合值的对应维数。注l:当嵌套聚合数据类型中的任何一个是LISl、时,在arraySize属性中给出的维数对这个基本聚合数据类型的不同实例可以是不同的。决定这个可变维数的适合值的规则被单独地应用于这个基本聚合数据类型的每个实例。注2:当基本聚合值是一个ARRAY值,即使是一个ARRAYOFOPTI()NAI。,聚合值中值的数量总是等于数组的声明大小。但在ARRAYOFOPTIONAl。情况下,它们不可以都在存取或基本实例元素的内容中表达。见下面。注3:如果嵌套聚合数据类型的任何一个是一个LIST,并且不是所有的LIST值都是一样的大小,它被看做就好像它是一个ARRAYOFOPTIONAL,它的维数等于LIST值的最大大小。在较短LIST值的最后不存在的元素不应该出现。对EXPRESSARRAY值,表达这个成员值的实例元素应该按从最低索引到最高索引的顺序出现。对EXPRESSLIST值,表达这个成员值的实例元素应该按表中的位置顺序出现。每个嵌套聚合值的所有成员值应该在另一个嵌套聚合值的任何成员值之前出现。注4:即每个成员值由最深值的一序列实例元素表达;对任何嵌套聚台值没有实例元素。并且对应于最深嵌套集合的”innermostindex“变化最快;然后是其次外面的索引.依此类推。如果任何嵌套聚合值没有成员值,则对应于那个嵌套聚合值的实例元素序列应该为空。如果基本聚合值没有成员值,则对应于那个基本聚合值的实例元素序列应该为空。在每个实例元素中,pos属性应该出现。pos属性值应该是由空格分开的十进制整数值序列。序列中的第一个整数值应该是对应于这个基本聚合值成员的索引值,在这个基本聚合值中,最深值出现。因此,第一个整数值指定一个嵌套聚合值;序列中的下一个整数值应该是对应于那个嵌套聚合值成员的索引值,直至在这个嵌套聚合值中,这个最深值出现,依此类推。序列中的最后值应该是最嵌套聚合值中最深值的索引。对一个ARRAY的成员,这个整数值应该是这个成员值的数组索引。对一个LIST的成员,这个整数值应该是在列表中的位置,从1开始。当一给定位置的成员值不存在或对前处理器不可用时,最深实例元素的序列不应该包括对应于那个成员的实例元素。注5:当基本聚合数据类型的基类型或任何嵌套ARRAY数据类型的基类型被声明为OPTIONAl。时,则成员值可能不可用。如果一个成员值对应于超出实际LIST值限度的LIST位置时,则这个成员值可能不存在。因为成员值必须按顺序出现,后处理器可以从索引/{2置值序列的空格推断一个或多个成员没有值。示例:简单类型的一个多维数组的多维数组表达(与9.85中例子对比)。EXPRESS表达:TYPENatrix=ARRAY[13]OFARRAY[12]oFREAL;ENDTYPE: GB/T16656.28—2010/ISO10303-28:2007使用GB/T16656.21纯正文编码如((1.0,2.0),(O.0,4.0),(0.0,5.4))表达的值在XML实例数据中表达,使用多维数组表达如:(exp:doublepos=”0l”)20(/exp:double>(exp:doublepos=”l0”>00(/exp:double>(exp:doublepos=”11”>40(/exp:double>(exp:doublepos=”20”)0O</exp:double>(exp:doublepos=”2l¨)54(/exp:double>(/Tns:Matrix>在这种情况下,XMI。届1tiexp:item’i、ype和exp:arraySize有fixed值并且不需要出现在XML数据中.除非不在16656的本部分范围内的序列化单元的使用约定要求。为了清楚它们被包含在这儿。9.8.5.4作为一个连续数组的表达当事件的XMI。模式声明如8.2.2.4.2中所描述时,连续数组表达可能使用(见表8)。当这个连续数组表达被选择时,基本聚合值应该如下表达:基本聚合值应该在存取访问元素的内容中表达,或在对应于这个基本聚合数据类型的一个实例元素的内容中表达,是一个实例元素序列,序列中的每个都对应于一个最深值。每个最深值应该在对应的实例元素中编码,如9.8.7中所描述。存取访问元素,或基本集合的实例元素应该有XML属性arraySize。arraySize的值应该是一个十进制整数值序列,它们中的每个都表达这个多维数组值的一维的实际大小。这些大小出现的顺序是:从最外层(基本)集合到最深层集合,并且由空格分开。当任何嵌套聚合数据类型被声明成一个LIST时,在这个基本聚合数据类型的任何给定值中,对应于那个LIST的所有成员值都应该有与成员相同的数目,并且那个数目应该被用作对应的维数值。注1:当嵌套聚合数据类型中的任何一个是LIST时,在arraySize属性中给出的维数对这个基本聚合数据类型的不同实例可以不同。上面的规则仅仅要求可变维数在基本聚合数据类型的任何给定实例中是常数。对EXPRESSARRAY值,表达这个成员值的实例元素应该按从最低索引到最高索引的顺序出现。对EXPRESSlAST值,表达这个成员值的实例元素应该按表中的位置顺序出现。每个嵌套聚合值的所有成员值应该在另一个嵌套聚合值的任何成员值之前出现。注2:即每个成员值由最深值的一序列实例元素表达;对任何嵌套聚合值没有实例元素。对应最深层嵌套聚合的索引”innermostindex”变化最快,其次是次外层,依此类推。如果基本聚合值没有成员值,对应于该基本聚合值的实例元素序列应该是空的。在表达每个最深值的实例元素中,pos属性不应该出现。示例:简单类型的一个多维数组的连续数组表达(与985中例子对比)。EXPRESS表达:TYPEMatrix=ARRAY[I:3]OFARRAY[12]OFREAL;ENDTYPE;使用GB/T1665621纯正文编码如((I.0,2∞,(0.0,4.o),(o0,54))表达的值在XML实例数据中表达,使用连续数组表达如:(Tn8:Matrixexp:itemType=”double”exp:arraySize=”32”)l0204054(/Tns.Matrix>在此情况下,XML属性exp:itemType和exp:arraySize有fixed值并且不需要出现在XMI.数据中,除非不在16656本部分范围内的UOS的使用约定要求。为了清楚它们被包含在这儿。9.8.6自定义数据类型值的聚合基类型是自定义数据类型的任何EXPRESS聚合数据类型的值应该如表7中描述的表达,基类型值选择如下:176 GB/T16656.28—2010/1so10303-28二2007—一如果没有map指令应用于这个成员值(见10.5.4),对表7的base—type应该是自定义数据类型的基本类型。当自定义数据类型的基本类型本身是一个聚合数据类型时,全部的”aggregateofaggregate“值应该如9.8.5中描述的表达。——如果一个map指令应用于这个成员值,并且命名XMI,数据类型的值不包含空格,表7的basetype或表8的deepestbasetype应该被认为是一个简单数据类型。——如果一个map指令应用于这个成员值,并且命名XMI。数据类型的值可以包含空格,表7的basetype应该被认为是一个STRING。9.8.7成员值的实例元素本条规定一个实例元素中一个聚合值的成员值的编码,这个实例元素对应于这个成员值。当由这个成员值实例化的声明基类型是一个自定义数据类型,这个白定义数据类型的基本数据类型是一个SEI,ECT数据类型时,这个成员值应该如9.7中所描述的编码。否则,表达这个成员值的实例元素应该是对应这个成员值EXPRESS数据类型的一个实例元素。这个成员值可以根据应用于这个聚合值的成员的配置指令按引用或按值表达,如下:——如果配置指令content一”value“应用于成员(见10.5.2),或配置指令content一“unspecified”应用于成员并且exp—type一”value”应用于这个成员的数据类型(见10.5.3),成员值应该按值表达。如果这个成员值是一个实体实例,它应该如9.3.1中所描述的编码;否则,它应该如9.10.1中所描述的编码。——如果配置指令content一”ref”应用于成员(见10.5.2),或配置指令content一”unspecified”应用于成员并且exp—type一”root”应用于这个成员的数据类型(见10.5.3),成员值应该按引用表达。如果这个成员值是一个实体实例,它应该如9.3.2或9.3.3中所描述的编码;否则,它应该如9.10.2中所描述的编码。——如果配置指令content--”unspecified”应用于成员并且exptype一”unspecified”应用于成员的数据类型,成员值可以按引用表达,也可以按值表达。如果这个值是+个实体实例,这个值应该根据前置处理器的判断使用9.3中描述的表达之一编码。如果这个值不是一个实体实例,它应该按根据前置处理器的判断使用9.10中描述的表达之一编码。注:当按引用或按值的选择没有指定,前置处理器可以使用其他准则和指令来决定使用哪一个表达。通常地。前置处理器应当对不是实体实例的值使用按值表达。9.9自定义数据类型值的表达自定义数据类型值的表达依赖于该自定义数据类型(见8.3)的基本类型,如下:——原始类型是BINARY,BOOI.EAN,INTEGER,LOGICAI。,NuMBER,REAI。或STRING的一个EXPRESS自定义数据类型的值应该如9.5中对基本类型描述的编码。——基本类型是ENUMERATION数据类型的一个EXPRESS自定义数据类型的值应该如9.6中描述的编码。——基本类型是SEI。ECT数据类型的一个EXPRESS自定义数据类型的值应该如9.7中描述的编码。——基本类型是一个聚合数据类型(ARRAY,BAG,LIST或SET)的一个EXPRESS自定义数据类型的值应该如9.8中对基本类型描述的编码。注:如果一个map配置指令应用于这个值(见10.54),这个表达可能受影响。每条会在合适的地方描述map指令的作用。示例1:本例子阐述基本类型是原始类型的自定义数据类型的值的表达。EXPRESS表达:TYPELabel=STRING;END_TYPE;TYPELengthmeasure=REAL;177 GB/T16656.28~2010/Iso10303—28.2007END_TYPE;TYPEPlaneanglemeasure=REALlWHEREprincipalvalue:0(=SELF(=2*PI:ENDTYPE;ENTITYline_segment;nam8:OPTIONALLabel:origin:Pt2d{direction:planeangle_measure;length:lengthmeasure;END_ENTITY;没有exp—attribute=”attribute—content”的XML实例数据:(Linesegmentid=”p106”、(N鲫e)Westface</Name>(Origin>(Pt2dref=“p109”xsi:nil=”true”/)(/Origin>(Direction>15708‘/Direction>(Length>82(/Length>(/Line—segment>有expattribute--”attributecontent”的XMI。实例数据:(Line—segmentid=”p106“Name=”Westface”DireCtion=”l5708”Length=”82’1、</Line—segment>示例2:下面例子阐述一个自定义数据类型(temp_vals)的表达,这个自定义数据类型的基本类型是一个聚合类型并且自定义数据类型(english—name)的表达作为聚合值的一个成员:EXPRESS表达:TYPEenglishname=STRING;END_TYPE;TYPEftemperature=REAL;END_TYPE;TYPEtempvals=SETOFftemperature:END_TYPE;TYPEplantlist=LISTOFengllsh—name;END_,I"fPE;F/ⅥTITYgarden_info;tempmeas:temp_vals;plants:plantlist;ENDENTITY;没有exp_attrlbute=”attri}oute-content“的XM[,实例数据:827766798(/Temp_meas>(English_name>lily(/EnglishnaIne>]78 GB/’r16656.28—2010/too10303-28:2007(/Plants)(/Gardeninfo>有expattribute--”attribute—content”的XML实例数据:rose</Englishname>(Englishname>tulip</Enqlishname>(Englishname)lily</Englishname)|}Plants}(/Gardeninfo>9.10实例元素中值的表达上面第9章各条所需,值可以在实例元素中表达。本条详细规定这些表达。本条并不适用于实体实例值的表达。表达实体实例的实例元素应该如9.3中描述。9.10.1非实体数据类型的取值实例元素这个实例元素的类型应该.如8.4中所描述的,对应于这个值的实际数据类型。特别地,当这个值表达一个SEI,ECT数据类型的实例时,这个实例元素应该对应于工作选择列表中适合的数据类型,如9.7中所描述的。注:这个实例元素的类型可能并不对应于这个EXPRESS属性或包含它的EXPRESS聚合成员的声明数据类型。它可能对应于这个工作选择列表的一个子类或成员。XML属性ref不应该在这个实例元素中出现。如果这个实例元素是这个序列化单元元素的一个直接子元素,那么,这个实例元素应该有一个局部XMI。标识符;XMI。属性id应该出现在这个实例元素中,并且它的值应该就是那个局部XMI,标识符。否则,XMI.属性id不应该出现在这个实例元素中。这个值应该根据它的EXPRESS数据类型在这个实例元素的内容中编码,如下:——如果该数据类型是一个原始的数据类型(BINARY.BOOI。EAN,INTEGER,I.OGICAI。,NUMBER,REAl,或STRING),那么,这个实例元素应该是在8.4.1中描述的那一个,并且这个值应该如9.5中描述的编码。——如果该数据类型是一个匿名聚合数据类型,这个实例元素应该是在8.4.2中所描述的那一个,并且这个值应该如9.8中所描述的编码。——如果该数据类型是基本类型为BINARY,BOOI。EAN,INTEGER,I。OGICAL,NUMBER,REAI。或STRING的自定义数据类型,则这个实饲元素应该是在8.4.3中所描述的那一个,并且这个值应该在那个元素的内容中编码,如9.5中对它的基本类型所描述的。~如果该数据类型是基本类型为聚合数据类型的自定义数据类型,则这个实例元素应该是在8.4.3中所描述的那一个,并且这个聚合值应该在它的内容中编码,如9.8中所描述的。~—如果该数据类型是基本类型为ENuMERATI()N类型的自定义数据类型,则这个实例元素应该是在8.4.3中所描述的那一个,并且这个值(枚举项)应该在它的内容中编码,如9.6中所描述的。~—如果陔数据类型名义上是基本类型为SELECT类型的自定义数据类型,则这个值应该如9.7中描述的编码。~—如果该数据类型是一个实体数据类型,则这个值应该如9.3.1中描述的编码。示倒:对应于EXPRESS数据类型的一个取值实例元素:TYPEMatrix=ARRAY[13]OFARRAY[1:2]OFREAL;END—TYPE;可能是:179 GB/T16656.28—2010/ISO10303·28:2007(/Tns:Matrix>并且TnS:Seqdouble元素是表达EXPRESS数据类型ARRAY[1:2]OFREAI。值的取值实例元素。Tns:Matrix元素有~个局部XMl,标识符,假定它表现为序列化单元的一个直接子元素。Tns:Seqdoul)1e元素没有局部XML标识符,因为它们表现为Tns:Matrix元素的子集。9.10.2非实体数据类型的引用实例元素这个值本身应该在一个取值实例元素中编码,如9.10.1中所描述。这个取值实例元素应该是这个序列化单元元素的一个直接子元素并且应该有一个局部XMl,标识符。注:如果表达这个值的取值实例元素已经存在,那么,就没有必要创建一个新的。对同一个取值实例元素可能有多于一个引用。引用实例元素应该与取值实例元素类型一样。引用实例元素应该是空的(没有内容),并且应该有XMI,属性xsi:nil=”true”。引用实例元素应该有XML属性ref,并且它的值应该是这个取值实铡元素的局部XMI。标识符。引用实例元素不应该有XMI,属性id。当使用需要时,这个引用实例元素可以有XML属性pos或path。引用实例元素不应该有其他XML属性。描述这个值本身的任何XMI。属性应该出现在这个取值实例元素中。示例:对9101中给出的EXPRESS数据类型Matrix的值,一个引用实例元素可能是:(TnsMattixref=”v107”xsinil=”true”/)10配置语言7.2.2.2规定了从一个EXPRESS模式到一个XML模式的映射。第9章规定表达数据的规则,该数据由一个EXPRESS模式描述成XML元素。这些映射和表达规则可能被本章定义的配置语言改变或更进一步控制。配置语言规定EXPRESS模式元素怎样在导出XML模式中表达。配置语言也规定EXPRESS数据实例怎样被译成XML元素。配置语言概念上由称为指令的声明组成。每个指令规定映射的一个特别选项,这个映射是一个EXPRESS元素到XMI。模式成员的映射,或是EXPRESS元素描述的数据实例到XML元素的映射,或两者都是。作为一个整体丽鲢用的一组配置指令称为一个配置文件。本章规定配置文件的形式以及在配置文件中出现的配置指令的形式和含义。许多配置指令都能够应用于出现在一给定EXPRESS模式的特定数据类型,实体和属性。其他配置指令能够应用于整个EXPRESS模式,或应用于由EXPRESS语言定义的数据类型。一些指令规定全局选项和定义在EXPRESS语言本身中的数据类型的映射规则,一个只包括这些指令的配置文件称为模式独立(schemaindependent)。一些指令应用于定义在一给定EXPRESS模式中的特定数据类型和属性,一个包括这些指令的配置文件称为特定模式(schemaspecific)。句法上,配置语言是基于XMI.的:指令由XMI.元素和XMI,属性表达。一个配置文件被表达成一个配置(configuration)元素。configuration元素的形式在10.1中描述。每个指令的形式和含义在10.2中描述。每个配置指令都包含在configuration元素内容中的一个范围元素(scopingelement)中。范围元素在10.3中描述。通常地,范围元素规定指令应用的范围,并且这个指令本身由一个XMI。属性描述。太复杂而不能表达成简单XMI.属性值的配置选项由嵌套元素表达。180 GB/T16656.28—2010/ISO10303—28:2007示例:下面是显示配置文件结构的一个例子:(entityselect=”person”)oattributeselect=’’owns”exp-attribute=’’type-tag’’/、(/entity>(typeselect=”currency”map=”n:decimal”/></configuration>(/iso一1030328)注:通常地,配置指令的例子能在722,第9章和附录G中找到。10.1配置元素配置文件在1so一]0303—28元素中由一个配置(configuration)元素表达。该元素应该“按值”或“按引用”包含一个配置文件。一个配置元素使用include元素引用了别的配置文件,这些配置文件可能包含在其他文档中。configuratlon元素类型声明是:(XS:elementname=”c。nfiguration”nillable=”true”)(XS:choiceminOccurs=”0”maxoceurs=”unbounded”></xs:element>(XS:elementref=”cnf:uosElement”/)(xs:elementref=”cnf:uosEntity”/)(XS:elementref=”cnf:rootEntity”/>(/xs:choice);d的XMI.属性值应该是配置文件的局部XMI。标识符。这个值为文档内序列化单元元素提供对配置文件的引用,并且为其他文档对这个配置文件的引用提供部分标识符。schema的XMI。属性值应该是这个配置文件引用的EXPRESS模式的局部XML标识符,如5.4中所描述的。schema属性的使用需求在下面和5.6中描述。schema属性的解释在10.1.1和10.1.2中描述。targetNamespaceXMI。属性值应该是导出的XMI.模式(见8.7)目标命名空间的URN。include元素将其他配置文件中的所有配置指令包含到当前配置文件中。configuration属性值应该是当前iso一10303—28元素(见10.1)中另一个configuration元素的局部XMI。标识符。被引用configuration元素可以是按值或按引用。如果有的话,被引用configuration元素的schema属性应该被省略。示例:10.1.1配置文件的引用表达当配置文件按引用表达时,configurationlocationXMI。属性应该出现并且它的值应该标识包含按值表达的配置文件(见10.1.2)的一个或多个资源。一个URI在值上或是一个没有局部部分的URI,或有这样的形式:uri#id,其中uri是一个定位资源的符合IETFRFC2396的URI,且标识符ld是局部于那个资源的一个XMl,标识符,这个资源标识一个按值configuration元素。注1:按惯例.configuration—location的值是一个URl,或一个URI列表,在这个URI列表中,第一个是全局地标识这个配置文件的一个URN,所有其他的URI都是本文的可能位置。当配置文件按引用表达时,configuration元素的内容将是空的。当配置文件按引用表达时.schema属性是可选的。如果它不出现,应该使用按值表达的configuration元素中的schema属性值(如果有)。如果schema属性出现,它的值覆盖按值configuration元素中schema属性的值。如果按引用配置元素和按值配置元素都不指定相关的EXPRESS模式,那么每个使用这个配置的顺序化单元就应该指定EXPRESS模式(见9.2.6.1)。注2:按值configuration元素例如可以配置一个STEP模块模式,然而按引用configuration元素配置连接那个模块的更大的EXI’RESS模式。在这样的情况下,两个configuration元素都有schema属性,但按引用18, GB/T16656.28—201O/IS010303-28:2007configuration元素(对连接EXPRESS模式的)的值将跳过按值configuration元素(对模块模式的)值.10.1.2一个配置文件的按值表达当这个配鼍文件按值表达时,configuration元素的内容应该是非空的,并且所包含的XMI。元素应该符合10.3的规范。当配置文件按值表达时,configuration—locationXMI.属性不应该出现。schema属性应该出现在所有按值configuration元素中,那些表达schema—independent配置文件的configuration元素除外,schema_independent配置文件定义如}。10.2配置选项本条定义了可能在配置文件中规定的选项。这些选项可以表现为一个或多个entity,type,attribute,inverse,aggregate或option范围元素(见10.3)的属性。配置选项可以互相冲突。在冲突发生的情况中,影响最特殊的声明的声明应该优先。attribute声明有最高的优先权;接着是type声明,再接着是entity声明,然后是父型的实体级选项,最后是全局options,它的优先级最低。例外:当一个属性指令与EXPRESS属性的数据类型的类型指令冲突,并且那个数据类型在这个EXPRESS模式中命名(不是匿名的)时,类型指令具有高优先级。所有的非冲突选项都有影响。注:当类型指令影响数据类型的XMI。模式声明时,不能声明存取访问具有那个数据类型且改变它。对每个EXPRESS实体、类型和属性,配置文件中一套町适用的声明应该被应用到这个对象。当两个冲突选项属于同一优先级时,结果配置不由GB/T16656的本部分定义。类似地,当一个EXPRESS属性的相冲突的指令在一个子类中继承时,这个结果配置不由GB/T16656的本部分定义。10.2.1配置选项namename配置选项规定对应于EXPRESS数据类型或属性的XMI.元素或属性的名称。为每个数据类型规定的名称在导出XML模式的命名空间内应该是唯一的,并且每个属性的名称在自己的实体内必须是唯一的。如果name选项没有被指定,那XMI。元素或属性名称应该从EXPRESS定义名称(见8.1.2)导出。name属性没有缺省值。由name配置选项指定的值逐字地使用,并且跳过任何指定的namingconvention。10.2.2配置选项exp-typeexptype配置选项应用于EXPRESS命名数据类型和EXPRESS实体数据类型。该选项决定是否一个EXPRESS数据类型被表达成一个根实例元素或一个被包含元素。它应该有一个以下值:root,value或unspecified。缺省值是unspecified。⋯如果值是root,这个实体数据类型的每个实例应该由一个独立的实体实例表达。值是那个命名数据类型的一个实例的每个EXPRESS属性应该按引用表达,而不是按值表达。这个选项被以下属性特定的配置选项:exp—attribute--”no-tag”,content一”value”跳过。一-如果值是value,这个命名数据类型在所有情况下都按值表达。这被属性特定的配置选项content一”ref”跳过。——如果值是unspecified,命名数据类型的表达选项由其他选项决定,或留给前置处理器处理。10.2.3配置选项contentcontent配置选项决定是否数据类型是一个实体的EXPRESS属性值按引用或按值表达。这个选项必须有一个以下值:value,ref或unspecified。缺省值是unspecified。——如果值是value,该属性应该按值表达。这个选项与expattribute-”attribute—content”和exptype一”root”(引用的实体的)选项冲突。——如果值是ref,该属性应该按引用表达。这个选项与exp—attribute=”notag”和exptype一”value”选项冲突。——如果值是unspecified,该属性值表达的选项由其他选项决定,或留给前置处理器处理。183 GB/T16656.28—2010/ISO10303—2812007注:当处理循环数据结构时,不认可被包含选项。因此结果XMI。模式允许被声明COl"lf,erlt=“value”的一个属性包含一个引用。10.2.4配置选项a鹳regate_contentaggregatecontent选项决定是否一个(可能嵌套的)聚合值的基本元素值由引用或值表达。该选项必须有一个以下值:value,ref或unspecified。缺省值是unspecified。该选项等于一组嵌套aggregate配置元素,在这里:——嵌套aggregate元素的数量等于这个集合的XMI。表达的维数。——最里面元素有一个content配置属性,它的值与这个aggregatecontent选项的值一样。示例:在一个entity配置元素中,并且对包含一个名为agg的属性的实体,这个agg属性被声明为一个一维的EXPRESS集合,这个声明:10.2.5配置选项exp-attributeexp—attribute配置选项决定一个EXPRESS属性如何在XML中表达。该选项应该有一个以下值:double—tag,attribute—tag,type-tag,no-tag,no—tag—simple,unspecified或attribute—content。缺省值是attribute—tag,除非该属性的数据类型是一个实体数据类型,这时缺省值是doubletag。如果值是double—tag,如果它是一个实体类型,属性由一对嵌套XMI.元素表达:一个是对属性的,一个是对产生它的那个实体的。——如果值是attributetag,如果它是一个实体类型,属性由表达这个属性的单个XML元素表达。如果这个EXPRESS属性的数据类型有子类,这个元素应该包含一个xsi:type元素,这个xsi:type元素标识这个值的类型。——如果值是type—tag,如果它是一个实体类型,属性由表达这个实体的单个XMI。元素表达。如果这个EXPRESS属性的数据类型有子类,或如果在这个实体中有多于一个相同数据类型的属性,或如果这个属性是一个匿名的集合并且使用自由继承映射,那指定这个选项是一个错误。——如果值是no-tag,属性由一组是它的值的实体的属性取代。如果这个值是多态的,或这个结果元素的属性名与多个值相冲突,那指定这个选项是一个错误。这个选项与exptype一”root“和content一”ref”冲突。——如果值是notagsimple,属性被表达成自己实体的复合类型中的一个XML文本节点。对每个配置指令(entity)它只能出现一次。这个EXPRESS实体的所有其他属性只可以被设置成expattribute一”attributecontent”。示例:——如果值是attributecontent,属性由一个XMI。属性表达。该选项与exp—type一”value”和content一”value”冲突。——如果值是unspecified,这个选项不发挥作用,且其他选项被用来决定一个属性如何被表达。10.2.6配置选项entity-attributeentityattribute配置选项决定EXPRESS属性的XML表达,这些EXPRESS属性是实体数据类型。entityattribute只能被指定在这个option配置元素上。这个选项应该有一个以下值:doubletag,attributetag或attribute—content。缺省值是doubletag。规定entity~attribute对是实体数据类型的所有属性提供一样的规定exp—attribute,并且可能被exp—attribute指令跳过。1R4 GB/T16656.28—2010/[SO10303—281200710.2.7配置选项concrete-attributeconcreteattribute配置选项决定EXPRESS属性的XMI,表达,这些EXPRESS属性不是实体数据类型。concreteattribute只能被指定在这个option配置元素上。这个选项应该有一个以下值:double—tag,attribute—tag或attribute—content。缺省值是attributetag。规定concreteattribute对不是实体数据类型的所有属性提供一样的规定exp—attribute,并且可能被exp—attribute指令跳过。10.2.8配置选项taglesstagless选项用来规定集合元素在可能的地方对单个元素不用标识符表达。该选项的值可能是true、false、或unspecifed。缺省值是unspecifed。当tagless的值是true时,聚合值应该由IS:list形式(空格划界元素表)表达。当tagless的值是false时,聚合值应该由实例元素列表形式(每个集合元素映射到一个XML元素)表达。当值是unspecifed时,对基类型BOOLEAN,INTEGER,LOGICAI.,REAI。,NUMBER,ENU.MERATION,以及这些数据类型的专门化的自定义类型而言,这个值都被认为是true,对所有其他的都是false。如果该选项被指定在一个attribute配置元素上,这个属性的数据类型必须是一个匿名聚合或基本类型为聚合的一个自定义类型,在这样的情况下,这个选项在所有的实体实例中规定那个属性的表达。如果该选项被指定在一个aggregate配置元素上,它决定那个聚合值(ig个聚合值可以嵌套在另一个聚合值中)的表达。如果该选项被指定在一个type配置元素上,这个类型必须是一个匿名集合或一个自定义类型,这个定义类型的原始类型是一个集合。在这样的情况下,这个选项对集合的给定类型指定一个缺省值,而不管这个集合在哪里出现。Tagless=”true”能够对属性明确地指定,这些属性的数据类型是STRING,BINARY的聚合,或一个实体数据类型,或基本类型是STRING或BINARY的定义数据类型。当配置指令tagless一”true”对一个聚合数据类型明确指定,这个聚合数据类型的基类型是(或导出于)STRING,这个聚合值的成员的实际值不应该包含空格。当配置指令tagless=”true”对一个聚合数据类型明确指定,这个聚合数据类型的基类型是或由BINARY导出,不可能指定extra—bitsXMI。属性(见8.2.1.1),并且这个聚合值的成员的实际值应该是八位字条字符串(即它们的长度应该恰是8的倍数)。当配置指令tagless=”true”对一个聚合数据类型明确指定,这个聚合数据类型的基类型是一个实体数据类型,这个聚合值的成员的实际值应该是实体引用。当一个聚合数据类型是ARRAYOFOPTIONAL时,则该类型的所有使用中tagless的值都应该(被覆盖为)false。10.2.9配置选项flattenflatten选项用来把嵌套聚合值表达成一个一维聚合。这个值应该是true或false中的一个。缺省值是true。如果值是false,每个嵌套聚合值被表达成一个单独的XMI。值。如果值是true,所有的嵌套聚合值都被序列化成一个单个聚合值——一个单个XML元素的内容——由9.8.5中规定的序列化规则。即flatten一”true”应该被解释成应用于这个目标(通常是最外面那个)聚合数据类型,还应用于直接嵌套在它里面的每个匿名聚合数据类型。如果该选项被指定在一个attribute配置元素上,这个属性的数据类型必须是一个匿名聚合数据类型或基本类型是聚合数据类型的一个自定义类型。在这样的情况下,这个选项规定所有实体实例中那个属性的表达。如果该选项被指定在一个aggregate配置元素上,它决定那个聚合数据类型和嵌套在它里面的那】85 GB/T16656.28—2010/ISO10303—28:2007些聚合数据类型(可以所有都被嵌套在另一个聚合值中)的值的表达。如果该选项被指定在一个type配置元素上,这个类型必须是一个匿名聚合数据类型或基本类型是聚合数据类型的一个自定义类型。在这样的情况下,这个选项为这个指定数据类型的所有使用规定flatten的值。当flatten的值是true时,这个受影响集合结构应当是”rectangular”,即每一维中成员值的数目在整个聚合值上应当是一致的。10.2.10配置选项use-iduseid选项指出数据类型是实体数据类型的一个EXPRESS属性的按值表达,或基类型是实体数据类型的一个聚合数据类型应该有一个id属性。这个值应该是true或false。缺省值是false。Use—id应该只存在于attribute元素内容中的attribute元素或aggregate元素中。它只应用于是,或包含在那个特定属性值中的实体实例。当useid--”true”时,EXPRESS属性值的EXPRESS实体实例应该总是按值(见9.3.1)表达.并且相应的取值实例元素应该包括一个jd属性,使这个实体实例元素能够被引用。如果useid一”true”应用于一个EXPRESS属性,exp—attribute一”double—tag“和exp—attribute一”typetag”中的一个也应该应用于那个属性。这个属性值的实体实例不应该在序列化单元中多次按值表达。当useid一”false”时,EXPRESS属性值的表达不应该包括一个idXMI。属性。注:一个useid一”true“的EXPRESS属性可能在另一个根元素出现的位置被解释。10.2.11配置选项keepkeep选项控制EXPRESSENTITY,TYPE,ATTRIBUTE,INVERSE或DERIVEd属性到导出XMI。模式的映射。它的值应该是true或false。对ENTITY,TYPE和ATTRIBUTE属性的缺省值是true。对INVERSE或DERIVEd属性的缺省值是false。Keep应该出现在一个entity,type,attribute或inverse元素上。它也可以应用于由一个invert指令逆转的EXPRESS属性上。当keep--”false”应用于一个EXPRESSENTITY时,该实体和它的所有属性从这个导出的XMI。模式排除。当keep--”false”应用于一个EXPRESSTYPE时,该类型从这个导出XML模式排除。当keep一”false”应用于一个EXPRESSA’PTRlBUTE时,该属性从这个导出XML模式排除,并且不能被使用在任何逆转配置中(见10.3.5)。当keep=”false”应用于一个EXPRESSINVERSE或DERIVEd属性时,该元素从这个导出XMI,模式排除。当keep--”true”应用时,EXPRESS属性应该被映射到这个导出XMI。模式中的一个存取访问元素或一个属性。注:应用于一个EXPRESSENTITY,TYPE和ATTRIBUTE的keep一“false”被引入来支持存在APs内更低的一致性类的映射。10.2.12配置选项keep-allkeep—alt指令对全局分配”keep”指令给所有的EXPRESSINVERSE或DERIVEd属性提供一个方法。这个值可以是derive,inverse,deriveinverse,或可以是未设置的值。缺省值是未设置。当值是derive时,keep--”true”指令应该应用于所有的EXPRESSDERIVEd属性。当值是inverse时,keep一”true”指令应该应用于所有的EXPRESSINVERSE属性。当值是deriveinverse时,keep=”true”指令应该应用于所有的EXPRESSINVERSE或DERIVEd属性。当这个值未设置时,keep一”true”指令不应该应用于任何EXPRESSINVERSE或DERIVEd属性。为一个EXPRESS属性明确指定的一个keep指令应该跳过由keep—all指令应用的任何指令。 GB/T16656.28—2010/ISO10303-28:200710.2.13配置选项mapmap指令声明XMI,数据类型,这个XMI,数据类型应该被用来表达一给定EXPRESS数据类型。map指令的可能值依赖于这个EXPRESS数据类型,在下面描述。map指令没有缺省值。这个选项也可以被用在一个entity元素上,这个entity元素表达一个EXPRESSENTITY。在这种情况下,这个选项规定复合类型,当前的复合类型由这个复合类型扩展而来。map的可能值可以是这个产生XMI。模式的任何复合类型。这个选项可以被用在一个type元素上,这个type元素表达一个EXPRESSBINARY,INTEGER,NUMBER,REAl,或STRING数据类型,或基本类型是它们中之一的自定义数据类型。在这种情况下,map选项规定这些EXPRESS数据类型的所有值的表达,而不论这些数据类型出现在什么地方。这个map选项不应该被用于任何其他EXPRESS数据类型。这个选项可以被用在一个attribute元素上,这个attribute元素表达一个EXPRESS属性,这个EXPRESS属性的数据类型是BINARY,INTEGER,NUMBER,REAI。或STRING,或基本类型是它们中之一的自定义数据类型。在这种情况下,map选项为那个EXPRESS属性的所有值指定表达。这个选项可以被用在一个inverse元素上,这个inverse元素配置一个EXPRESS属性,这个EXPRESS属性的数据类型是BINARY,INTEGER,NUMBER,REAL或STRING,或基本类型是它们中之一的一个自定义数据类型。在这样的情况下,这个选项为那个EXPRESS属性的所有值指定表达。10.2.13.1EXPRESSBINARY的映射类型对于基本类型是BINARY的任何EXPRESS数据类型,下面XMI,模式数据类型可以作为这个map指令的值:~一xs:hexBinary;————XS:base64Binary。10.2.13.2EXPRESSINTEGER的映射类型对于基本类型是INTEGER的任何EXPRESS数据类型,下面XML模式数据类型可以作为为这个map指令的值:XS:integer;一一xs:decimal;一——XS:long;XS:short;——xs:byte;——XS:unsignedI.ong;一⋯x8:nonNegativeInteger;——xs:nonPositiveIntege。;——xs:positiveIntege。;⋯一XS:negatlveInteger;——XS:year。注:除year外,这个分配影响值空间,但不影响编码。选择year也影响编码。10.2.13.3EXPRESSNUMBER或REAL的映射类型对于基本类型是NUMBER或REAl。的任何EXPRESS数据类型,下面XML模式数据类型可以作为map指令的值:——xs!double:——xs:decimal;——xs:float。注:这个分配影响值空间和编码。187 GB/T16656.28—2010/ISO10303—28:2007示例:下面例子引起EXPRESSREAI。类型由一个xs:decimal值表达,并且引起这个positive—length—measure类型(一个自定义类型,它最下面支撑类型是REAL)由一个XS:doubleXML类型图达。attribute=”type_tag”)(/entity>(entityselect=”cc—design_person_and_organizationassignment”tagsource=”role_label”tag_values2’’design_supplierconfiguration_managercontractorclassification_officer”、attribute。”typetag”/)</entity>iproductatts}(design_supplier>(person>{personatts}(organization>{orgatts)</organization>(/design—supplier>(/product>10.2.18配置选项namespacenamespace选项规定用于一个指定数据集的xmlns命名空间声明。如果这个namespaee选项没有被指定,这个命名空间应该由如8.7中描述的前置处理器决定。alias的值应该是一个命名空间URI。prefix的值应该是表达这个命名空间URI的一个前缀。alias和prefix属性没有缺省值。10.2.19配置选项refref选项控制一个EXPRESS属性到导出XMI。模式的映射。re{选项的值应该是一个合格名,这个合格名引用定义在一个关联命名空间(见8.7)中的一个XML属性或元素。对应用re{选项的EXPRESS属性,8.6中规定的映射不应该被使用。如果exp—attribute=“attrib—ute—content”应用于这个EXPRESS属性,相应的XMI,模式声明应该有这样的形式:(XS:attributeref一”XXX”use一”usage”/>否则,相应的XML模式声明应该有这样的形式:(XS:elementref--”XXX”rainOccurs一”zero一0r_0ne。’/)任何一种情况中:——xxx是ref选项的值;——如果EXPRESS属性是OPTIONAL,则usage是”optional”;否则usage是”required”;——如果这个EXPRESS属性是OPTIONAI,,则zero—or-one是⋯0’,否则zero—or—one是⋯1’。189 GB/T16656.28—2010/ISO10303—28:2007Re{只能够出现在一个attribute或inverse元素上。如果ref出现在一个attribute或inverse指令中,以下选项不应该出现:name,keep,useid,map,implementation。注:ref的值在关联命名空间中必须是可分解的。10.2.20配置选项use当EXPRESS属性被映射到导出XMl。模式时,use选项控制这个EXPRESS属性的最小基数。Use只能够出现在一个attribute元素上。当use=”optional”被指定时,EXPRESS属性使用一个最小基数0被映射到导出XML模式。即它应该根据这个存取访问的种类被声明minOccurs一”0”或use一”optional”。当use一”required”被指定时,EXPRESS属性使用一个最小基数1被映射到导出XMl.模式。即它应该根据这个存取访问的本质被声明minOccurs一”1”或use一”required”。注1:use一”optional”和minOccurs一”l”是XML模式的语言缺省值,因此能够在导出模式中省略。注2:如果use一”required”应用的那个属性的基类型是一个集合,这个集合下界为0,那么这个集合的下界上升到1。10.2.21配置选项implementationimplementation选项控制一个EXPRESS实体数据类型或一个EXPRESS属性到导出XMI。模式的映射。implementation属性的值应该是一个XML模式类型规范——一个simpleType定义或一个eomplexType定义。如果implementation选项应用于一个实体数据类型时,它的值应该是对应于那个实体数据类型的XMI。数据类型。这个implementation选项值的定义应该逐字地出现导出XML模式中,而不出现在XMI。数据类型的定义中,这个XML数据类型将否则对应于那个实体数据类型。注1:在这样的情况下,XMI。类型定义将包括-个名称,通过这个名称,这个数据类型将被标识。如果implementation选项应用于一个EXPRESS属性,它的值应该是对应的存取访问元素的XMI。数据类型。在导出XMl。模式中,这个implementation选项值的XML数据类型规范应该如存取访问元素的数据类型一样逐字地出现。注2:在这样的情况下,XMI.类型定义不需要,并且很可能不应该包含一个名称。注3:在EXPRESS元素如何通过提供它的最终XMI,表达为这个选项的内容在这个被生产XMI。模式中表达上,它给用户完全控制(和在错误情况下的责任)。implementation只可能出现在一个entity或attribute元素上。如果implementation出现在一个实体数据类型的配置中,以下选项不应该出现:tagsource,tagvalues,map,keep,expattribute,tagless。如果name出现了,那它应该是这个实例元素的名称,并且是对应于这个选项实体数据类型其他名称的基础,但不是(或不必是)这个对应数据类型的名称。另外,这个entity指令的内容应该是空的。如果implementation出现在一个EXPRESS属性的配置中,以下选项不应该出现:map,keep,exp—attribute,tagless,use,use—id,notation,ref。注4:因为实现值中的XMI,模式定义将使用XMI,特定的字符,所以这个表达将是一个CDATA部分或使用XMI。特定字符的置换规则,这些置换规则在XMI。规范中指定。例如“(”编码为“&h;”。注5:给定构造的有效性是用户的责任。10.2.22配置选项facetfacet选项控制一个EXPRESSENTITY到导出XMI.模式的映射。它提供一个XMI。属性,XMI,属性不能通过应用任何其他的EXPRESS到XMI。映射规则而导出,被添加到被产生的XML复合类型。例如,当必须从一个非抽象EXPRESS实体创建一个抽象XML复合类型时它可以被应用。facet只能够出现在一个entity元素上。示例:/entityselect=”simple_property_association”】90 GB/T16656.28—2010/ISO10303—2812007narne=’’simpleproperty_value”facet=”abstract=true”、(/entity>注:这个选项的值必须是在将要应用的内容中是有效的一个XML属性。10.2.23配置选项generate-keysgeneratekeys选项控制标识约束的使用,也控制表达在XMI.模式语言中的所有EXPRESS约束有效性所需的其他复杂XML模式约束的使用。当generate—keys一”true”时,XMI。模式文档(参见4.2)的一致性类2提供的完全有效能力被允许。当generate—keys一”false”时,复杂XMI。模式约束并不出现在导出XML模式中。generatekeys只可能出现在一个option元素上。注:key和keyref约束的产生在模式级处理,因此约束为每个数据类型和模式中的用法定义,或根本不定义。10.2.24配置选项embed-schema-itemsembed—schema-items选项使得基本XMI,模式(附录c)中的元素和支撑项嵌入到结果模式中,而不必引人这些模式。这个值应该是true或false。缺省值是false。当值是true时,(直接或间接)环境EXPRESS模式所需的定义和声明中应用的附录c的所有XMI,数据类型定义,属性声明和元素声明应该逐字地复制到结果模式中。10.2.25配置选项alias和prefixalias和prefix选项规定用于一个指定命名空间的前缀。如果alias和prefix选项没有被指定,这个前缀应该如8.7中所描述的由前置处理器决定。alias的值应该是一个命名空间URI。prefix的值应该是表达这个命名空间URI的一个前缀。alias和prefix属性没有缺省值。10.2.26配置选项selectselect配置选项规定一个entity或type范围指令应用于的EXPRESS数据类型的集合。这个集合的成员由它们的EXPRESS标识符标识。这个选项XML属性的值规定一列模式。entity或type指令应该应用于EXPRESS模式,这些EXPRESS模式在或引入到内容模式中且它们的标识符与列表中的模式匹配。select属性没有缺省值。选项属性的值应该与XML模式数据类型一致:(XS:minLengthvalue=”1¨/>(/XS:restriction>(/xs:simpleType>即这个值应该是一个或多个模式字符串的简单列表,它们中的每一个完全由表9中规定的列表中的字符组成。表9选项的模式字符串模式元素匹配规则与该字母匹配。如果规定了naming-convention一”preserve-case”,则大写字母和小写字母任何字母是有区别的;否则大小写字母没有分别任何数字与该数字匹配与l,owLINE字符(下划线)匹配 GB/T16656.28—2010/mo10303—28:2007表9(续)模式元素匹配规则与任何(一个)字符匹配@与任何字母匹配#与任何数字匹配当规定了naming-convention一”preserve_c鼬e”时,与任何大写字母匹配;否则与任何字母匹配当规定了naming-convention--”preserve-case”时,与任何小写字母匹配;否则与任何字母匹配该模式元素包括下一个模式元素。该模式元素与(下个)模式字符不匹配的任何字符匹配。例如,!@与任何非字母的字符匹配;!与任何非LOWLINE(下划线)的字符匹配该模式元素包括先前的模式元素。它匹配那个模式元素的零个或多个连续出现的字符。例外:如果出现的话,?*不匹配下个模式元素匹配的第一个字符。例如:在’*一中,?*元素匹配每个字符,但不包括第一个LOwLINE(下划线),如果有的话,一元素匹配I,()WI。1NE该模式元素包括先前的模式元素。它匹配那个模式元素的一个或多个连续出现的字符。+例外:?+不匹配下个模式元素匹配的第一个字符,如果有的话对于环境模式中或连接环境模式中的每个EXPRESS数据类型标识符和列表中的每个模式,匹配算法如下:——模式字符串的每个字符与这个标识符的对应字符相比,如表9中所描述的。如果任何一对都不匹配,这个标识符就不匹配这个模式。——如果这个模式字符串的所有字符都匹配对应标识符的字符,并且标识符没有不匹配的字符,那这个标识符匹配这个模式。注1:模式字符串中某些特别字符可以匹配标识符中多个字符。——如果这个标识符匹配列表中的任一模式,那么对应的EXPRESS数据类型包含在这个指令的范围内。如果这个标识符不匹配列表中的任一模式,那么它不包含在这个指令的范围内。注2:如果这个模式字符串完全由字母,数字和LOWLINE字符组成,那么它是一个EXPRESS标识符,并且它恰好匹配那个标识符,而不匹配其他标识符。因此“模式列表”事实上可能是数据类型的标识符的一个列表,这些数据类型在这个指令范围内。10.3范围元素本条规定了在一个基于值的配置元素内容中对XML元素的需求。一般说来,XMI。元素规定一个或多个配置指令的应用范围,并且每一个指令都规定为一个XMI。属性。选项元素规定全局选择项和缺省选项,模式元素控制模式的定义和总体概念以及导出XML模式本身。类型和实体元素控制特定EXPRESS数据类型的表达。实体元素可能包含属性元素和逆向元素,逆向元素控制那个实体的特定属性的表达。类型元素和属性元素可能包含集合元素,集合元素用于控制它们内部的嵌套集合的表达。10.3.1选项元素选项元素规定全局选项和缺省选项。在一个配置元素中,可能有任意数目的选项元素。~个配置元素内部的多个选项元素,和包含所有选项元素的所有XML属性的集合的单一选项元素是等同的。如果一个配置元素包含多个选项元素,而这些选项元素规定了相同的XMI。属性,那么这是错误的。(xs:elementna!【le=”option”)1q2 GB/T16656.28--2010/IS010303—28:2007(XS:complexType>(28:attributename=”inheritance”type=”xs.boolean”default=”false”/、1281attributename2”exp-type”type=”exp-type’’default=”unspecified”/><。8:attributename2”tagless”type=”cnf:boolean_or_unsDecified”default=”unspecified”厂)</xs:element)所有设置了默认值的属性可以在其他配置元素中重载。10.3.2类型元素类型元素控制EXPRESS自定义数据类型、EXPRESS基本类型和匿名集合的表达。(/xs:choice>(。s:attributen鲫e2”select”type2”cnf:patterns”use=”required’’/)(xs:attmibuteaame=”name”type=”XS:NMTOKEN”use=”opti。nal”/)(/xs:element)被配置的EXPRESS数据类型的集合由选择属性的值规定,如下:——对于自定义数据类型,选择属性的值应该像在10.2.26中所规定的那样,使用自定义数据类型的EXPRESS标识符。——对于一个基本类型,选择属性的值应该是基本类型的EXPRESS关键字(BINARY,BOOLEAN,INTERGE,LOGICAL,NUMBER,REAL,STRING)。193 GB/T16656.28—2010/ISO10303-2812007——对于匿名聚合类型,选择属性的值应该由字符”Seq”,后面跟着聚合类型的基本类型组成。注l:一个给定基本类型的所有的聚合(数组.包,列表,集合)有相同的配置。名称属性的值·如果存在,应该规定XML数据类型的名称,和对应于EXPRESS数据类型的实例元素的名称,见8.3和8.4。注2:名称属性可以用于给EXPRESS匿名集合一个XMI。名称。map属性的值应该是用于表达EXPRESS数据类型的值的XMI。数据类型的名称。这个选项的允许的值依赖于EXPRESS数据类型。见】0.2.13。Exptype属性控制基于引用和基于值的实例元素的使用,基于值的实例元素是针对规定的自定义数据类型的。见10.2.2。Tagless和flatten选择项,只有当数据类型是一个聚合数据类型时,才可能出现。见10.2.8。可选集合子元素应该被用于配置一个在选择(集合)数据类型中嵌套的聚合数据类型。见10.3.6。Keep属性控制在导出XM[。模式中的类型的使用。见10.2.11。10.3.3实体元素实体元素控制EXPRESS实体类型的表达。(xs:elementname一”entity”)(xs:complexType>(xs:choiceminOccurs一”0”maxOccurs一”unbounded”)(xs:elementref一”cnf:inverse”/>(/xs:choice)(xs:minLengthvalue一”2”/)(/xs:restriction></xs:simpleType)(/xs:attribute>]94 GB/T16656.28—2010/1SO10303-28:2007(entitynew一”true”nanle=”Simple_string_value”map一”Simple_property—value”5(attributenew--”true”narlle--“Value_specification”map一”Translatablestring”select=”simpleproperty_association.specifiedvaluestring_valuevalue_specification”/5f/entity>那些配置将导致在XML模式中的下列表达:fxs:extensionbase一’’PLM_object”5fxs:elementname=”Valuetype”type--”xs;string”/>(/xs:sequence5</xs:extension5</xs:complexContent5</xs:complexType)196 GB/T16656.28—2010/[so10303—28:2007(XS:complexTypename一”Simplestrin.value”>(xs:complexContent>(/xs:extension>(/xs:complexContent>(/xs:complexType>10.3.3.1合成实体类型一个EXPRESS实体实例实例化了一个或多个在类型图中的节点,其中类型图和它的实体数据类型相联系,在8.5.1中定义。只包含实例化的节点的子图表有一个或多个“叶节点”和一个或多个“根节点”。如果子图表只有~个叶节点,那么可以说实体实例是特征化的。如果子图表有多于~个的叶节点,那么可以说,实体实例是非特征化的。注1:如果实体实例是特征化的,那么对应于叶节点的EXPRESS实体数据类型在EXPRESS模式中,就被声明具有出现在实体实例中的所有属性。如果实体实例是非特征化的,那么在EXPRESS模式中,就没有单个的实体数据类型有实例中的所有属性。当子类间是ANDOR关系时,这种情况可能发生。当规定了合成属性,实体指令就应该解释为定义一个合成数据类型(见8.5.4.5),这个合成数据类型以一组其他的非特征化的实体实例为特征。合成属性的值应该规定EXPRESS实体数据类型的集合,这个集合将在每一个以合成实体数据类型为特征的实体实例中实例化。也就是说,合成实体数据类型将被认为是出现在列表(在8.5.1描述)中的所有EXPRESS实体数据类型的一个子类,对于列表来说,包含对应于子图表的叶节点的EXPRESS实体数据类型是足够的。一个合成数据类型的默认XML名称应该是,出现在合成属性的值中的标识符的列表,每一个合成属性值都转化成一个XMI,名称,像在8.2.1中所规定的那样,由连字符分开。注2:如果实体指令定义一个合成数据类型,那么名称属性可能被用于规定合成数据类型的一个名称。如果没有出现名称属性,将构造一个名称,像在8.5.4.5中所规定的那样。示例:EXPRESS表达:ENTITYOrganizationiname:STRING;END_ENTITY;ENTITYSupplierSUBTYPEOF(Organization);supplierid:STRING;rating:INTEGBR:END—ENTITY;ENTITYCustomerSUBTYPEOF(Organization);customerid:STRING;sales—office:OrganizationEND_ENTITY;可能有既是供应商又是顾客的组织的实例,并且具有所有已声明的五个属性。为了在XML文档中适当地表达这些,有必要提供下列声明:fentitysynthetic=”CustomerSupplier”name。”Customer—and-supplier’’/、10.3.3.2新的实体类型当new=”true”,那么相关语境模式将被解释为有一个新的实体数据类型,这个实体数据类型基于l97 GB/T16656.28—2010/ISO10303—28:2007由选择属性的值所规定的EXPRESS实体数据类型。新实体的标识符应该是由名称选择项的值所规定的。新的实体数据类型不应该是抽象的。它不应该有超类和子类。新的实体数据类型应该有这样的属性:由包含在实体指令内部的属性指令所规定的属性。所有的那些属性应该或者是新的,或者是从EXPRESS实体数据类型的属性拿来的,其中的EXPRESS实体数据类型是新的实体数据类型所基于的数据类型。与其他的情况不同,为新的实体数据类型所规定的属性可能包含它所基于的实体数据类型的继承属性。注1:既然新的数据类型没有超类,那么它的属性都不能看做是继承来的。对于新的实体数据类型,相关语境模式应该包含8.6中所规定的整个定义集和声明集。它所包含的实体指令和属性指令应该解释为配置那些定义和声明。新的实体数据类型不替代它所基于的实体数据类型。除非那个实体数据类型有明确地选择:keep=”false”,那么它也应该映射到导出XMI.模式。注2:一个特定的EXPRESS实体数据类型可以是一个相应的XMI.数据类型和零个或多个新的实体数据类型的基础。10.3.4属性元素属性元素控制一个EXPRESS属性的表达。拥有这个属性的EXPRESS实体数据类型由所包含的实体元素来规定。(XS:elementname=”attribute”)(XS:choiceminOccurs=”0”maxOccurs=”unbounded”>98 GB/T16656.28—2010nso10303-28:2007(/XS:element>当规定new--”true”,一个新的EXPRESS明确属性应该被创建,为所有的由实体指令所选择的拥有它的实体数据类型而创建,在实体指令中,属性指令会出现。名称选项应该出现在属性指令中,并且新属性的标识符应该由名称选择项的值所规定。标识符在每一个所选择的实体数据类型的属性的名称中应该是唯一的。新属性的数据类型应该是字符串。新属性应该映射到导出XMI。模式,如8.6中规定的那样。属性指令上的所有其他选择.应该解释为适用到这个新属性的映射。特殊地,映射选择项或实现选择项(见下面)可能被用于规定实际的XMl.数据类型。当规定new=”true”,选择属性不应该出现。当new=”false”,选择属性应该出现,并且它的值应该是即将配置的EXPRESS属性的EXPRESS标识符,转化到一个XMI。名称,如8.1.2中所规定的那样。属性名称可能是合格的,通过预先考虑定义属性和一个句号字符的EXPRESS实体数据类型的标识符。如果继承映射适用于包含的实体数据类型。那么select属性的值应该规定一个EXPRESS属性,该EXPRESS属性在那个实体的声明中说明。如果无继承映射适用于包含的实体数据类型,那么select属性的值应该规定一个EXPRESS属性,该EXPRESS属性在那个实体数据类型或其任何超类的实体声明中说明。注:由继承而得的EXPRESS属性可能只有当-nl·ent眦}free(自由继承)映射适用于包含的实体数据类型时,它才(重新)配置。当使用继承映射,一个属性只能为这样实体所配置:这个实体的声明包含它配置影响属性的XM[。模式模型,并且那个模型是自动继承的。名称选项规定存取访问元素的名称或表达EXPRESS属性的存取访问属性的名称。exp—attribute选项规定EXPRESS属性如何在XM[.中表达。见lO.2.5。content选项规定这个属性的值在XML数据中是基于引用的表达,还是基于值的表达。见10.2.3。aggregate—content选项确定一个(可能是嵌套的)聚合值的基本元素值是基于引用的表达,还是基于值的表达。见10.2.4。map(映射)选项声明XMI。类型,XMI。类型应该被用于表达一个特定的EXPRESS数据类型。见10.2.13。use—id选项规定EXPRESS属性的基于值的表达是否有一个idXMI。属性。见lo.2.10。当配置属性是一个聚合类型时,tagless选择项控制集合的表达。见10.2.8。当配置属性是一个聚合类型时,flatten选择项控制嵌套集合的表达。见lo.2.9。notatin属性规定属性的一个二进制或字符串值的表达形式。见lo.2.16。keep属性在导出XMI。模式中控制EXPRESS属性的出现。见10.2.11。ref属性使得在8.6中所规定的映射被一个引用所替代,这个引用,在一个相互联系的命名空间中,是针对一个XMI。模式属性定义或元素定义的。见10.2.19。use属性可能改变属性的最小的基数。见10.2.20。implementation(实现)属性规定相应的存取访问元素的XMI.数据类型,或由一个明确的XMI。模式所构造的属性的XMI。数据类型。见20.2.21。示例1:(attributeselect=”placementlocation”exp-attribute=”attributetag”/)《attributeselect=”ref—direction”㈣e=”dir”j)</entity>示例2:EXPRESS表达:ENTITYstring—withlanguage;199 GB/T16656.28—2010/ISO10303—28:2007contents:STRING;language—specification:language;INVERSEused_by:SET[17]OFmultl_language_stringFORprimarylanguagedependent_string;ENDENTITY;用配置语言:用导出XML模式:(XS:complexTERename=“Translation”)(XS:simpleContent></xs:extension>(/xs:simpleContent)(/xs:compleWgype>10.3.5逆元素在EXPRESS中:当一个实体,叫做自实体,有一个明确的属性,这个属性的数据类型是一个实体数据类型或一个聚合类型,这个聚合类型的基类型是一个实体数据类型,在两个实体数据类型之间创建了一个关系。属性的数据类型,或者基类型,称作相联系的实体。在相关语境模式中,相联系的实体可能有一个逆属性,逆属性的数据类型是自实体,也可能没有这样的逆属性。在相关语境模式中,逆元素创建并且配置一个新的明确属性,这是通过在相关语境模式中插入一个已存在的关系实现的。逆元素应该包含在一个实体元素中。在相关语境模式中,实体元素选择相联系的实体数据类型。对于每一个相联系的实体数据类型,逆元素创建一个数据类型是自实体的明确属性。(XS:complexType>(/xs:element)有两种情况:——对于即将被转化的关系,相联系的实体有一个存在的逆属性。在这种情况下,选择选项出现在逆指令中,并且invert(转化)选择项不出现。——对于相联系的实体,创建一个全新的属性。在这种情况下,invert(转化)选项在逆指令中出席,选择选项不出现。在任何逆指令中,只应该出现一个选择和invert(转化)。当选择属性出现,它的值应该是所有实体数据类型的一个存在的逆属性的EXPRESS标识符,其中实体数据类型是由实体指令选出的,在实体指令中,出现逆指令。在这种情况下,即将转化的明确属性在已存在的逆属性中规定。如果选择属性也出现,名称属性是可选的,并且也出现,它就会重命名由选择属性标识的逆属性。如果转化属性出现,那么逆指令为所有的实体数据类型声明一个新的逆属性,这儿的实体数据类型是由实体指令所选择的,在实体指令中,出现逆指令。在这种情况下,转化属性的值声明即将转化的明确属性。这个属性的值由自实体的EXPRESS标识符,后面跟着PERIOD,后面跟着创建关系的(自实体的)明确属性的标识符所组成。在这种情况下,名称属性应该出现,并且应该用作相联系的实体数据类型的新的EXPRESS属性的名称。注1:只有当实体指令选择明确属性的数据类型的一个子类集合时,才可以有多于一个的相联系的实体数据类型。在相关语境模式中,minOccurs和/或maxOecurs配置属性规定新的明确属性的数据类型的上下限。如果maxOccurs的值是1(默认值),在相关语境模式中,新的明确属性的数据类型应该是自实体数据类型;如果规定minOccurs=”0”,明确属性应该当作可选来对待。否则,新的明确属性的数据类型应该是自实体数据类型的一个集合,它的界限是由minOecurs和maxOecurs给出的。新的明确属性应该映射到导出xML模式,和在8.6规定的一样。minOceurs和maxOccurs的规定值不应该和相关语境模式中的明确或隐含限制相冲突,尽管它们可能是加紧这样的限制。在其他情况下,原来的明确属性映射到导出XML模式,作为自实体的一个逆属性。并且新属性或以前的逆属性,映射到导出XML模式,作为相联系的实体数据类型的明确属性。注2:那就是“转化关系”的意思。逆指令的keep配置属性的值应用于即将转化的明确属性。一个选择明确属性的明确属性配置元素可能也规定keep属性。其他的配置选项和它们在属性配置元素中的配置选项有相同的值。示例1:下面的例子包含一个从EXPRESS模式中来的声明的inverse(倒置),在XML模式中:(entityselect=”applicationcontext”)(inverseselect=”contextelements”/)(/entity>示例2:下面的例子在相关语境模式中创建了~个inverse(倒置),这儿的相关语境模式不出现在起初的EXPRESS模式中。(entityselect=”product”)(inversename=”formation”invert=”productdefinition_formationof—product”/)(/entity>201 GB/T16656.28—2010/1SO10303—281200710.3.6聚合元素聚合元素控制嵌套集合的表达。它可能在一个类型元素或属性元素中使用,其中类型元素或属性元素对应于一个是嵌套集合的EXPRESS类型(最高层的嵌套在类型或属性元素中处理)。(XS:choiceminOccurs=”0”maxOccurs=”unb。unded’’>(/XS:element)名称配置选项的值规定相应的XML元素的名称。注:如8·2·2中所规定的那样,对tagless的特定使用将使得集合没有一个相应的元素。其他的选项与10.3.4所描述的属性元素中的选项有相同的含义.在103.4描述。10.3.7模式元素模式元素控制元素(xs:scherna)的所有方面,见8.7.3。它在一个配置中应该只出现一次。(/xs:element>202 GB/T16656.28—2010/ISO10303-28:2007targetNamespace配置选项的值规定目标命名空间的名称,所产生的XMI。模式应该使用。配置选项attributeFormDefauh和elementFormDefauh定义XS:attribute和XS:element的默认形式的属性值。有效的值是”qualified”和”unqualified“。defaultRootobjectType(如果提供的话)标识所有独立地可实例化的实体数据类型的抽象类型(超类)。defaultObJectType为exp:Entity和实例元素规定一个替代名称。如果也定义为addlti。nalObject,它可能有一个和exp:Entiyt不同的属性集。schemaVersion规定所用的XS:schema的版本属性的值。它标识由W3C所定义的XMLschemaI,anguage(XMI,模式语自)的版本。示例:1.0,1.0.1,1.1,1.2,1.3bl,2.0等。10.3.7.1元素Namespace1037.2元素namespace命名空间(namespace)元素命名一个命名空间,这个命名空间将包含在所产生的(XS:schema}声明的定义中。它应该在元素之中,见10.3.7。它可以出现零次或多次,依赖于所需要的包含次数。(XS:elementname=”include”)(XS:complexType}(/XS:element)urn配置选择项的值包含一个被包含的XML模式。Schemalocation标识所包含的模式的定位。10.3.7.4元素containerObject容器对象(containerObject)(如果存在)重命名exp:UOS元素,并且可能提供额外的属性。它的内容模式和UOS的相同。(XS:elementnaIIIe=”containerobject”)(XS:complexType>(xs:attributena/ne=”nijme”type=”xs:NMTOKEN”use=”required”/>Name(名称)配置选择项的值定义所插入的附加元素的名称。Implementation包含所插入元素的完整XMI,实现。所插元素可以有附加的XML属性。10.3.7.6(schema>配置的用法示例本条显示一个使用了(schema>元素和它的子元素的例子。它源自AP214一ARM外的PI。M,ServicesV1.0的产生。本例子只显示(schema>的主要方面。204(!一containerobjecttobegenerated(XS:complexTypename=”PLM—container”)(/xs:complexType>)(!一additionalObject”PLM_object”tobegenerated(/xs:complexType)一)(XS:complexContent>(xs:extensionbase=”PLM—object”/></xs:complexcontent)</xs:complexType)一)上面配置的结果是下面的PI,M—Services一1.0的选录。(?xmlversion=”1.0”encoding=”UTF一8”7)(xs:schematargetNamespace2http://schema.omg.org/spec/PLM/1.o/PLMInformationalModel.xsdxmlns=”http://www.omg.org/PLMServicesl0/XMLSchema”xmlns:XS=”http://wwww3org/2001/XMLSchema”elementFormDefault=”unqualified’’attributeFormDefault=”unqualified”version=”10”)(XS:choiceminOccurs=”0”maxOccurs=”unbounded”>(!一otherelementsremoved--></xs:choice>(XS:complexContent>(/xs:complexcontent>(/xs:complexType)(!一othergeneratedpartsnotshown一)(/xs:schema>10.3.8UosElement元素UosElement元素控制序列化单元的表达。(/xs:complexType></xs:element)name属性的值,如果存在,应该规定XML数据类型的名称和表达序列化单元的实例元素的名称。206 GB/T16656.28—2010/ISO10303—28.2007见8.8。任何addAttribute元素规定包含在序列化单元数据类型定义中的XMI.属性。10.3.9UosEntity元素UosEntity元素控制通用实体元素和数据类型的表达。(xs:complexType>(/xs:choice>(/xs:element>naNe属性的值,如果存在,应该规定XMI。数据类型的名称和表达通用实体类型的实例元素的名称。见8.5.3.3。任何addAttribute元素规定包含在通用实体数据类型的定义之中的XML属性。10.310RootEntity元素rootEntity(根实体)元素控制通用实体元素和数据类型的表达。(XS:elementname2”rootEntity”)name属性的值,如果存在,应该规定XML数据类型的名称和表达根实体类型的实例元素的名称。见8.5.3.4。任何addAttribute元素规定包含在根实体数据类型定义之中的XML属性。10.4配置属性配置模式包含下列XML数据类型的定义:exp--type,content,exp--attribute,exp-attribute-甜obaI,bOolean—or_unspecified,attributeType,naming-convention,patterns和nonNegativeInteger_orunbound—ed。(xs:simpleTypena/1Ie=”exp-type”>(xs:restrictionbase=”XS:string’’)(XS:enumerationvalue=”root”/)(XS:enumerationvalue=”value”/>(XS:simpleTypename=”content”)(XS:restrictionbase=”XS:string”>207 GB/T16656.28—2010/ISO10303—2812007f.(/xs:restriction)(/xs:simpleType>(XS:enumerationvalue=”attribute-content”/>(/xs:restriction></xs:simpleType)(XS:restrictionbase。”XS:string”>(xs:enumerationvalue=”double-tag”/>(XS:enumerationvalue=”attribute-tag”/)(xs:enumerationvalue=”attribute-content”/)(/xs:restriction)</xs:simpleType)(xs:restrictionbase=”xs:string”>(XS:enumerationvalue=”unspecified”/>(/xs:restriction)(/xs:simpleType>(/xs:union>(/xs:SimpleType>(xs:restrictionbase。”xs:normalizedString”></xs:restriction)(/xs:simpleType>(XS:restriction>(/xs:simpleType></xs:SimpleType)(XS:union)(xs:enumerationvalue=”unbounded”/)(/XS:restriction>(/xs:SimpleType></xs:union>(/xs:SimpleType>(xs:simpleTypena/ne=”qual”>(XS:enumerationvalue=”unqualified”/)(/xs:restrictlon)</xs:SimpleType)10.5配置指令的使用范围在7.2.2.2和第9章中,某些要求依赖于一给定配置指令是否应用于一给定EXPRESS元素或一给定值。本条定义每个指令应用的环境。注:使用范围内出现的冲突如lO.2中所描述的解决。10.5.1配置指令exp-attributeexpattribute指令的使用范围依赖于它的值,如下所描述。10.5.1.1值attribute-content如果下面的任何一个为真,expattribute=”attributecontent”指令应用于~给定EXPRESS属性:——ExPREss属性是一个实体数据类型,entityattribute--“attribute—content”指令由一个option指令(见10.3.1)描述,并且没有exp—attribute指令被明确指给这个属性。——ExPREss属性不是一个实体数据类型,concreteattribute=”attributecontent”指令由~个option指令(见10.3.1)描述,并且没有exp—attribute指令被明确指给这个属性。一一expattribute=”attributecontent”指令为实体数据类型(的所有属性)指定,属性在这个实体209 GB/T16656.28—2010/ISO10303—2812007数据类型中声明,或为那个实体数据类型的任何子类指定,这个实体数据类型在这个实体实例(见10.3.3)中实例化。一expattribute一”attributecontent“指令为正在讨论中的EXPRESS属性(见10.3.4)指定,在这里,范围entity指令选择实体数据类型,这个属性在这个实体数据类型中声明,或为那个实体数据类型的任何子类指定,这个实体数据类型在这个实体实例中实例化。10.5.1.2值type-tag如果expattribute--”typetag”指令为expattribute指令(见10.3.4)中的那个属性明确规定,那它应用于一给定EXPRESS属性,在这里,范围entity指令选择实体数据类型,这个属性在这个实体数据类型中声明,或为那个实体数据类型的任何子类指定,这个实体数据类型在这个实体实例(见10.33)中实例化。10.5.1.3值attribute-tag如果属性的数据类型不是一个实体数据类型并且下面任何一个是真,那expattribute--”attribute—tag”指令应用于一给定EXPRESS属性。——concrete—attribute=”attributetag“由一个option指令(见10.3.1)指定,或没有concrete—attribute值被指定,并且没有expattribute指令被明确指给这个属性;一指令expattribute=”attribute—tag”为这个实体数据类型的(所有属性)指定,这个属性在这个实体数据类型中声明(见10.3.3);指令expattribute一”attribute—tag”为正在讨论中的EXPRESS属性(见10.3.4)指定,在这里,范围entity指令选择实体数据类型,这个属性在这个实体数据类型中声明。只有当指令expattrilmte一”attributetag”明确指给讨论中的EXPRESS属性(见10.3.4)时。expattribute=”attributetag“应用于数据类型是实体数据类型的一个EXPRESS属性,在这里,范围entity指令选择实体数据类型,这个属性在这个实体数据类型中声明。例外:如果继承映射应用于是这个属性数据类型的实体数据类型.expattribute--”attributetag”并不适用于这个属性,即使已经明确指定时。注:egp—attribute一“attribute-tag”指令并不适用于集合。10.5.14值double-tag如果下面的任何一个为真,expattribute-”double—tag”指令应用于一给定EXPRESS属性:~这个属性的数据类型是一个实体数据类型并且entity—attribute一”doubletag”指令由一个option指令(见10.3.1)指定;——这个属性的数据类型不是一个实体数据类型并且concrete—attribute一”doubletag”指令由一个option指令(见10.3.1)指定;——指令expattribute:”double—tag”为实体数据类型的(所有属性)指定,属性在这个实体数据类型中声明(见10.3.3);——指令exp—attribute:”doubletag”为正在讨论中的EXPRESS属性(见10.3.4)明确指定,在这里,范围entity指令选择实体数据类型,属性在这个实体数据类型中声明;——这个属性的数据类型是一个实体数据类型并且没有其他expattribute值应用于那个EXPRESS属性。10.5.1.5值no-tag如果下面的所有都为真,expattribute--”no—tag”指令应用于一给定EXPRESS属性:⋯~这个属性的数据类型是一个实体数据类型,这个实体数据类型在这个内容模式中没有子类;——这个属性不是被声明为OPTIONAl.;——这个指令为讨论中的属性(见10.3.4)明确指定,在这里,范围entity指令(见10.3.3)选择实体数据类型,属性在这个实体数据类型中声明。210 GB/T16656.28—2010/ISO10303—28:2007注:exp—attribute--”no_tag”应用于这个实体和它的所有子类,属性在这个实体中声明。它不能选择性地应用于这个实体数据类型的子类,属性在这个实体数据类型中声明。10.5.1.6值no-tag-simple如果下面的所有都为真,exp—attribute--”no—tag—simple”指令应用于一给定EXPRESS属性:这个属性的数据类型是一个简单数据类型。——这个指令为讨论中的属性(见10.3.4)明确指定,在这里,范围entity指令(见10.3.3)选择实体数据类型,属性在这个实体数据类型中声明。同一个实体的所有其他属性,只要它们被映射成同一个复合类型,那它们被声明exp-attribute=”attribute-content”。10.5.2配置指令content和use-id如果下面的任何一个为真,content或use—id指令应用于一给定EXPRESS属性:⋯一一这个指令为实体数据类型的(所有属性)指定,属性在这个实体数据类型中声明,或为那个实体数据类型的任何子类指定,这个实体数据类型在自己的实体实例(见10.3.3)中实例化;这个指令为讨论中的EXPRESS属性(见10.3.4)指定,在这里,范围entity指令(见10.3.3)选择实体数据类型,属性在这个实体数据类型中声明,或为那个实体数据类型的任何子类指定,这个实体数据类型在自已的实体实例中实例化。Useid应该只应用于数据类型是一个实体数据类型的属性。如果use—id应用,那content一”value”也应用。如果下列任何一个成立,那content指令应用于一给定值的编码:一这个指令应用于具有那个值的那个属性.或——这个值是一个聚合值的成员,并且这个指令被指定给那个集合(见10.3.6)。10.5.3配置指令exp·type如果下列任何一个成立,那么exptype指令应用于一个EXPRESS数据类型:一一这个指令由一个option指令(见10.3.1)指定给序列化单元中所有的EXPRESS数据类型;——这个指令指定给讨论中的EXPRESS数据类型(见10.3.2和10.3.3),或⋯一这个指令指定给某个数据类型,这个数据类型是一个子类,或一个规范。如果这个指令应用于在这个实体实例(见lo.3.3)中实例化的任何实体数据类型,那exp—type指令应用于一个实体实例。如果这个指令应用于这个值的数据类型(见10.3.2),那exptype指令应用于非实体数据类型的一个值。10.5.4配置指令map如果下面的任何一个为真,map配置指令(见10.2.13)应用于一个EXPRESS属性:——m印指令为这个属性(见10.3.4)明确指定;——map指令为这个属性(见10.3.2)的数据类型指定;map指令为某个数据类型指定,这个属性的数据类型是一个规范。如果下面的任何一个为真,map配置指令应用于一给定值:——map指令为这个值(见10.3.2)的数据类型指定;——map指令为某个数据类型指定,这个值的数据类型是一个规范;——map指令明确指定给一个地方,在这个地方,这个值将要被编码——为这个属性的值(见9.4.3),或一个聚合值的成员(见9.8)。10.5.5配置指令tagless如果下面的任何一个为真,tagless配置指令(见10.2.8)应用于一个EXPRESS聚合数据类型:一一ta91ess指令为type指令(见10.3.2)中的数据类型明确指定;211 GB/T16656.28—2010/iso10303-28:2007——tagless指令为某个数据类型指定,这个数据类型是一个特例;——Ta91ess指令出现在一个aggregate元素(见10.3.6)中为嵌套数据类型指定,这个嵌套数据类型作为其他聚合类型的基本类型出现。如果下面的任何一个为真,tagless配置指令应用于一个EXPRESS属性:——tagless指令为这个属性(见10.2.5)明确指定;——ta91ess指令应用于这个属性的数据类型,如上所描述。例外:指令tagless=”true”只应用于聚合数据类型,这些聚合数据类型的最深层基类型(见8.2.2.4)是以下之一:一EXPRESS类型BOOLEAN、INTEGER、LOGICAL、REAI。或NUMBER;——STRlNG数据类型,它的值将不会包含空格;——BINARY数据类型,它的值将是八位字条字符串(8位二进制数字的倍数);——基本数据类型为ENUMERATION的自定义数据类型;——命名数据类型,它由map配置指令(见10.2.13)映射到值不包含空格的一个XML简单类型;一自定义数据类型,它是上面任何类型的专门化;一实体数据类型,它使用无继承映射(见8.5)并且它的值由允许引用表达exptype一”root”或exptype一”unspecified”配置指令规定(见9.3)。注:tagless--”true”指定xs:list形式应当用来表达这个聚合值。因此,只有当这个组件的XMI。表达有simplel、ypes和不包含空格时,它才可用。如果tagless配置指令应用于一个EXPRESS属性,则它将应用于取值为该EXPRESS属性值的聚合值,如上所描述的。10.5.6配置指令flatten如果下面的任何一个为真,flatten配置指令(见10.2.9)应用于一个EXPRESS聚合数据类型:——flatten指令为type指令(见lo.3.2)中的数据类型明确指定;——fIatten指令为某个数据类型指定,这个数据类型是一个特例;——flatten指令出现在一个aggregate元素(见10.3.6)中为嵌套数据类型指定,这个嵌套数据类型作为其他聚合类型的基本类型出现。如果下面的任何一个为真,flatten配置指令应用于一个EXPRESS属性:一~flatten指令为这个属性(见10.3.4)明确指定;——flatten指令应用于这个属性的数据类型,如上所描述的。如果flatten配置指令应用于这个EXPRESS属性的值,那这个flatten配置指令应用于这个值。10.5.7配置指令inheritance如果一个继承配置指令在一个用于选择实体数据类型的范围实体指令中规定,那么这个继承配置指令应用于一个特定的EXPRESS实体数据类型。如果一个继承配置指令在一个范围选择项指令中规定,并且一个继承指令不在一个用于选择实体数据类型的范围实体指令中规定,那么这个指令应用于一个给定的EXPRESS实体数据类型。10.5.8配置指令notation标记配置指令应用于这样的数据类型:这个数据类型是在声明中选择的,或者这个数据类型是在声明中所选择的数据类型的特殊化。标记配置指令应用于这样的EXPRESS属性:这个属性是在声明中选择的,或者指令应用于那个EXPRESS属性的数据类型,像在上面规定的那样。标记配置指令应用于这样的值:如果这个值是一个数据类型值,或者这个值是一个属性,而指令应用于这个属性,像在上面规定的那样。10.5.9配置指令keepkeep配置指令(见10.2.1】)应用于一个EXPRESS属性,如果它是明确地为那个属性而规定的。’17 GB/T16656.28—2010/ISO10303-28:2007keep配置指令应用于一个EXPRESSINVERSE或者DERIVED属性,或者当keepall选择项是为EXPRESS属性类型而规定的并且没有keep指令明确地为那个属性而规定。那么keep配置指令也应用于一个由转化指令所转化的EXPRESS属性。keep配置指令应用于一个数据类型,如果那个数据类型是从声明中选择的。keep配置指令应用于一个EXPRESS实体,如果它是明确地为那个实体而规定的(见10.3.3)。10.5.10配置指令refref配置指令(见10.2.19)应用于一个EXPRESS属性,如果它是明确地为那个属性而规定的。10.5.11配置指令Useuse配置指令(见10.2.20)应用于一个EXPRESS属性,如果它是明确地为那个属性而规定的(见10.3.4)。10.5.12配置指令ImplementationImplementation配置指令应用于一个EXPRESS实体,如果它是明确地为那个实体而规定的(见10.3.3)。Implementation配置指令(见10.2.21)应用于一个EXPRESS属性,如果它是明确地为那个属性而规定的(见10.3.4)。10.5.13配置指令facetfacet配置指令应用于一个EXPRESS实体,如果它是明确地为那个实体而规定的(见10.3.3)。 GB/T16656.28—2010/ISO10303—28:2007附录A(规范性附录)用于联编EXPRESS模式的统一资源名本附录规定的统一资源名(URN)可用于指定国际标准中发布的EXPRESS模式的联编,其中的联编与本部分的内容保持一致。本部分要求的XMI,命名空间声明应可以使用相应的URN。A.1基本XML模式的URN在基本XMI。模式(附录c)中所规定的文档描述元素应该属于下列URN所标识的命名空间。urn:iso:std:iso:10303:一28:ed一2:tech:XMI.schema:commonA.2配置语言模式的URN在配置语言模式(附录B)中所规定的文档描述元素应该属于下列URN所标识的命名空间。urn:iso:std:iso:10303:一28:ed一2:tech:XMI,schema:configuration_languageA.3文档模式的URN在文档模式(附录D)中所规定的文档描述元素应该属于下列URN所标识的命名空间。urn:iso:std:iso:10303:一28:ed2:tech:XMI。schema:documentA.4带注册对象标识符的EXPRESS模式的URN如果EXPRESS模式有国际标准所规定的URN,应使用所规定的URN。如果EXPRESS模式没有规定的URN,但有一个实际存在的ASN.1对象标识符,对应的URN应该是1ETFRFC3061所规定的那个URN,IETFRFC306l规定了每个ASN.1对象标识符的URN。注;对于其ASN.1对象标识符在Is()标准中注册过的那些EXPRESS模式,下列结构适用:iso(1)standard(0)(XS:schemaxmlns:xs=”http://wwww3org/2001/X_MLSchema”xmlns:cnf=”urn:iso:std:iso:10303:一28:ed_2:teeh:ⅪMLschema:configuration_language’’targetNamespace=”urn:iso:std:iso:10303:一28:ed一2:teeh:XMLschema:configuration_language’’elementFormDefault=”unqualified”attributeFormDefault=”unqualified”)(XS:elementname=”configuration”nillable=”true”)(XS:complexType>(/xs:element>(XS:elementref=”cnf:schema”maxOecurs=”1”/)(/xs:choice>(/xs:complexType)(/xs:element>(XS:elementname=”option”>(XS:complexType>(/xs:element>(XS:elementref=”cnf:aggregate”/>(/xs:choice>(xs:attributename=”select”type=”cnf:patterns”use=”required”/)(/xs:element)(XS:complexType>(/xs:choice)(/xs:SimpleType></xs:simpleType>(,/xs:attribute)(XS:attributename=”inheritance”type=”XS:boolean”default=”false”/)(xs:attributename=”name”type;”XS:NMTOKEN”use=”optional”/)(/xs:complexType)</xs:element>(XS:choiceminOccurs=”0”maxOccurs=”unbounded”>(XS:elementref=”cnf:aggregate”/)(/xs:choice>(XS:attributename=”select”type=”xs:NMTOKEN”use=”optional”/>(xs:attributename=”n鲫e”type=”xs:NMTOKEN”use=”optional”/>(xs:attributename=’’exp-attribute”type=”cnf:exp-attribute”use=”optional’’/、(XS:attributename=”content”type=”cnf:content”use=”optional”/)(/xs:element>(XS:elementname=”inverse”)(XS:complexType></XS:element)(/ms:choice>《xs:attributenaf】le=”na/ne”type=”xs:NMTOKEN”use=”oDtional"/) GB/T16656.28~2010/IS010303-28.2007(。s:attributename2”flatten”type=”XS:boolean”use=”optional”/7‘/xs:complexType>(/xs:element>(XS:elementname=”schema”)‘XS:complexType)(XS:choicemaxOccurs=”unbounded”,(xs:elementref=”cnf:namespace”minOccurs=⋯0’maxOccurs=”unbounded’’/、(xs:elementref=”cnf:include”minOccurs。’⋯0maxOccurs=”unbounded”/>(KS:elementname=”additionalOb]ect”、(/xs:element)(XS:elementname=”namespace”)(XS:complexType7(/xs:element>(XS:attributename=”schema-location”type=”xs:string’’/>(/xs:complexType>(/xs:element>(XS:elementname=”addAttribute”)(/xs:element>(/xs:simpleType)(XS:simpleTypename=”exp-attribute-global”)(XS:restrictionbase=”xs:string”>(XS:enumerationvalue=”double-tag”/>(/xs:restriction)</xs:simpleType)(XS:enumerationvalue=”ref”/>(/xs:restriction>(/xs:simpleType)(XS:enumerationvalue=”camel—case”/>(XS:union>(XS:simpleType>(XS:restrictionbase=”XS:boolean”/></xs:simpleType>(xs:simpleType)(/xs:restriction)(/xs:simpleType>(/xs:union>(/xs:simpleType>(XS!enumerationvalue=”inverse”/)(XS:enumerationvalue=”derive”/>(XS:enumerationvalue=”derive-inverse”/)(/xs:restriction)(/xs:SimpleType>{XS.Union,22l GB/T16656.28—2010/Iso10303—28:2007222(XS:simpleType>(XS:enumerationvalue5”unbounded”/>(/xs:restriction>(/xs:simpleType)</xs:union></xs:simpleType>(/xs:simpleType>(ms:minLengthvalue=”1¨/></xs:restriction)</xs:simpleType)</xs:restriction)(/xs:simpleType)(/xs:simpleType>(XS:elementname=”uosElement”)(XS:choiceminOceurs2”0”maxoccurs=”1”>(xs:elementref=”cnf:addAttribute”/></xs:choice>(/xs:complexType>(/xs:element)(/xs:choice></xs:complexType)(/xs:element) GB/T16656.28—2010/ISO10303-28:2007(/xs:choice>(/xs:complexType>(/xs:element></xs:schema>223 GB/T16656.28—2010/ISO10303—28:2007224附录C(规范性附录)基本XML模式(?xmlversion=”1.0”encoding=”UTF一8”?>(XS:schematargetNamespace2”urn:iso:std:iso:10303:一28:ed-2:tech:XMLschema:common”x】nins:exp2”urn:iso:std:iso:10303:一28:ed一2:tech:XMLschema:common’’xmlns:XS=”http://www.w3.org/2001/XMLSchema”>(!一ROOTELEMENTUOS-一)《xs:elementref=”exp:header”minoccurs=”0”/>(/xs:sequence>(xS:attributename=’’defaultLanguage”type2”XS:language”use=”optional”/)(/xs:complexType>(XS:elementname=”UOS”type=”exp:UOS”)(xs:keynjliRe=”base64Binary-key”>(/xs:key) GB/T16656.28—2010/ISO10303—28:2007(/xs:key)《XS:keyname=”boolean-key”)(/xs:key)(XS:keynigJ6e=”double-key”>(/xs:key)(XS:keyname=”long—key”)(/xs:key)(XS:keyname=”string.-key”)(/xs:key>(/xs:element)(!~UOSandDOCUMENTHEADER--)(XS:complexType)(XS:elementname=”address—line”type=”xs:string”minOccurs=⋯0maxOccurs=”unbounded”/)</xs:sequence)(/xs:complexType>(/xs:element)</ms:sequence,</xs:complexType>(MS:elementname=”header”)(/xs:complexType>(/xs:element>TheEntitytypeisthesupertypeforeveryEXPRESSentityItprovidestheexpidattributethatisthelocalidentifierforeachinstanceaswellastheotherexpdescriptiveattributes</xs:documentation>(/xs:annotation>(XS:sequence>(KS:anynamespace=”##any”processc。ntents5”skip”maxOccurs=”unbounded’’/>(/xs:sequence>(/xs:complexContent>(/xs:complexType></xs:element>!一UNRESTRICTEDAGGREGATIONTYPEDEFINITIONS-->XS:complexTypename=”Seq-IDREF”)(XS:simpleConten七>(/xs:simpleContent>(/xs:complexType>(XS:attributeGroupref=”exp:instanceAttributes”/>(/xs:extension>(/xs:si“pleContent)</xs:complexType>(!一GLOBALATTRIBUTEDECLARATIONS-->(!一EXPARRAY-->(xs:SimpleType>(/xs:simpleType></xs:simpleType>(/xs:attribute>227 GB/T16656.28--2010/IS010303-2812007228(XS:attributename=”cType”)(XS:simpleType)</xs:simpleType>(/xs:attribute>(XS:simpleTypename=”aggregateType”)(XS:restrictionbase=”XS:normalizedstri“g’’)(xs:enumerationvalue=”array”/)(xsiattributename=’’pos”use=’’optional‘‘、(xs:SimpleType)(XS:restriction)。</xs:simpleType></xs:simpleType>(/xs:attribute></xs:attributeGrou口)(xs:attributename=”attributeType”>(XS:simpleType>(XS:restrictionbase=”xs:normalizedString”)(x8:enumerationvalue=”inverse”,/>(XS:enumerationvalue=”derived”/)(/xs:attribute>(!一SIMPLETYPEDEFINITIONS-->(XS:complexTypename=”base64Binary”) GB/T16656.28—2010/18010303—28.2007(XS:SimpleContent)(XS;extensionbase=”XS:base64Binary”)(/xs:simplecontent>(/xs:complexType>(XS:enumerationvalue=”false”/)(/xs:restriction)(/xs:simpleType>(!一OTHERNEEDEDTYPEDEFINITIONS-一)(/xs:SimpleType)(!一WRAPPERFORATOMICSIMPLETYPES-o(XS:elementname=”base64Binary-wrapper”nillable=’。true’’、(XS:complexType)(xs:simpleContent)《XS:at七ributeGro“pref=”exp:inst;hnceAttributes。’/)(/XS:extension>(/xs:simplecontent)(/xs:complexType)(/xs:element>(/xs:simplecontent>229 GB/T16656.28—2010/[so10303—28:2007230(/xs:complexType)(/xs:element>(XS:simpleContent>(/xs:extension)(/xs:Simplecontent></xs:complexType)(/xs:element)(/xs:simplecontent)(/xs:complexType)(/xs:element>(!一WRAPPERFORATOMICSIMPLETYPES--)(XS:complexType>(XS:SimpleContent)(XS:extensionbase=”XS!boolean”)(/xs:extension>(/xs:simplecontent>(/xs:complexType)</xs:element)(/xs:extension></xs:simpleContent)(/xs:complexType)(/xs:element>(XS:simpleContent)(/xs:extension>(/xs:simplecontent)(/xs:complexType></xs:element>(/xs:simplecontent)(/xs:complexType>(/xs:element>(XS:simpleContent)(XS:extensionbase=”XS:normalizedStrin口”)(/xs:SimpleContent)</xs:complexType)(/xs:element>(KS:elementname=”generalString-wrapper”nillable=’’true”)(XS:complexType>(XS:simpleContent>(/xs:simpleContent>(/xs:complexType>(/xs:element)(XS:simpleContent)(xs:extensionbase=”XS:languaqe”)(/xs:simpleContent>(/xs:complexType)(/xs:element>(/xs:extensios)(/XS:SimpleContent>《/XS:complexType>(/xs:element>(XS:simpleCon七ent>(XS:extensionbase=”XS:OName”>(/xs:simpleContent>(/xs:complexType>(/xs:element>(XS:simpleContent>instanceAttributes”/)(XS:extensionbase=”xs:NMTOKEN’’>(/xs:Simpleconten七)</xs:complexType>(/xs:element>(XS:elementDB/Ile=”anyURI—wrapper”nillable=’’true’’)(XS:simpleContent)(/xs:sioplecontent)</xs:complexType></xs:element)</xs:schema> 附录D(规范性附录)文档模式GB/T16656.28—2010/ISO10303—28:2007(?xmlversion=”10”encoding=”UTF一8”"(xs:schemaxmlns:xs=”http://wwww3org/2001/XMLSchema”xmlns:doc=”urn:iso:std:iso:10303:一28:ed-2:tech:XMLschema:document’’targetNamespace2”urn:iso:std:iso:10303:一28:ed一2:tech:XMLschema:document’。xmlns:cnf=”urn:iso:std:iso:10303:一28:ed-2:tech:XMLschema:configuration—language”xmlns:exp=”urn:iso:std:iso:10303:一28:ed-2:tech:XMLschema:co衄on”elementFormDefault=”unqualified”at七ributeFormDefault=’’unqualified”)(1-一Thevalueforexp.xadbelowprovidesthelocationoftheBaseXMLSchema(seeAuqnexC)Thevalueforcnf.xsdbelowprovidesthelocationofthec。nfigurationlanguageXML模式(seeAnnexB)一)(xs:importschemaLocation=”one.xsd”namespace=”urn:iso:std:iso:10303:一28:ed一2:tech:XMLschema:configurationlanguage”/)(xs:importschemaLocation=”exp.xsd”namespace=”urn:iso:std:iso:10303:一28:ed-2:tech:X_MLschema:common”/)(xs:elementname=”isoi0303—28”)(xs:complexType)(xs:sequence)(xs:elementref=”cnf:configuration”/></xs:choice>I/xs:sequence>(xs:complexType>(/xs:complexType)</xs:element>(XS:elementname=”express”nillable=”true”)(XS:complexType>(/xs:extension></xs:si“plecontent)</xs:complexType>(/xs:element>(!一EXPRESSMODELSCHEMA-->(!一ThissetofdeclarationsdefinesamodeloftheEXPRESSlanguageasspecifledbyISO10303—11.2:2004一>(!一datatype一)(!一representsthestructureofanEXPRESSdatatypereferenece--)(XS:sequence,</xs:sequence></xs:group>(!一identifiers一) GB/T16656.28—2010/I,Y)10303—2812007(xs:restrictionbase=”XS:string”/)</xs:simpleType>(!一express.text一)(!一representsabodyofunparsedEXPRESStext--)(!一description一)(!一TheoriginalDTDversionofthisusedanXMLparameterentity-->(!一toallowthestructureofthedescriptionelementtobe一)(!一externallyspecified-->(/xs:simpleType>(!一graphic.element一>(!一representsanEXPRESS-Greferencesymbol--)(XS:elementname=”graphic.element”)(XS:complexType>(XS:attributenaNe2”page”type=”XS:string”use=”required”/>(!一Thisisthedocumentelement,containingoneormoreschemas.一>(XS:sequence)(xs:elementref=”doc:description”minOccurs=”0”/)(XS:simpleType)(XS:enumerationvalue=”1”/)235 GB/T16656.28—2010/ISO10303-28:2007236’</xs:restriction>(/xs:simpleType)(/xs:attribute>(/xs:element)/xs:element>!一EXPRESSlanguageelements一)!一SCHEMAdeclaration一)XS:elementna]ne=”schema”>(xs:elementref=”dec:constant”minOccurs=”0”maxoccurs=”unbounded”/>(XS!elementref=”dec:procedure”/)(XS:elementref=”doc:rule”/>(xs:elementref=”doc:subtypeconstraint”/>(xs:attributenaffle=”id”type=”xs:ID”Hse2’’required’’/)(/xs:complexType)(/xs:element)(!-一interface(USEandREFERENCE)-->(XS:elementname=”interface”)(XS:complexType>(KS:elementref=”doc:interfaceditem’。minoccurs=⋯0。maxoccurs=“unbounded”/、(XS:elementref=”doc:describeditem”minoccurs=”0”maxoccurs=’’unbounded”/、(/xs:sequence>(xs:attributename=”kind”default=”USE”)(XS:enumerationvalue=”USE”/)(XS:enumerationvalue=”REFERENCE”/)</xs:restriction)(/xs:simpleType>(/xs:attribute>(/xs:element>(!一interfaceditemREFERENCEFROMschema(interfaceditem.nameASalias)一)(XS:elementname=”interfaced.item”>(xs:complexType>(XS:attributename=”name”type=”doc:identifier”use=”required”/)</xs:element>(!一described.itemAdescriptiOnofaninterfaceditem.Thedescribed.itemspecifieswhatkindoflanguageelementtheinterfaced.itemis,andmayincludeotherdocumentation.237 GB/T16656.28—2010/ISO10303-28.2007itemistheEXPRESSidentifierfortheinterfaceditemattributeisusedtodescribeattributesofaninterfacedENTITYitemisthena/neoftheentityattributeisthenameoftheattribute一)(XS:sequence>(XS:enumerationvalue=”ATTRIBUTE”/)(XS:enumerationvalue=”FUNCTION”/)(xs:enumerationvalue=”PROCEDURE”/)(/xs:restric七ion)(/xs:SimpleType>(/XS:attribute></xs:complexType></xs:element>(!一CONSTANTdeclaration一)(XS:elementname=”constant”)(XS:sequence>(/xs:sequence)</xs:complexType></xs:element>(XS:sequence>xs:elementref=xs:elementref=xs:elementref=(xs:elementref=(/xs:choice)GB/T16656.28--2010/ISO10303—28:2007”dec:typename”/)”doc:builtintype”/)”doc:enumeration”/>”doc:select’’/></xs:complexType>(/xs:element>(/xs:element>(!一builtintype2adatatypeidentifiedbyanEXPRESSkeyword-->(xs:elementns/ne=”builtintype”)(xs:complexType>(xs:restrictionbase=”xs:string”)(xs:enumerationvalue=”INTEGER”/)(xs:enumerationvalue=”LOGICAL”/)</xs:simpleType>(/xs:attribute)(!一WidthspecificationforBINARYorSTRING--)(!一~Fixedspecificati。nforBINARYorSTRING-一>239 GB/T16656.28—2010/ISO10303—28.2007240(!一PrecisionsDecificatlonforREAL一>(!一TypelabelonGENERICorGENERIC-ENTITY-一>(/xs:complexType>(/xs:element>(卜一aggregate2anaggregationtypeconstructor-一)(xs:complexType>(XS:enumerationvalue=”ARRAY”/)(/xs:attribute)(/xs:element>(!一select2aselecttypeconstructor一)(xs:attributename=”selectitems”type=”doc±identifiers”use2’’optional”/) GB/T16656.28—2010/[SO10303—28.2007(/xs:complexType)(/xs:element)(xs.elementname=”entity”5(XS:complexType>(/xs:sequence>(/xs:element>(XS:sequence>(/xs:element>(!一inverse=aninverseattributedeclaration-->(/xs:element>(!一inverse.aggregate2multiplicityspecificationforinverseattributetypeisSETorBAGlowerislower-boundspecificationupperisupper—boundspecifieation-->《xs:restrictionbase=”XS:string”)(xs:enumerationvalue=”BAG”/)(/xs:restriction)(/Ks:SimpleType)(/xs:attribute> GB/T16656.28—2070/]SO10303-28.2007</xs:element>(!一redeclaration2theattributebeingredeclaredbythisattribute->(XS:elementname=”redeclaration”)(KS:complexType></xs:element)(!一where。aruledeclaration-->(!一usedforbothlocalrulesandglobalrules-->(XS:elementname=”where”>(XS:complexType>(KS:sequence>(/ms:complexType></xS:element)(!一unique=aUNIQUEruledeclaration->(XS:complexType)tXS:sequence>(/xs:element>(卜一unique,attribute—akeyattributeinaUNIQUErule一>(XS:elementname=”uniqueattribute”)(XS:complexType>(/xs:complexType></xs:element>(!一algorithms一>(!一FUNCTIONdeclaration-->(/xs:sequence)(/xs:element)(!一PROCEDUREdeclaration-->(XS:elementname=”procedure”)(/xs:sequence)(/xs:complexType>(/xs:element) GB/T16656,28—20IO/ISO10303—28:2007‘/xs:sequence)(xs:at"tributenaJI】e=’’name”type=”doe:identifier”use=”required”/>(/xs:complexType>(/xs:element>(卜一algorithmrepresentsthefunction/procedurebody,includinglocalvariabledeclarations,asastring-一>(xs:elementnune=”algorithm”type=”doc:expresstext”/>(!一RULEdeclaration-->(xs:elementnune=”rule“)(XS:complexType)(xs:sequence>(xs:attributename=”appliesto”type=”doc:identifiers”use=”required”/)</XS:complexType)(/xs:element>(/xs:schema>245 GB/T16656.28—2010/[SO10303—28:2007附录E(规范性附录)EXPRESS实体实例的有效群作为一个组,如果EXPRESS实体实例集满足EXPRESS模式中申明的所有规则和其他约束条件,则它是该模式的一个有效群。GB/T16656.11规定了怎样构建集的有效性。本附录规定确定EXPRESS实体实例有效集的机制,且EXPRESS实体实例用本部分规定的XMI,元素表达。有效集的要求之一就是集中任何实体实例的属性所引用的EXPRESS实体实例应该也在集中。正如GB/T16656.11所定义的一样,一组序列化单元元素中所表达的EXPRESS实体实例集未必是一个有效集。元素可能包含对同一个文档中的其他序列化单元元素所表达的EXPRESS实体实例的引用,也可能包含对其他文档中的系列化元素所表达的EXPRESS实体实例的引用,或者也可能包含对有其他表达的EXPRESS实体实例的引用。往1:932描述了上述所有形式的“外部引用”。因此,用于表达EXPRESS实体实例有效集的XMI。元素可以来源于多个序列化单元元素,也可能来源于多个文档。对有几个序列化单元元素(或其他表达)无要求,只要求它们是由同一个相关语境模式所控制的。本附录E.1规定的规则可用于确定引用EXPRESS实体实例的有效性。其中,EXPRESS实体实例不属于引用的序列化元素组。注2:GB/T1665621—2008所规定的“数据段”可以包含一些EXPRESS实体实例的表达,其中,EXPRESS实体实例被序列化单元元素中的EXPRESS实体实例表达所(外部)引用。数据段也符合某个相关语境模式,这个相关语境模式可能和引用序列化单元元素的语义环境相同,也可能不相同。生成一个符合本部分的文档的前置处理器可以规定用于表达有效集的实体实例集,用5.3中所规定的schema—population元素。在那个元素中,需要一个确定方法的标识符,以此标识组成集的EXPRESS实体实例的算法。本附录的E.2定义可能用作确定方法的算法,和它们的相应的标识符。附录中所规定的机制希望得到广泛使用,但是不希望扩展它们。确定有效集和有效实体引用的其他机制可能在其他地方规定,可能在符合性文档的schema—population元素中标识,符合性的后处理程序也可能使用。注3:本附录的以下内容在功能上和GB/T16656212008的附录G是等同的,但是所引用的对象在本部分的其他类似地方定义,并且一些默认是不同的。E.1引用的有效性本条描述了三种确定什么是实体实铡间有效引用的方法,以确定一个集的有效性。还可能有其他的方法,但是不在本部分规定。注:文档作者可以用本条描述的方法定义EXPRESS模式,也可定义两个或多个模式问的引用有效性。当确定一个集的有效性时,实现方法必须引用这样的文档,即定义完整的EXPRESS描述模式,以及在EXPRESS中没有陈述的其他需求和限制。如果这个模式和其他模式结合在一起使用,那么那个文档也必须定义什么引用是有效的。希望这个确定只做一次,就能控制符合那个文档的EXPRESS模式集合的所有使用。也希望这样一个文档指定~个特定的EXPRESS模式作为控制模式,一个集的有效性在这个控制模式下确定。也就是说,那个文档明确地或隐式地规定用于所有集的引用有效性机制,这些集在指定模式(控制模式)下验证。E.1.1模式标识方法如果使用这个方法,定义在不同的序列化单元元素(或其他模式实例的表达)中的EXPRESS实体246 GB/T16656.28—2010/ISO10303—28:2007实例之间的引用应该是有效的,只有当引用序列化单元元素和包含被引用实体实例的序列化单元元素由同一个相关语境模式来控制。为了实现此目的,术语“同一个相关语境模式”应该引用共享了一个常见的EXPRESS标识符和含义的EXPRESS模式,但是,它应该扩展到包含这个模式的不同版本。一个后处理程序可以确定,当两个EXPRESS模式的标识的形式不同时(例如:一个通过名字标识,另一个通过URI),这两个EXPRESS模式是否相同,这种机制不在本部分规定。示例:考虑下列两个EXPRESS模式:SCHEMAmr—smiths—garden;ENTITYgarden;has—beds:SET[1:?]OFbed;neighbours—garden:OPTIONALgarden;END_ENTITY;ENTITYbed;flame:STRING;holds—plants:SET[1:?]OFplant;END_ENTITY;ENTITYplantnameSTRING;END—ENTITY;ENDSCHEMA(+mr_smiths—garden*);SCHEMAmr—jones—garden;USEFROMmr_smiths—garden(plant);ENTITYgarden;has—beds;SET[1:?]OFbed;neighboursgarden:OPTIoNALgarden;ENDENTITY;ENTITYbed;nallle:STRING;holdsplants:SET[1:?]OFplant;ENDENTITY;ENTITYoutdoor_plantSUBTYPEOF(plant);survivalphrange:phrange;ENDENTITY;TYPEph_value=REAL:END_TYPE;ENTITYphrange:rain:phvalue;max:phvalue;EliD-ENTITY;ENDSCHEMA;以及与iso10303—28相关联的元素:‘x8:schematargetNamespace=”urn:mrsmithcouk:exp/Mrsmiths—garden”ⅪⅡlns:xs=”http://㈣w3org/2001/XMLSchema”xmlns:exp2”urIl:iso:std:iso:10303:一28:ed-2:tech:XMLschema:comorl’1xmlns:msg=“urn:mrsmithcouk:exp/Mr—smiths_garden’1)247 GB/T16656.28—2010/ISO10303—28:2007(xs:complexTypename=”Garden”>(xs:complexContent>《xs:elementname=”Hasbeds”)(xs:restrictionbase。”exp:array”>(xs:sequence)(/xs:complexType>(/xs:element>(xs:elementIme2”Neighbours—garden”minOccurs=’’0”nillable=”true”、<)fs:choice>(xs:elementref=”msg:Garden”/)</xs:choice>(/xs:complexType>(/xs:element></xs:sequence></xs:extension>(/xs:complexContent>/xs:complexType)xs;elementDame2”Garden”type=”msg:Garden”nillable:’’true”block=”extensionrestriction”substitutionGroup=”exp:Entity”/)xS:complexTypeDame=”Bed”>(xs:complexContent> GB/T16656.28--2010/1S010303.28:2007(xs:attributeref=”exp:cType”fixed=”set’1/)(/xs,restriction></xs:complexContent)t/xs:complexType>(/xs:element>(/xs:8e耻nce)(/xs:extension></xs:complexContent)(/xs;eomplexType>(xs:e]em臼ntmme。”Bed”type=”msg:Bed”nillable=”true”block2”extensionrestriction”substitutionGroup=”exp:Entit州>(xs:complexTypename=”Plant”)(xs:complexContent></xs;extension)(/xs:complexConteit>(/xs:complexType>‘xs:elementr且me=”Plant”type=”msg:Plant”nillahle2”trurblock2”extensionreshriction”substitutionGroup=”exp:Entity”/7(/xs:schema>‘xs!sequence>(xs:elementname=”Hasbeds”、‘KS:complexType)(x8:complexContent)(xs:sequence)(x8:elementref=”mjg:Bed”minOccurs2”1’’maxOccurs=7。unbounded”/、(/xs:sequence>(xs:attributeref=”exp:cType”fixed=”set。’/)‘/xs:restriction><,/xs:complexContent>(1xs:complexType>(,/xs:element></xs:complexType>(/xs:element></Ks:sequence>(/xs:extension>(/xs:complexContent>(/xs:complexType>(“8:elementname2”Name”type2”xs:normalizedString。。/)(xs:sequence>(/xs:element)</xs:sequence>(/xs:extension>(/xs:complexContent>(/xs:complexType>(xs:element朋腑=”Bed”type=”8珀:Bed”nillable2”true’’block2”extensionrestriction”substitutionGroup=”exp:Entity’’/>(KS:eleaentname2”Survivalph_range”)(XS:complexType>(/xs:element>(/xs:sequence></xs:extension>(/xs:complexContent>(/xs:complexType>(XS:simpleTyperⅢe=”Phvalue”)(XSfrestrictionbase=”xs:double”/)</xs:simp]eType>(x8:extensionbase=”exp:Entity”)(XS:sequence>(/xs:extension></xs:complexContent)(/xs;complexType>(/xs:schema>所使用的模式标识方法:——在序列化单元元素”TomJones"中,对”gl”和”plantl”的两个osb:edokeY引用都是有效的。它们引用在一个序列化单元元素中的元素,这个序列化单元元素的相关语境模式是mr~smiths—garden,它和引用mr_jones—garden模式的相关语境模式不同。——在序列化单元元素”GeorgeJones”中,对”92”和”plant2”的两个osb:edokey引用都是有效的。25】 GB/T16656.28—2010/[so10303-28:2007它们引用在一个序列化单元元素中的元素,这个序列化单元元素的相关语境模式mr—iones—garden,和引用的相关语境模式相同。E.1.2EXPRESS接口描述方法如果使用这个方法,定义在不同的序列化单元元素(或其他模式实例的表达)中的EXPRESS实体实例之间的引用应该是有效的,只有当序列化单元元素有相同的相关语境模式(像在E.1.1中一样),或有通过EXPRESS接口描述而相互关联的不同相关语境模式,在GB/T16656.1l的第11章中规定。由一个模式所定义的一个类型的实例可能被由另一个模式所定义的一个类型的实例所引用,如果第一个类型被第二个模式所引用,使用USE或REFERENCE声明。示例:考虑两个EXPRESS模式和E.1.1中的iso10303—28元素。使用EXPRESS接口的声明方法:——在”TomJones”序列化单元元素中,对”91”的osb:edokey引用是有效的。它引用了一个在序列化单元元素中表达的EXPRESS实体实例,这个序列化单元元素的相关语境模式是mr—smiths—garden和mr_jones—garden模式,并且EXPRESS实体数据类型garden不会作为引用引入相关语境模式。——在”TomJones”序列化单元元素中,对”plantl”的osb:edokey引用是有效的。它引用了一个在序列化单元元素中表达的EXPRESS实体实例,这个序列化单元元素的相关语境模式是mr—smiths—garden和mr_jones—garden模式,但是EXPRESS实体数据类型plant不会作为引用引入相关语境模式。——在”GeorgeJones”序列化单元元素中,对”92”和“plant2”的两个osb:edokey引用都是有效的。它们引用在一个序列化单元元素中的元素,这个序列化单元元素的相关语境模式mr—jones—garden,和引用的相关语境模式相同。E.1.3SDAI域等价方法如果使用这个方法,由不同的模式所定义的实体实例间的引用应该由域等价方法来控制,域等价方法在IsO10303—22中规定。给定一个在EXPRESS模式中所定义的数据类型,任何EXPRESS实体类型的实例可以引用给定数据类型的实例,也可以引用任何被声明和给定的数据类型是“域等价”的EXPRESS数据类型的实例。示例:考虑两个EXPRESS模式和E.11中的isO_1030328元素。为了本示例的目的,假设我们有域等价信息,确定使用在ISO1030322中描述的技术之一,已说明EXPRESS实体数据类型garden和bed在两个模式中是域等价的。也就是说:mrjones_garden.garden和mr_smiths—garden.garden是域等价的,mrjones—garden.bed和mr_smiths—garden.bed是域等价的。并且在mrjones—garden模式中的USE陈述预示着EXPRESS实体数据类型plant在两个模式中是域等价的。然后,使用SDAI域等价方法:——在”TomJones“序列化单元元素中,对”gl”和”plantl”的osb:edokey引用都是有效的。它们引用了在一个序列化单元元素中表达的EXPRESS实体实例,这个序列化单元元素的相关语境模式是mr—smiths—garden,但是在mr_smiths~garden模式中的EXPRESS实体数据类型gar—den和plant和引用的相关语境模式:mr_jones—garden模式的对应实体数据类型是域等价的。E.2确定一个模式的集Schema_population元素(见5.3)把EXPRESS实体实例的一个集合和一个EXPRESS模式“控制模式”~联系了起来。XMI。属性determination—method标识从给定的序列化单元元素集合“被控制部分”,选择实体实例集的算法。本条描述三种确定方法并且规定相应的determination_252 GB/T16656.28—2010/ISO10303—2812007method属性的值,还可能有其他的方法,但是不在本部分中规定。E.2.1区边界方法当使用区边界方法时,Determination~method属性应该有值:SECTION—BOUNDARY,实体实例集应该由如下部分组成:——在特定的序列化单元元素中表达的所有EXPRESS实体实例。当确定已满足需求和控制模式约束的情况下,对这个实体实例集之外的实体实例的引用应该作为“没有集合化”的值。注:对控制模式没有这样的要求:集必须和任何序列化单元元素中的相关语境模式相同,尽管实际上它们必须是相互联系的。例如:它们可以通过在上面E.1中所规定的机制中的一个来相互联系。示例:考虑两个EXPRESS模式和E.1.1中的iso10303—28元素。这个iso10303—28元索不包含任何schema_pop—ulation元素,因此iso10303—28元素中没有实例数据的模式有效性由本部分定义:对于这个示例,支持对iso_1030328元素的如下修改:在第~个序列化元素之前,插人:(schema_populationgoverningschema=”mrsmiths—garden”governed_sections=”Smith“/)(the_organization>(organizationref=”ill”/>(/theorganlzation></personandorganization>s32</id>257 GB/T16656+28—2010/ISO10303—28.2007(1ast~name>Gamgee</last—name>(firstname>Sam<7/first—name>(,/person>s77(/id>(1ast~name>Baggins</lastname>Bilbo</first—name></person>(organizationid=”iil”、(id>sci(name>ShyreCrafts,Inc(/name>(/organization>示例2:exp-attribute=”double-tag”,基于值的数据,pe幅on—and—organization是根配置:(optionexp-type。”value”entity-attribute≈”double_tag”、(entityselect2”person_and_organization”e砷一type=”root’’/7实例数据:(person_arldorganizationid=’1i9”、(the_person>s32(/id>(1ast—nalne>Gamgee</lastname>(first~name>Sam</firstname)(/person>(/the~person>(the_organization>(organization>(id>sci</id>(name>ShyreCrafts,Inc</name>‘/organization></theorganization>(/person_and-organization>示例3:exp-attribute=”attribute-tag”,基于引用的数据配置:type2’’root”entity-attribute=。’attribute-tag’1、实例数据:‘person_andorganizationid=”i9”)(the_personpersonref=”i7”/、(theorganizatlonref=”ill”¨(/person_andorganization>示例4:exp-attribute=”attribute-tag”,基于值的数据配置:(optionexl>type。’’value”entity-attribute=”attribute-tag’’、258 GB/T16656.28—2010/ISO10303—28:2007(id>s32(/1d)Gamgee</last—name>Sam</first_name>j}the_person)(the—organization>(id)scl(/id)(na/ue)ShyreCrafts,Inc</name></the—organization>(/person_and_organization)注;当属性的实体类型有任何的子类时,或者实例数据:示例6iexi"attribute=“no-tag”注:no-tag选择只可以在~个per-attribute基础上规定。配置:(entityselect=”personandorganization”exp-type=‘‘root”、s32(,/per—id>(1ast—name>Gamgee</lastname>(id>sel(/id>(name)ShyreCrafts.Inc(/name>(/personandorganization>在这种情况下,因为THEPERSON和THE—ORGANIzATI()N都有一个属性叫做‘id,,为了达到上面的效果,需要重命名一个‘-d’属性,如下所示:260 参考文献GB/T16656.28—2010/ISO10303-2812007EliGB/T16656.2l2008工业自动化系统与集成产品数据的表达与交换现方法:交换文件结构的纯正文编码(ISO10303—21:2002,IDT).E2]GB/T16656.2031997工业自动化系统与集成产品数据表达与交换用协议:配置控制设计(idtISO10303203:1994).第21部分:实第203部分:应E3]URNSyntax,InternetEngineeringTaskForceRFC2141,May1997[cited2004—03—15].AvailablefromWorldWideWeb:(http://www.1et[.org/rfc/rfc2141.txt).[4]UniformResourceNames(URN)NamespaceDefinitionMechanism,.InternetEngineeringTaskForceRFC3406,October2002.[cited2004—0315].AvailablefromWorldWideWeb:.[7]Megginson,David.StructuringXMLDocuments,Chapters10and11,PrenticeHall,1998,1SBN0】3642299—3.261'

您可能关注的文档