Hi Jordan,

I’m glad to hear you solved the problem. Just a minor observation:

>     let $attributes := $begin//*[@xmi:id=$id]/ownedAttribute/[@name | 
> @xmi:type | @xmi:id]

This query will create an XQuery array for each ownedAttribute element
(with 3 attributes inside). You could additionally create an array for
each stereotype item:

>     let $combined := [ $id, $stereo1/name(), $stereo2/name(), $comments, 
> $attributes, "" ]

Later on, if you use subsequence(), head() or ...[1], you will get one
single stereotype array item…

  let $first := subsequence($stereotypes, 1)
  let $first := head($subsequence)  (: equivalent :)
  let $first := $subsequence[1]  (: equivalent :)

…and you can further process the array entries in the next step:

  let $first-id := $first(1)  (: access first array entry :)
  return $first-id

Maybe this helps you to build up the final map representation? The
lookup operator (?) can be used for positional access. If $stereotype
contains the array sequence (as generated above in my reply), it is
very simple to retrieve the first member of all all arrays:

  let $ids := $sterotypes?1

See [1,2] for more information on arrays and the lookup operator.

Cheers,
Christian

[1] http://docs.basex.org/wiki/XQuery_3.1
[2] http://docs.basex.org/wiki/Array_Module

Reply via email to