当解析输入消息时,您已经定义为消息集中组的结构不会在逻辑树中出现,但会出现其子代。如果您要引用或更新作为组的子代的元素的值,则不要在 ESQL 语句中包含组。组没有在实例消息中出现的标记,并且不会在逻辑消息树的用户跟踪中出现。
考虑以下 Video 消息:
<Customer xmlns:addr="http://www.ibm.com/AddressDetails" xmlns:brw="http://www.ibm.com/BorrowedDetails"> <Name LastName="Bloggs"> <Title>Mr</Title> <FirstName>Fred</FirstName> </Name> <addr:Address> <HouseNo>13</HouseNo> <Street>Oak Street</Street> <Town>Southampton</Town> </addr:Address> <ID>P</ID> <PassportNo>J123456TT</PassportNo> <brw:Borrowed> <VideoTitle>Fast Cars</VideoTitle> <DueDate>2003-05-23T01:00:00</DueDate> <Cost>3.50</Cost> </brw:Borrowed> <brw:Borrowed> <VideoTitle>Cut To The Chase</VideoTitle> <DueDate>2003-05-23T01:00:00</DueDate> <Cost>3.00</Cost> </brw:Borrowed> <Magazine>0</Magazine> </Customer>
当输入消息完成解析后,值便存储在逻辑树中,如用户跟踪的以下部分中所示:
(0x0100001B):MRM = ( (0x01000013):Name = ( (0x0300000B):LastName = 'Bloggs' (0x0300000B):Title = 'Mr' (0x0300000B):FirstName = 'Fred' ) (0x01000013)http://www.ibm.com/AddressDetails:Address = ( (0x0300000B):HouseNo = 13 (0x0300000B):Street = 'Oak Street' (0x0300000B):Town = 'Southampton' ) (0x0300000B):ID = 'P' (0x0300000B):PassportNo = 'J123456TT' (0x01000013)http://www.ibm.com/BorrowedDetails:Borrowed = ( (0x0300000B):VideoTitle = 'Fast Cars' (0x0300000B):DueDate = TIMESTAMP '2003-05-23 00:00:00' (0x0300000B):Cost = 3.50 ) (0x01000013)http://www.ibm.com/BorrowedDetails:Borrowed = ( (0x0300000B):VideoTitle = 'Cut To The Chase ' (0x0300000B):DueDate = TIMESTAMP '2003-05-23 00:00:00' (0x0300000B):Cost = 3.00 ) (0x0300000B):Magazine = FALSE
紧跟在元素命名的标识后,MRM 消息定义使用具有选项组合的组。该组用以下三个子代进行定义:PassportNo、DrivingLicenceNo 和 CreditCardNo。 选项组合规定实例文档必须仅使用这三个可能的替代之一。上面显示的示例使用 PassportNo 元素。
当您用 ESQL 语句引用此元素时,您没有指定元素所属的组。例如:
SET OutputRoot.MRM.PassportNo = 'J999999TT';
如果您在消息集(包括 XML 和 TDS 物理格式)内定义消息,则可以确定从消息数据采用选项的那些选项,因为消息中的标记表示选项的选项之一。然而,如果您的消息具有 CWF 物理格式,或者是未 标记的 TDS 消息,它不会从消息数据清除,而处理消息的应用程序必须确定已选择选项的哪个选项。这称为未解析的选项处理。有关更多信息,请参阅复杂类型逻辑属性中关于选项的值的描述。