Draft: draft-ietf-jsonpath-base

Commentary: Add clarifications that the input nodelist provides the outer order , the segments provide a middle - level order , and selectors ( if multiple ) provide the inner order . This may have been obvious to some readers , but now should be obvious to more , including yours truly . 
 I do n't think the example for in Table 17 is right . It says : It should be : Note that the descendants list puts out before and . The wildcard selector then has no choice but outputting , , , . 
 Nice catch ! The example needs fixing as does the ordering note below Table 17 . 
 I let the computer do the catching :-) Do you want to make these changes ? I 'd do a new issue then . ( And wait a bit for Greg to catch up . ) 
 Yes , I 'm happy to do that and please do create a new issue . I wo n't be able to fix it before the weekend at the earliest though . 
 LGTM thanks . Semantics unchanged , but hopefully a lot clearer .
Paragraph (version A):
A segment operates on each of the nodes in its input nodelist in
turn, and the resultant nodelists are concatenated to produce the
result of the segment.  A node may be selected more than once and
appears that number of times in the nodelist.  Duplicate nodes are
not removed.
Paragraph (version B):
A segment operates on each of the nodes in its input nodelist in
turn, and the resultant nodelists are concatenated in the order of
the input nodelist they were derived from to produce the result of
the segment.  A node may be selected more than once and appears that
number of times in the nodelist.  Duplicate nodes are not removed.
Paragraph (version A):
Segments apply one or more selectors to an input value and
concatenate the results into a single nodelist.
Paragraph (version B):
For each node in an input nodelist, segments apply one or more
selectors to the node and concatenate the results of each selector
into per-input-node nodelists, which are then concatenated in the
order of the input nodelist to form a single segment result nodelist.
Paragraph (version A):
The resulting nodelist of a child segment is the concatenation of the
nodelists from each of its selectors in the order that the selectors
appear in the list.  Note that any node matched by more than one
selector is kept as many times in the nodelist.
Paragraph (version B):
For each node in the input nodelist, the resulting nodelist of a
child segment is the concatenation of the nodelists from each of its
selectors in the order that the selectors appear in the list.  Note
that any node matched by more than one selector is kept as many times
in the nodelist.
Paragraph (version A):
A descendant segment produces zero or more descendants of the input
value.
Paragraph (version B):
A descendant segment produces zero or more descendants of an input
value.
Paragraph (version A):
The result of the descendant selector is the concatenation of "R1",
..., "Rn" (in that order).
Paragraph (version A):
So a descendant segment drills down one or more levels into the
structure of the input value.
Paragraph (version B):
For each node in the input nodelist, the result of the descendant
segment is the concatenation of "R1", ..., "Rn" (in that order).
These results are then concatenated in input nodelist order to form
the result of the segment.
Paragraph (version B):
So a descendant segment drills down one or more levels into the
structure of each input value.