美文网首页
第三十五章 XML 模式的高级选项 - 创建子类型的选择列表

第三十五章 XML 模式的高级选项 - 创建子类型的选择列表

作者: Cache技术分享 | 来源:发表于2023-12-14 07:49 被阅读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 的类型是一个由 PersonPatientEmployee 组成的选择列表。后三种类型的定义方式与前面的示例相同。

    XMLINCLUDEINGROUP=0 的选择列表示例

    假设我们添加 Person 类的另一个子类,并通过将 XMLINCLUDEINGROUP 设置为 0 来限制它:

    Class UsingSubclasses.Other Extends UsingSubclasses.Person
    {
    Parameter XMLINCLUDEINGROUP = 0;
    }
    

    在这种情况下,此类不包含在选择列表中,也不包含在架构中。

    相关文章

      网友评论

          本文标题:第三十五章 XML 模式的高级选项 - 创建子类型的选择列表

          本文链接:https://www.haomeiwen.com/subject/kxbigdtx.html