Aw: [xsl] how to make a group-by multiple attributes motionless

Subject: Aw: [xsl] how to make a group-by multiple attributes motionless
From: "Martin Honnen martin.honnen@xxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Wed, 25 Sep 2019 22:07:16 -0000
Use a composite grouping key that spells out attributes in the required
order if the names are known.
Diese Nachricht wurde von meinem Android Mobiltelefon mit GMX Mail
gesendet.Am 25.09.19, 23:44, "Geert Bormans geert@xxxxxxxxxxxxxxxxxxx"
<xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> schrieb:

  I a streaming XSLT 3.0, I have to group a series of elements by their
  attribute names and valuesI have issues making the group-by
  In a simplified example
  <rows> <row a="val-a-1" b="b-val"/> <row a="val-a-2" b="b-val"/> <row
  a="val-a-1" b="b-val"/> <row a="val-a-2"/></rows>
  I need grouping this way
  <rowgroups>  <rowgroup hash="|a=val-a-1|b=b-val"/>  <rowgroup
  hash="|a=val-a-2|b=b-val"/>  <rowgroup hash="|a=val-a-2"/></rowgroups>
  easily achieved this way
   <xsl:fork> <xsl:for-each-group select="*"
  group-by="string-join(@*/concat('|', name(), '=', .), '')"> <rowgroup
  hash="{current-grouping-key()}"/> </xsl:for-each-group> </xsl:fork>
  but, I could have data like this (third line attribute order swapped)
  <rows> <row a="val-a-1" b="b-val"/> <row a="val-a-2" b="b-val"/> <row
  b="b-val" a="val-a-1"/> <row a="val-a-2"/></rows>
  and this basically gives me a fourth group using the code above
  So I want to make sure that the attributes order can be controlled
  when I prepare the group-by, but any sorting attempt I make, leads to
  the group-by no longer being motionless
  I would welcome your suggestions
  Met vriendelijke groeten,
  Best regards,

  Geert Bormans
  XSL-List info and archiveEasyUnsubscribe (by email)

XSL-List info and archiveEasyUnsubscribe (by email)

Current Thread