xsl-list
[Top] [All Lists]

Re: [xsl] comparing following nodes and re-structuring.

2011-12-06 08:34:49


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>
--~--

<Prev in Thread] Current Thread [Next in Thread>