您已经在Schema概要视图中创建了一个叫做Company的全局元素(global element)。该元素应具有以下内容模型:包含一个Address元素和任意多个Person元素。能够具有内容模型的全局成分是元素(element)、复杂类型(complex type)和元素组(element group)。

在XMLSpy 2005中,全局成分的内容模型可以在Schema/WSDL视图的内容模型视图中显示。要查看或编辑全局成分的内容模型,您可以点击全局成分左边的图标

本节您将为Company元素定义内容模型。

创建一个简单的内容模型 
要创建Company元素的内容模型,需要以下步骤:

  1.

在Schema概要视图中,点击Company元素左边的图标。此时将显示出Company元素的内容模型 —— 目前还是空的。(您还可以通过点击Component窗口[译注//其位置是可以调整的,缺省位置在主窗口的右边,有时需要点击Component选项卡才能显示出来。]中的Company条目以显示其内容模型。)

   
   
    
 
   
 
  2. 内容模型由容器(compositor)和成分(component)组成。容器(compositor)用于指定两个成分(component)之间的关系。在Company内容模型中,您必须先在Company元素下添加一个容器,然后在该容器中添加子元素(child element)[译注//是不能直接在一个元素中添加另一个元素的]。要添加容器,首先右击Company元素,在上下文菜单中选择Add Child | Sequence。(内容模型中可以使用三种容器:Sequence、Choice和All。)  
   
   
 
    
   
  此时一个Sequence容器被插入到内容模型中,表明加入该容器中的成分在实例文档中必须按它们在容器中的顺序出现。  
 
    
   
  3. 右击Sequence容器,然后选择Add Child | Element来加入元素。这样,一个未命名的元素成分(element component )就被添加到Sequence容器中了。 
  4. 输入Address 作为该元素成分的名称,并以回车键确认。  
   
    
   
  5. 再次右击Sequence容器,然后选择Add Child | Element。为新加入的元素成分输入名称:Person。  
   
    
   
  目前,在您所定义的schema中,每个Company可以各有一个Address和一个Person。现在,我们需要增加Person元素的数量。 
 
  6.

右击Person 元素,然后在上下文菜单中选择Unbounded。现在图中标出了Person元素允许出现的次数:1到无穷大。

   
    
   
  设定允许出现次数的另一个途径是:在Details窗口[译注//其位置是可以调整的,缺省位置在主窗口的右边,有时需要点击Details选项卡才能显示出来。]中,分别将minOcc和maxOcc字段设为1和infinity。  
 

为内容模型的结构添加层次
到目前为止,您所创建的是一个简单的内容模型,它只有一层:即 company 元素的一个子层次,它包含 Address 和 Person 等元素。现在我们来定义 Address 元素的内容,使它包含 Name 、 Street 以及 City 等元素。这样,该内容模型便具有一个二层的结构。接着,我们要为 Address 元素添加一个子容器,并在其中增加元素成分。具体步骤如下:

  1. 右击Address 元素,在上下文菜单中选择Add Child | Sequence添加一个Sequence容器。 
  2. 右击该Sequence容器,然后选择Add Child | Element来加入元素。为新加入的元素成分输入名称:Name。  
   
   
 
    
   

复杂类型、简单类型以及XML Schema数据类型
到目前为止,我们还没有显式定义任何元素类型(element type)。如果您现在用Text视图看一下schema(如下所示),您将发现对于已加入的每个Sequence容器,其 xs:sequence 元素都被一个 xs:complexType 元素包围着。简言之, Company 和 Address 元素都是复杂类型(complex type),因为它们的内容中包含子元素。复杂类型(complex type)元素泛指那些包含子元素或/和具有属性的元素。[译注//复杂类型和简单类型都只是针对元素而言的。]

< xs:element  name =" Company">
   < xs:annotation >
     < xs:documentation > Root element</ xs:documentation >
   </ xs:annotation >
   < xs:complexType >
     < xs:sequence >
       < xs:element  name =" Address">
         < xs:complexType >
           < xs:sequence >
             < xs:element  name =" Name"/>
           </ xs:sequence >
         </ xs:complexType >
       </ xs:element >
       < xs:element  name =" Person"/>
     </ xs:sequence >
   </ xs:complexType >
 </ xs:element >

而简单类型(simple type)元素指的是那些仅包含文本(不能包含子元素)、并且没有属性的元素。文本(text)可以是字符串、日期、数字等。我们希望让 Address  的子元素Name为仅包含文本的简单类型,而且其文本内容被限定为字符串。我们可以利用XML Schema数据类型 xs:string 来进行上述定义。下面,我们将 Name 元素定义为该数据类型。

   
 
  1. 点击Name 元素并选中它。 
  2. 在Details窗口中的type组合框的下拉菜单中选择xs:string 项。  
   
    
 
  此时,内容模型视图中的Name元素的左上角会显示一个图标,表明该元素包含的是文本数据。注意:此时minOcc和maxOcc的值都为1,表明该元素出现并仅出现一次。 
 

Name  元素的文本表示如下:

  <xs:element name="Name" type="xs:string"/> 
 

注:简单类型元素可以选择任意一个允许的XML Schema数据类型作为其数据类型。无论选择何种数据类型,元素方框中都会显示上述表明包含文本内容的图标。

xmlspy 定义类型相关推荐

  1. C++/C++11中用于定义类型别名的两种方法:typedef和using

    类型别名(type alias)是一个名字,它是某种类型的同义词.使用类型别名有很多好处,它让复杂的类型名字变得简单明了.易于理解和使用,还有助于程序员清楚地知道使用该类型的真实目的.在C++中,任何 ...

  2. MySQL学习笔记(5)之数据定义类型

    数据定义类型总汇 1.整数型: 整数类型 字节 有符号范围 无符号范围 用途 tinyint 1 (-128,127) (0,255) 小整数 smallint 2 (-32 768,32 767) ...

  3. 具有用户定义类型的format的示例用法

    具有用户定义类型的format的示例用法 实现功能 C++实现代码 实现功能 具有用户定义类型的format的示例用法 C++实现代码 #include "boost/format.hpp& ...

  4. udt java_Java DB中的Java用户定义类型(UDT)

    udt java Java DB是基于Java编程语言和SQL的关系数据库管理系统. 这是Apache软件基金会的开源Derby项目的Oracle版本. Java SE 7 SDK中包含Java DB ...

  5. Java DB中的Java用户定义类型(UDT)

    Java DB是基于Java编程语言和SQL的关系数据库管理系统. 这是Apache软件基金会的开源Derby项目的Oracle版本. Java SE 7 SDK中包含Java DB. 用户定义类型( ...

  6. java中已定义类型car_Java 8 习惯用语(8):Java 知道您的类型

    Java™8 是第一个支持类型推断的 Java 版本,而且它仅对 lambda 表达式支持此功能.在 lambda 表达式中使用类型推断具有强大的作用,它将帮助您做好准备以应对未来的 Java 版本, ...

  7. vb连接mysql出现的问题_连接数据库问题用户定义类型未定义【vb6】

    连接数据库问题用户定义类型未定义[vb6]0 Dim cnnImage As NewADODB.Connection Dim rsImage As New ADODB.Recordset Dim st ...

  8. SpringMVC-自定义类型转换器

    SpringMVC-自定义类型转换器 1.为什么要自定义类型转换器? 2.如何定义自定义类型转换器 1.为什么要自定义类型转换器? 首先要知道我们在页面中提交的数据都是字符串类型,比如年龄,用户名,密 ...

  9. Access FileDialog 用户定义类型未定义(User-defined type not defined)的解决方法

    Access VBA里的FileDialog函数可以打开文件对话框.有的高版Access(2016及以上)会提示"用户定义类型未定义".解决方案是在VBA编辑器里选择" ...

最新文章

  1. 有勇气的牛排 --- 大数据
  2. Delphi常见各类编译错误信息-中英对照
  3. 数据在计算机中的存储
  4. 计算机组装与维护预实验报告,计算机组装与维护实验报告.doc
  5. 深入解读RabbitMQ工作原理及简单使用
  6. java内存shell_Springboot 内存shell
  7. 键盘定位板图纸_罗技K750 SOLAR太阳能无线键盘评测
  8. Aurelia —— 类似 AngularJS 的 JavaScript 框架
  9. mysql常用功能点
  10. 你的IE一路顺风吗?
  11. 机器学习之网格搜索(GridSearch)及参数说明,实例演示
  12. 乐玩插件和大漠插件哪个好_2019年都用过哪些Chrome插件?分享30个好用的插件,提升上网体验...
  13. python简易版成绩管理系统_Python学生成绩管理系统简洁版
  14. oracle写一本日历
  15. css 设置背景图片模糊效果
  16. Wordpress模板主题中functions.php常用功能代码与常用插件[ 后台篇](持续收集整理)
  17. Linux查看文件行数
  18. linux 汇编 读取软盘,学习x86汇编语言7 使用INT13读取软盘数据
  19. SHA256sum系列命令检测文件完整性
  20. blender大理石纹理

热门文章

  1. VMware Workstation 快照与克隆的使用
  2. 【05】Bootstrap — 代码
  3. JavaScript 循环语句
  4. W7500P以太网模块串口与udp透传
  5. 股票分仓资管跟单软件代码运行程序用那种语言写比较稳定
  6. 【工具】fis3 - 语法教程(2)之定位资源
  7. 视频中的自监督学习:Removing the background忽略视频的背景,学习robust的特征
  8. 用Java实现简易聊天室
  9. linux添加cfg,Linux安装详解-配置ks.cfg实现自动安装过程
  10. 6步创建成功的项目日程计划表