Subject: Re: [xsl] Group handling of multiple IDREFS From: "Michael Kay mike@xxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Thu, 19 Dec 2019 23:50:51 -0000 |
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@xxxxxxxxxxx <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> 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
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Group handling of multiple ID, Peter Flynn peter@xx | Thread | Re: [xsl] Group handling of multipl, Peter Flynn peter@xx |
[xsl] Group handling of multiple ID, Peter Flynn peter@xx | Date | Re: [xsl] Group handling of multipl, Peter Flynn peter@xx |
Month |