If this was schema-aware, then atomizing the @to attribute would return a list
of atomic values, so it would all just work...
As it is, can't you simply do group-by="tokenize(@to)"? Or have I missed
something?
Note that when the group-by expression selects multiple values, the element
will appear in multiple groups. XSLT 3.0 introduces composite="yes" which means
that the multiple values are treated as a single grouping key.
Michael Kay
Saxonica
On 19 Dec 2019, at 23:42, Peter Flynn peter(_at_)silmaril(_dot_)ie
<xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com> wrote:
I have a custom document type which makes heavy use of an IDREFS attribute on
an element type for cross-referencing. In the containing section, I need to
iterate across the first occurrences of the values in document order. This is
easy with an IDREF attribute, eg
<xsl:for-each-group select="descendant::ref" group-by="@to">
...
</xsl:for-each-group>
But with IDREFS, I need to iterate across all the separate ID values
referenced, in the order in which they occur in the attribute.
I could of course construct a node-set which flattens the data, or perhaps
use an index, but I wondered if anyone else has had this requirement before,
or if there was an existing function, like (hypothetically)
group-by="fn:eachof(@to)"
Peter
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--