第二十九章 控制到 XML 模式的映射 - List of Classname
List of Classname
本部分显示了从支持 XML
的类生成的 XML
架构的一部分(当该类包含定义为类名列表的属性时)。例如,考虑以下属性定义:
Property PropName As list Of %Integer(XMLITEMNAME = "MyXmlItemName");
如果此属性位于名为 Test.DemoList1
的启用 XML
的类中,则该类的 XML
架构包含以下内容:
<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:s="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
targetNamespace="mytypes">
<complexType name="DemoList1">
<sequence>
<element minOccurs="0" name="PropName" type="s01:ArrayOfMyXmlItemNameLong" xmlns:s01="mytypes"/>
</sequence>
</complexType>
<complexType name="ArrayOfMyXmlItemNameLong">
<sequence>
<element maxOccurs="unbounded" minOccurs="0" name="MyXmlItemName" nillable="true" type="s:long"/>
</sequence>
</complexType>
...
</schema>
以下规则管理类型的名称:
-
对于
PropName
属性,相应的类型被命名为ArrayOfXMLItemNameType
,其中:XMLItemName
是集合中项目的名称,如控制列表类型属性的元素和属性名称中所述。对于数据类型属性,默认项目名称是在属性名称末尾附加Item
的名称。 (对于对象属性,默认项名称是短类名称。)Type
是属性类映射到的XML
类型。
<element minOccurs="0" name="PropName" type="s01:ArrayOfMyXmlItemNameLong" xmlns:s01="mytypes"/>
注意:如果
XMLItemName
与Type
相同,则对于PropName
属性,相应的类型将命名为ArrayOfXMLItemName
。即,从类型名称中删除冗余数组项。要使类型名称包含冗余名称,请将(%XML.Schema
实例)AllowRedundantArrayName
属性指定为1
。同样,在Web
服务类中,要在类型中包含冗余数组项名称在WSDL
中,将(Web
服务类的)ALLOWREDUNDANTARRAYNAME
参数指定为1
。 -
类型
ArrayOfXMLItemNameType
被定义为另一种类型的<sequence>
,名为XMLItemName
:<complexType name="ArrayOfMyXmlItemNameLong"> <sequence> <element maxOccurs="unbounded" minOccurs="0" name="MyXmlItemName" nillable="true" type="s:long"/> </sequence> </complexType>
-
元素
XMLItemName
基于与数据类型类对应的XSD
类型:<element maxOccurs="unbounded" minOccurs="0" name="MyXmlItemName" nillable="true" type="s:long"/>
当 Classname
引用对象类时,适用相同的规则。例如,考虑以下属性定义:
Property PropName As list Of SimpleObject(XMLITEMNAME = "MyXmlItemName");
其中 Simple.Object
包含两个属性:MyProp
和 AnotherProp
。如果此属性位于名为 Test.DemoObjList
的启用 XML
的类中,则该类的 XML
架构包含以下内容:
<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:s="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
targetNamespace="mytypes">
<complexType name="DemoObjList">
<sequence>
<element minOccurs="0" name="PropName" type="s01:ArrayOfMyXmlItemNameSimpleObject" xmlns:s01="mytypes"/>
</sequence>
</complexType>
<complexType name="ArrayOfMyXmlItemNameSimpleObject">
<sequence>
<element maxOccurs="unbounded" minOccurs="0" name="MyXmlItemName" nillable="true" type="s01:SimpleObject" xmlns:s01="mytypes"/>
</sequence>
</complexType>
<complexType name="SimpleObject">
<sequence>
<element minOccurs="0" name="MyProp" type="s:string"/>
<element minOccurs="0" name="AnotherProp" type="s:string"/>
</sequence>
</complexType>
...
</schema>