[xsl] Help on node selection

Subject: [xsl] Help on node selection
From: "Fabien Tillier" <f.tillier@xxxxxxxx>
Date: Fri, 27 Aug 2010 13:42:53 +0200
Hi List.

I want to be able to rebuild an XML document with an XSL template. The idea is
o duplicate some parts of the source XML and insert a few more elements.
My question is pretty basic, so far.

Suppose I get an XML document

<data>
      <row>
                      <N1>1</N1>
      <N2>120</N2>
      </row>
      <row>
                      <N1>1</N1>
      <N2>120</N2>
      </row>
      <row>
                      <N1>2</N1>
      <N2>120</N2>
      </row>
      <row>
                      <N1>2</N1>
      <N2>120</N2>
      </row>
      <row>
                      <N1>1</N1>
      <N2>110</N2>
      </row>
</data>

I want to first process nodes which have N1 = 1, then nodes with N1=2. But I
want to call the template only once with all matching nodes (so once with N1=1
nodes, and once with N1=2 nodes), because I am building a group from these
Thus, I have tried with

<xsl:apply-templates select="//row[N1=1]" mode="headers"/>

But my template

<xsl:template match="row" mode="headers">
                Headers             
</xsl:template>

Is called on each matching node...(thus 3 times here), rather than once, and
then gets some loop to individually treat each node from the list.
How can I proceed ?

Thanks in advance
Best regards,
Fabien

Current Thread