XML Values

An XML value is a value composed of XML elements and attributes, where elements can contain other XML elements or text. XML values can be created directly or built by parsing string values. XML values cannot be stored in records, but can be converted to string representation and stored in that form.

Operations on XML Values

You can declare a variable of xml type and assign it to XML values:
xml xmlVar;

In addition to declaring a variable for use with XML values, you can also perform the following operations:

Example

CREATE  INPUT  WINDOW Trades
    SCHEMA (TradeId INTEGER, Symbol STRING, TradeInfo STRING)
    PRIMARY KEY (TradeId) ;

CREATE FLEX myFlex
    IN Trades
    OUT OUTPUT WINDOW TradeReport
    SCHEMA (TradeId INTEGER, TradeDesc STRING
    PRIMARY KEY (TradeId)
    outfile "output/TradeReport.out"
BEGIN
    ON Trades {
        xml u := xmlparse('<Option OptionId="8">10000</Option>');
        xml v := xmlparse(Trades.TradeInfo);
        xml w := xmlelement(Comment, xmlattributes(Trades.Symbol as Symbol), u, v);
        v := xmlconcat(u, v, w);
        output [TradeId = Trades.TradeId; TradeDesc = xmlserialize(v)];
    };
END;

CREATE  OUTPUT  WINDOW XmlAggregation
    SCHEMA (Symbol STRING, TradeDesc STRING)
    PRIMARY KEY DEDUCED
    outfile "output/XmlAggregation.out"
AS
    SELECT    Trades.Symbol AS Symbol
            , xmlserialize( xmlelement (  value
                                        , xmlattributes(Trades.Symbol as Symbol)
                                        , xmlagg( xmlparse(Trades.TradeInfo)))) AS TradeDesc
    FROM Trades
    GROUP BY Trades.Symbol;

The output for the TradeReport will be:

<TradeReport ESP_OPS="i" TradeId="1" TradeDesc="<Option OptionId="8">10000</Option><Transaction Price="15.4" Volume="1000"/><Comment Symbol="EBAY"><Option OptionId="8">10000</Option><Transaction Price="15.4" Volume="1000"/></Comment>"/> 
<TradeReport ESP_OPS="i" TradeId="2" TradeDesc="<Option OptionId="8">10000</Option><Transaction Price="5.4" Volume="2000"/><Comment Symbol="MSFT"><Option OptionId="8">10000</Option><Transaction Price="5.4" Volume="2000"/></Comment>"/>
<TradeReport ESP_OPS="i" TradeId="3" TradeDesc="<Option OptionId="8">10000</Option><Transaction Price="5.8" Volume="4000"/><Comment Symbol="MSFT"><Option OptionId="8">10000</Option><Transaction Price="5.8" Volume="4000"/></Comment>"/>

The output for the XMLAggregation will be:

<XmlAggregation ESP_OPS="i" Symbol="EBAY" TradeDesc="<value Symbol="EBAY"><Transaction Price="15.4" Volume="1000"/></value>"/>
<XmlAggregation ESP_OPS="i" Symbol="MSFT" TradeDesc="<value Symbol="MSFT"><Transaction Price="5.4" Volume="2000"/></value>"/>
<XmlAggregation ESP_OPS="u" Symbol="MSFT" TradeDesc="<value Symbol="MSFT"><Transaction Price="5.8" Volume="4000"/><Transaction Price="5.4" Volume="2000"/></value>"/>