Hi,
From Muenchian method of grouping, I always use something like this:
ROW[count(. | key('relacion_x_cobertura', REL_ID)[1]) = 1]
key('relacion_x_cobertura', REL_ID)
will return a node-set whose "relacion_x_cobertura" key value is the same as
the string value of REL_ID element,
key('relacion_x_cobertura', REL_ID)[1]
of that node-set, select the first,
. | key('relacion_x_cobertura', REL_ID)[1]
create an union of that node-set with the current node. Remember that a
node-set will *not* contain dublicates, so if the current node is same node as
the first one returned by the key, the resulting set will only contain the
current node.
count(. | key('relacion_x_cobertura', REL_ID)[1])
count the number of nodes in the union set,
count(. | key('relacion_x_cobertura', REL_ID)[1]) = 1
and if the count is equal to one, return boolean true. In effect, check if the
current node is the same node as the first one returned by the key.
- Why the . (dot) is used? why if I omit it, it doesn't work
(it returns all elements)?
The current node. See <http://www.w3.org/TR/xpath#NT-AbbreviatedStep>.
- What's the meaning of the | (pipe)?
You haven't read the XPath 1.0 spec, have you? See
<http://www.w3.org/TR/xpath#NT-UnionExpr>.
- What's the meaning of [1]? I have always used things like
[FIELD_NAME=some_value]. I understand that perfectly, but
what about placing only that number in the brackets? I tried
by using [2] and it worked too... or, perhaps I was lucky?
Read the XPath 1.0 spec, you'll feel better in the morning.
Cheers,
Jarno
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list