XML 模式规范允许元素或属性包含一列值,用空格将各个简单类型的值分开。
<message1> <listE1 listAttr="one two three"> four five six</listE1> </message1>
在得到的消息树中,xsd::list 类型表示为一个名称节点,该节点的每个列表项都有一个匿名值子节点。这样便可以在不丢失任何信息的情况下处理重复的列表。
MRM listEl (Name) listAttr (Name) "one" (Value) "two" (Value) "three" (Value) "four" (Value) "five" (Value) "six" (Value)
SET OutputRoot.MRM.listEl.listAttr.*[3] = ...修改 listAttr 的第三项。
<MRM> <inner>abcde fghij 12345</inner> </MRM>其中,元素 inner 属于 xsd::list 类型,因此它有三个关联的字符串值,而不是一个值。
<MRM> <str1>abcde</str1> <str1>fghij</str1> <str1>12345</str1> </MRM>可以假设以下 ESQL 语法可用:
DECLARE D INTEGER; SET D = CARDINALITY(InputBody.str1.*[]); DECLARE M INTEGER 1; WHILE M <= D DO SET OutputRoot.MRM.str1[M] = InputBody.inner.*[M]; SET M = M + 1; END WHILE;
SET OutputRoot.MRM.str1[M] = InputBody.inner.*[M];请求将树从源复制到目标。由于目标元素还不存在,因此要从源创建它并设置它的值和类型。
这与 ESQL 在别处的行为一致,但在元素具有 list 类型值的情况下,此代码会产生虚假的验证错误。
SET OutputRoot.MRM.str1[M] = FIELDVALUE(InputBody.inner.*[M]);