[xquery-talk] Generating an element sequence matching a template

Liam Quin liam at w3.org
Tue Apr 25 19:10:32 PDT 2006

On Tue, Apr 25, 2006 at 02:13:21PM -0700, Howard Katz wrote:
> It actually gets a bit harder yet. If we now omit the first <e_1> in the
> row-data:
> let $headers := ( "e_1", "e_2", "e_3", "e_1", "e_4" )
> let $row-data := ( <e_3>33</e_3>, <e_1>123</e_1>, <e_4>44</e_4> )
> we end up with:
> <e_1>123</e_1>, <e_2/>, <e_3>33</e_3>, <e_1/>, <e_4>44</e_4>
> I'm not 100% sure about this, but I would think a more "correct" ordering
> would be one that preserved the original order of $row-data as much as
> possible, as in:
> <e_1/>, <e_2/>, <e_3>33</e_3>, <e_1>123</e_1>, <e_4>44</e4>

I'd probably try to write very pedestrian, simple code first...

for $e in $headers
  if ($row-data[local-name() = $e])
  then $row-data[local-name() = $e])
  else <element name="{$e}"></element>

(I don't remember if we ended up allowing such dynamic constructors
but I hope so!)


Liam Quin, W3C XML Activity Lead, http://www.w3.org/People/Quin/

More information about the talk mailing list