美文网首页
第三十章 控制到 XML 模式的映射 - Array of Cl

第三十章 控制到 XML 模式的映射 - Array of Cl

作者: Cache技术分享 | 来源:发表于2023-12-09 08:58 被阅读0次

    第三十章 控制到 XML 模式的映射 - Array of Classname

    Array of Classname

    本部分显示了从启用 XML 的类生成的XML 架构的一部分,此时该类包含定义为类名数组的属性。例如,考虑以下属性定义:

    Property PropName As array Of %Integer(XMLITEMNAME = "MyXmlItemName", XMLKEYNAME = "MyXmlKeyName");
    

    如果此属性位于名为 Test.DemoArray1 的启用 XML 的类中,则该类的 XML 架构包含以下内容:

    <schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:s="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="mytypes">
      <complexType name="DemoArray1">
        <sequence>
          <element minOccurs="0" name="PropName" type="s01:ArrayOfMyXmlItemNamePairOfMyXmlKeyNameLong" xmlns:s01="mytypes"/>
        </sequence>
      </complexType>
      <complexType name="ArrayOfMyXmlItemNamePairOfMyXmlKeyNameLong">
        <sequence>
          <element maxOccurs="unbounded" minOccurs="0" name="MyXmlItemName" nillable="true" type="s01:PairOfMyXmlKeyNameLong" xmlns:s01="mytypes"/>
        </sequence>
      </complexType>
      <complexType name="PairOfMyXmlKeyNameLong">
        <simpleContent>
          <extension base="s:long">
            <attribute name="MyXmlKeyName" type="s:string" use="required"/>
          </extension>
        </simpleContent>
      </complexType>
    ...
    </schema>
    

    以下规则管理类型的名称:

    • 对于 PropName 属性,相应的类型被命名为 ArrayOfXMLItemNamePairOfXMLKeyNameType,其中:

      • XMLItemName 是集合中项目的名称,如控制数组类型属性的元素和属性名称中所述。对于数据类型属性,默认项目名称是在属性名称末尾附加 Item 的名称。 (对于对象属性,默认项名称是短类名称。)
      • XMLKeyName 是集合的键名称,如控制数组类型属性的元素和属性名称中所述。默认为属性名称,末尾连接有 Key
      • Type 是属性类映射到的 XML 类型。
      <element minOccurs="0" name="PropName" type="s01:ArrayOfMyXmlItemNamePairOfMyXmlKeyNameLong" xmlns:s01="mytypes"/>
      

      注意:如果 XMLKeyNameType 相同,则对于 PropName 属性,相应的类型将命名为 ArrayOfXMLItemNamePairOfXMLKeyName。即,从类型名称中删除冗余数组项。要使类型名称包含冗余名称,请将( %XML.Schema实例)AllowRedundantArrayName 属性指定为 1。同样,在 Web 服务类中,要在类型中包含冗余数组项名称在 WSDL 中,将(Web 服务类的)ALLOWREDUNDANTARRAYNAME 参数指定为 1

    • 类型 ArrayOfXMLItemNamePairOfXMLKeyNameType 被定义为另一种类型的 <sequence>,名为 PairOfXMLKeyNameType

       <complexType name="ArrayOfMyXmlItemNamePairOfMyXmlKeyNameLong">
      <sequence>
        <element maxOccurs="unbounded" minOccurs="0" name="MyXmlItemName" nillable="true" type="s01:PairOfMyXmlKeyNameLong" xmlns:s01="mytypes"/>
      </sequence>
      </complexType>
      
      
    • PairOfXMLKeyNameType 类型是给定 XSD 类型的扩展。此扩展添加了一个名为 XMLKeyName 的属性:

        <complexType name="PairOfMyXmlKeyNameLong">
      <simpleContent>
        <extension base="s:long">
          <attribute name="MyXmlKeyName" type="s:string" use="required"/>
        </extension>
      </simpleContent>
      </complexType>
      

    Classname 引用对象类时,适用相同的规则。例如,考虑以下属性定义:

    Property PropName As %ArrayOfObjects(XMLITEMNAME = "MyXmlItemName", XMLKEYNAME = "MyXmlKeyName");
    

    其中 Simple.Object 包含两个属性:MyPropAnotherProp。如果此属性位于名为 Test.DemoObjArray 的启用 XML 的类中,则该类的 XML 架构包含以下内容:

    <schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:s="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" 
    targetNamespace="mytypes">
      <complexType name="DemoObjArray">
        <sequence>
          <element minOccurs="0" name="PropName" type="s01:ArrayOfMyXmlItemNamePairOfMyXmlKeyNameSimpleObject" xmlns:s01="mytypes"/>
        </sequence>
      </complexType>
      <complexType name="ArrayOfMyXmlItemNamePairOfMyXmlKeyNameSimpleObject">
        <sequence>
          <element maxOccurs="unbounded" minOccurs="0" name="MyXmlItemName" nillable="true" type="s01:PairOfMyXmlKeyNameSimpleObject" xmlns:s01="mytypes"/>
        </sequence>
      </complexType>
      <complexType name="PairOfMyXmlKeyNameSimpleObject">
        <complexContent>
          <extension base="s01:SimpleObject" xmlns:s01="mytypes">
            <attribute name="MyXmlKeyName" type="s:string" use="required"/>
          </extension>
        </complexContent>
      </complexType>
      <complexType name="SimpleObject">
        <sequence>
          <element minOccurs="0" name="MyProp" type="s:string"/>
          <element minOccurs="0" name="AnotherProp" type="s:string"/>
        </sequence>
      </complexType>
    </schema>
    

    相关文章

      网友评论

          本文标题:第三十章 控制到 XML 模式的映射 - Array of Cl

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