xsl-list
[Top] [All Lists]

Re: [xsl] Group handling of multiple IDREFS

2019-12-19 17:50:55
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
--~--
<Prev in Thread] Current Thread [Next in Thread>