文章目錄
- 第三十章 控制到 XML 模式的映射 - Array of Classname
- `Array of Classname`
第三十章 控制到 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>