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.
xml xmlVar;
In addition to declaring a variable for use with XML values, you can also perform the following operations:
Syntax: xmlagg(xml value)
Type: The argument must be an XML value. The function returns an XML value.
Example: xmlagg(xmlparse(stringCol))
Syntax: xmlconcat(xml value ..., xml value)
Type: The arguments must be XML values. The function returns an XML value.
Example: xmlconcat(xmlparse(stringCol), xmlparse('<t/>'))
Syntax: xmlelement(name xmlattributes(string AS name ..., string AS name) , xml value,...,xml value)
Type: The names must adhere to these conventions:
The function returns an XML value.
Example: xmlelement(top, xmlattributes('data' as attr1), xmlparse('<t/>'))
Syntax: xmlparse(string value)
Type: The argument must be a string value. The function returns an XML value.
Example: xmlparse('<tag/>')
Syntax: xmlserialize(xml value)
Type: The argument must be an XML value. The function returns a string.
Example: xmlserialize(xmlparse('<t/>'))
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>"/>