On 2011-12-06 15:24, Andrew Welch wrote:
On 6 December 2011 14:17,<charlieo0(_at_)comcast(_dot_)net> wrote:
I could use some help with the following problem.
I have an XML instance that is a long list of table entries. I need to compare
text nodes and if they are the same, restructure an aspect of the row. I have
been able to write something that will compare only the first following and
first preceding rows, but I need to be able to traverse multiple rows until the
matching stops. If there is no duplicate NSN, then merely copy the row as is.
Use a for-each-group selecting the nsnindxrow, grouping on the nsn,
and within its body use copy-of="current-group()/callout" to get all
the callouts for that nsn (the current-grouping-key())
Like that:
<xsl:template match="nsnindx">
<xsl:copy>
<!-- group-by="nsn" assumption: the string value of nsn is unique
for every possible combination of fsc and niin -->
<xsl:for-each-group select="nsnindxrow" group-by="nsn">
<!-- the context item is the first item in each group,
so copy and copy-of work on the first group item and
its nsn child, respectively: -->
<xsl:copy>
<xsl:copy-of select="nsn" />
<xsl:sequence select="current-group()/callout" />
</xsl:copy>
</xsl:for-each-group>
</xsl:copy>
</xsl:template>
--~------------------------------------------------------------------
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>
--~--