本文主要是介绍第三十五章 XML 模式的高级选项 - 创建子类型的选择列表,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 第三十五章 XML 模式的高级选项 - 创建子类型的选择列表
- 创建子类型的选择列表
- `XMLINCLUDEINGROUP=0` 的选择列表示例
第三十五章 XML 模式的高级选项 - 创建子类型的选择列表
创建子类型的选择列表
根据 XML Schema
规范,复杂类型可以由类型(特别是相关类型)的选择列表组成。假设我们希望架构允许使用 <Person>
, <Patient>
, or <Employee>
元素,而不是 <Person>
元素。要定义这样的架构,我们会将 Person
属性的 XMLTYPECONSTRAINT
属性参数设置为等于“CHOICE
”,如下所示:
Class UsingSubclasses.Example2 Extends (%Persistent, %XML.Adaptor)
{
Property Person As UsingSubclasses.Person(XMLTYPECONSTRAINT = "CHOICE");
}
默认情况下,选择列表由 Person
类的所有子类组成。示例 2
的架构如下:
<s:complexType name="Example2"><s:sequence><s:choice minOccurs="0"><s:element name="Employee" type="Employee" /><s:element name="Patient" type="Patient" /><s:element name="Person" type="Person" /></s:choice></s:sequence>
</s:complexType>
<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: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>
与前面的示例相反,Example2
的类型是一个由 Person
、Patient
或 Employee
组成的选择列表。后三种类型的定义方式与前面的示例相同。
XMLINCLUDEINGROUP=0
的选择列表示例
假设我们添加 Person
类的另一个子类,并通过将 XMLINCLUDEINGROUP
设置为 0
来限制它:
Class UsingSubclasses.Other Extends UsingSubclasses.Person
{
Parameter XMLINCLUDEINGROUP = 0;
}
在这种情况下,此类不包含在选择列表中,也不包含在架构中。
这篇关于第三十五章 XML 模式的高级选项 - 创建子类型的选择列表的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!