The prefix and name are separated by a colon. Now it will not because it is selecting cod element nodes in the null namespace. The prefix 'fish' is bound to the appropriate namespace. At every step in a location path the correct prefix must be used. Attribute nodes are not effected by the xmlns default namespace declaration.
Attributes are in the null namespace unless they have a prefix.
Prefixing every step of a location path can become unwieldy. In attempt to make the location paths simpler, DSLPath expressions can also use a default namespace. The value of the default namespace is null unless explicitly changed. This is why all of our earlier examples worked without namespace bindings. If the exprns attribute is set on any ancestor of the node that contains the DSLPath expression being evaluated then the nodes selected would be in the namespace that is the value of the exprns attribute.