Predicates on the step allow conditions to be specified.
They follow the step and are wrapped in square brackets ('[' and ']').
For example:
para[@id='mine']
selects 'para' elements where the 'id' attribute has value 'mine'.
There is a whole wealth of operators (including boolean logic) that can be used.
You can also have sub-expressions:
contents[para/@id='mine']
This selects a 'contents' element that has a child 'para' with an attribute 'id' of value 'mine'.