I've been hunting for an elegant way to obtain a sequence
containing those elements that share a common attribute (in
this case <course> elements with the same "code" attribute.
That doesn't sound like a sequence to me, it sounds like a set of sequences,
one for each attribute value.
Anyway, this sounds like a standard description of the grouping problem, and
the first thing you should do is look at xsl:for-each-group if you are using
XSLT 2.0, or Muenchian grouping in the case of 1.0 (see
http://www.jenitennison.com/xslt/grouping)
Michael Kay
http://www.saxonica.com/
I think that I've got a kludged solution using <xsl:for-each>
as follows:
<xsl:for-each select="child::course">
<xsl:variable name="targetCode" select="attribute::code"/>
<xsl:variable name="duplicates">
<if test="count(/descendant::course[attribute::code =
$targetCode]) > 1">
<xsl:value-of select="concat(attribute::code,ancestor::term/
attribute::name, ' ')"/>
</xsl:if>
</xsl:variable>
</xsl:for-each>
This is ugly, and the result isn't a nodeset, so in general
I'm not impressed. The thing I haven't been able to figure
out is whether XPath has something equivalent to a RegExp
backreference, which would allow something like:
<xsl:variable
name="duplicates"
select="child::course[count(/descendant::course
[attribute::code=???]) > 1]"
/>
The trick is what should replace ???
Any assistance would be greatly appreciated. For what's it's
worth, I'm using XSLT to generate a linear program that
represents the courses our students can take in order to find
out what's the
smallest number of hours that they'll experience over their
program.
Sometimes they can choose courses in multiple locations
during their program.
Thanks!
Jason Foster
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail:
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--