当前位置: 首页 > news >正文

第三十六章 XML 模式的高级选项 - 创建子类型的替换组

文章目录

  • 第三十六章 XML 模式的高级选项 - 创建子类型的替换组
  • 创建子类型的替换组
  • 将子类限制在替换组中

第三十六章 XML 模式的高级选项 - 创建子类型的替换组

创建子类型的替换组

XML 模式规范还允许定义替换组,这可以是创建选择的替代方法。语法有些不同。无需制作明确的集中类型列表,而是注释可能的替代项,如下所示:

<s:complexType name="Example3"><s:sequence><s:element ref="Person" minOccurs="0" /></s:sequence>
</s:complexType>
<s:element name="Person" type="Person"/>
<s:element name="Employee" type="Employee" substitutionGroup="Person"/>
<s:complexType name="Employee"><s:complexContent><s:extension base="Person"><s:sequence><s:element name="EmployeeID" type="s:string" /></s:sequence></s:extension></s:complexContent>
</s:complexType>
<s:complexType name="Person"><s:sequence><s:element name="Name" type="s:string" /><s:element name="DOB" type="s:date" /></s:sequence>
</s:complexType>
<s:element name="Patient" type="Patient" substitutionGroup="Person"/>
<s:complexType name="Patient"><s:complexContent><s:extension base="Person"><s:sequence><s:element name="PatientID" type="s:string" /></s:sequence></s:extension></s:complexContent>
</s:complexType>

为了创建这个模式,我们使用以下类:

Class UsingSubclasses.Example3 Extends (%Persistent, %XML.Adaptor)
{
Property Person As UsingSubclasses.Person
(XMLTYPECONSTRAINT = "SUBSTITUTIONGROUP");
}

将子类限制在替换组中

对于给定属性,如果将 XMLTYPECONSTRAINT 属性参数设置为等于“SUBSTITUTIONGROUP”,则该组将自动包含该属性类型的所有子类,如前面的示例所示。可以使用 XMLINCLUDEINGROUP 参数来标记给定的子类,以便它不包含在替换组中。例如,假设我们添加 Person 类的另一个子类:

Class UsingSubclasses.Other Extends UsingSubclasses.Person
{Parameter XMLINCLUDEINGROUP = 0;Property OtherID As %String [ Required ];
}

在这种情况下,该类不包含在替换组中。并且因为已经以这种方式显式标记了此类,所以它根本不包含在架构中。

http://www.lryc.cn/news/264018.html

相关文章:

  • 堆与二叉树(上)
  • HBase查询的一些限制与解决方案
  • 软件开发 VS Web开发
  • 基于Springboot的旅游网站设计与实现(论文+调试+源码)
  • 【从零开始学习--设计模式--策略模式】
  • 条款6:若不想使用编译器自动生成的函数,就该明确拒绝
  • 零基础也能制作家装预约咨询小程序
  • Mybatis的插件运⾏原理,如何编写⼀个插件?
  • C++复合数据类型:字符数组|读取键盘输入|简单读写文件
  • Windows11环境下配置深度学习环境(Pytorch)
  • 泛型深入理解
  • Linux内核模块
  • Java 栈和队列的交互实现
  • HarmonyOS应用开发者高级认证满分指南
  • CSharp中Blazor初体验
  • Linux下新建用户,并进行授权
  • STM32为基础的模拟I2C通用8bit和16bit读取以及多字节读取
  • 算法训练营Day19
  • C++数据结构——二叉搜索树详解
  • ros2机器人在gazebo中移动方案
  • 学习Java第74天,Ajax简介
  • 【Java面试题】在Java中String,Stringbuffer,StringBuilder的区别?
  • 让AIGC成为你的智能外脑,助力你的工作和生活
  • ubuntu12.04 源
  • openssl数据压缩
  • SQLturning:定位连续值范围起点和终点
  • 饥荒Mod 开发(十七):手动保存和加载,无限重生
  • Skywalking系列之最新版9.2.0-JavaAgent本地构建
  • olap/clickhouse-编译器优化与向量化
  • RK3399平台开发系列讲解(内核入门篇)网络协议的分层