declare function cristal:getOutcomeFromView($coll as xs:string, $view as node()) as xs:string { let $schemaName := $view/@SchemaName let $schemaVersion := $view/@SchemaVersion let $eventId := $view/@Last return fn:string-join(($coll,'/','Outcome.',$schemaName,'.',$schemaVersion,'.',$eventId),'') }; declare function cristal:getCollByType($typeName as xs:string) as xs:string* { for $prop in //Property[@name="CfCName"] let $itemColl := util:collection-name($prop) let $prodType := collection($itemColl)/Property[@name="Type"] where $prop eq $typeName and $prodType eq "Product" return $itemColl }; declare function cristal:getCollByName($name as xs:string) as xs:string* { for $prop in //Property[@name="CfCName"] let $itemColl := util:collection-name($prop) let $prodType := collection($itemColl)/Property[@name="Type"] where $prop eq $typeName and $prodType eq "Product" return $itemColl }; declare function cristal:getOutcomeFromEvent($coll as xs:string, $event as node()) as xs:string { let $schemaName := $event/@SchemaName let $schemaVersion := $event/@SchemaVersion let $eventId := $event/@ID return fn:string-join(($coll,'/','Outcome.',$schemaName,'.',$schemaVersion,'.',$eventId),'') };