Daniel,
I wrote:
Since you know the element names in the header, I guess you can list
the elements in the header. In which case, you can select the rows
that you're interested in with:
  row[not(column[position() = $header/AAA or
                 position() = $header/BBB or
                 position() = $header/CCC or
                 position() = $header/DDD]
                [not(normalize-space())])]
where $header is set with:
<xsl:variable name="header" select="/root/header" />
Actually, without knowing the names of the elements in the header, you
can do:
  row[not(column[position() = $header/*]
                [not(normalize-space())])]
which is somewhat easier.
                
Cheers,
Jeni
---
Jeni Tennison
http://www.jenitennison.com/