Well after success with my first recursive template I was all
set to make one of my own, but now shamefully am coming to
the list for advice over something that appears quite simple.
First thing is to recognize this as a grouping problem. For each distinct
value of @type you need to do something.
In XSLT 2.0:
<xsl:for-each-group select="/*/options/o" group-by="@type">
<xsl:sort select="current-grouping-key()"/>
<out type="{current-grouping-key()}"
count="{count(/*/person[(_at_)pref=current-group()]}"/>
</xsl:for-each-group>
XML ------->
<options>
<o type="A">who</o>
<o type="A">what</o>
<o type="A">when</o>
<o type="B">how</o>
<o type="B">nexus</o>
<o type="B">triumph</o>
<o type="C">alligator</o>
<o type="C">spurn</o>
</option>
<people>
<person pref="who" />
<person pref="nexus" />
<person pref="how" />
<person pref="alligator" />
<person pref="spurn" />
<person pref="triumph" />
.... etc ....
</people>
Desired output ------->
<!-- @count corresponds to number of times the preference
appeared among the list of <people> --->
<out type="A" count="1" />
<out type="B" count="3" />
<out type="C" count="1" />
Stipulation: --------->
<out>'s must be sorted alphabetically, regardless of <option> order.
--~------------------------------------------------------------------
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>
--~--