第三十章 控制到 XML 模式的映射 - Array of Classname
2023-12-13 10:32:42
第三十章 控制到 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"/>
注意:如果
XMLKeyName
与Type
相同,则对于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
包含两个属性:MyProp
和 AnotherProp
。如果此属性位于名为 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>
文章来源:https://blog.csdn.net/yaoxin521123/article/details/134904107
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!