文章目录
- [第二十章 控制 XML 元素和属性名称 - 控制列表类型属性的元素和属性名称](#第二十章 控制 XML 元素和属性名称 - 控制列表类型属性的元素和属性名称)
- 控制列表类型属性的元素和属性名称
- 控制数组类型属性的元素和属性名称
第二十章 控制 XML 元素和属性名称 - 控制列表类型属性的元素和属性名称
控制列表类型属性的元素和属性名称
注意:本节不适用于将 XMLPROJECTION
指定为"ELEMENT
"的集合属性。对于这样的属性,每个列表项都被视为该类的单独属性。
在支持 XML
的对象中,列表类型属性被投影到具有子元素的元素,每个子元素都是该列表中的一项。假设名为 ColorOptions
的 IRIS
对象属性等于三个字符串的列表:"Red
"、"Green
"、"Blue
"。默认情况下,该属性对应于以下 XML
片段:
xml
<ColorOptions>
<ColorOptionsItem>Red</ColorOptionsItem>
<ColorOptionsItem>Green</ColorOptionsItem>
<ColorOptionsItem>Blue</ColorOptionsItem>
</ColorOptions>
这显示了 ColorOptionsItem
子元素,它对应于列表中的一个项目。该子元素的名称确定如下:
XMLITEMNAME 属性参数 |
属性的 XMLNAME 参数 |
标签(元素或属性) |
---|---|---|
Specified |
Ignored |
Value of XMLITEMNAME |
Not specified |
Specified |
Item 连接到末尾的 XMLNAME 的值 |
Not specified |
Not specified |
如果列表项对应于数据类型属性,则标记是属性名称,末尾连接有 Item。如果列表项对应于对象类,则标记是短类名。 |
相同的逻辑适用于数组的项目。数组的键是单独处理的。
控制数组类型属性的元素和属性名称
注意:本节不适用于将 XMLPROJECTION
指定为"ELEMENT
"的集合属性。对于这样的属性,每个数组项都被视为该类的单独属性。请参阅控制集合属性的投影。
在支持 XML
的对象中,数组类型属性被投影到具有子元素的元素,每个子元素都是该数组中的一项,其基本方式与投影列表属性相同;请参阅上一节。
每个子元素都有一个附加属性,指示与该项目关联的键。可以控制该属性的名称。
考虑以下示例属性:
java
Property Tools As %ArrayOfDataTypes;
例如,假设(对于某些对象实例)此属性由一个数组组成,如下所示:
Hammer
值与密钥845
一起存储。- 值
Monkey wrench
与密钥1009
一起存储。 - 值
Screwdriver
与密钥3762
一起存储。
默认情况下,该属性对应于以下 XML
片段:
xml
<Tools>
<ToolsItem ToolsKey="845">Hammer</ToolsItem>
<ToolsItem ToolsKey="1009">Monkey Wrench</ToolsItem>
<ToolsItem ToolsKey="3762">Screwdriver</ToolsItem>
</Tools>
这显示了 ToolsKey
属性,它对应于数组的键。该属性的名称确定如下:
XMLKEYNAME 属性参数 |
属性的 XMLNAME 参数 |
包含键的属性名称 |
---|---|---|
Specified |
Ignored |
Value of XMLKEYNAME |
Not specified |
Specified |
XMLNAME 的值与键连接到末尾 |
Not specified |
Not specified |
属性名称与键连接到末尾 |
请注意,XMLITEMNAME
属性参数不会影响属性名称;它会影响属性名称。该参数已在上一节中讨论过。
例如,假设未设置 XMLKEYNAME
,并将 XMLNAME
设置为等于 MyXMLName
,如下所示:
java
Property Tools As %ArrayOfDataTypes(XMLNAME = "MyXMLName");
那么相同的属性将对应于以下 XML
片段:
xml
<MyXMLName>
<MyXMLNameItem MyXMLNameKey="845">Hammer</MyXMLNameItem>
<MyXMLNameItem MyXMLNameKey="1009">Monkey Wrench</MyXMLNameItem>
<MyXMLNameItem MyXMLNameKey="3762">Screwdriver</MyXMLNameItem>
</MyXMLName>