第二十章 控制 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>
相关推荐
xiaomuzuirenzhen7 小时前
大专电子商务从事电商运营分析师需要考证吗?
大数据·数据库
Linux-lucky7 小时前
45-Linux学习之旅之防火墙与WEB加固
linux·前端·网络·学习·ubuntu
翔云1234569 小时前
RocksDB中,客户端每写入一次数据,需要访问几次磁盘
运维·数据库·mysql
DevOpenClub9 小时前
职教高考控制线 API:招生类别枚举、筛选与空分数含义
java·数据库·高考
风骏时光牛马10 小时前
生成一个移动端标题,只需要一个标题,不需要其他的任何文本。
前端
IT_陈寒10 小时前
Redis雪崩把我坑惨了,这是5年经验的教训
前端·人工智能·后端
SameX10 小时前
HarmonyOS ArkUI List 的侧滑删除 用 ListItem 的 swipeAction + endIcon 的做法
前端
GeW11 小时前
新质生产力路线图解读:数据库性能优化与Linux调优专场
linux·数据库
usdoc文档预览12 小时前
USDOC系列之PPT文件在线编辑-VUE前端实现在线浏览器在线编辑PPT文档
前端·vue.js·编辑器·office365·ppt在线编辑·office文件在线编辑·文件在线编辑
在多学一点12 小时前
MYSQL第二次作业
android·数据库·mysql