PyNN and NeuroML are independently developed approaches to allow portability of models across simulators.
These reflect 2 differing approaches to model specification:

Declarative specification: the structure of the model is explicitly specified in a structured model exchange format. XML is well suited as a basis
for a language in this format, and is used by NeuroML as well as SBML and CellML.

Procedural specification: the function calls or procedures for building a model are standardised. This is the case with PyNN, where Python scripts can
be used to create simulations on multiple simulators.

These approaches are complementary, and a number of options are available to allow interaction between PyNN and model components in NeuroML
(in particular NeuroML v2.0).

Information on the latest developments towards greater interaction between PyNN & NeuroML2 can be
found here here and examples of the conversions can be found on
Open Source Brain.