# Schema/Specification¶

NeuroML v2.2 is the current stable release of the language, and is described below.

For an overview of the various releases of the language see: A brief history of NeuroML.

We’ve briefly seen the XML representation of NeuroML models and simulations in the Getting Started tutorials. Here, we dive a little deeper into the underlying details of NeuroML.

XML itself does not define a set of standard tags: any tags may be used as long as the resultant document is well-formed. Therefore, NeuroML defines a standard set of XML elements (the tags and attributes which specify the model and parameters, e.g. <iafCell id="iaf" leakReversal="-60mV"...>) that may be used in NeuroML documents: the NeuroML XML Schema Definition. This is referred to as the NeuroML schema or the NeuroML specification.

As the wiki page says:

XSD (XML Schema Definition), a recommendation of the World Wide Web Consortium (W3C), specifies how to formally describe the elements in an Extensible Markup Language (XML) document. It can be used by programmers to verify each piece of item content in a document, to assure it adheres to the description of the element it is placed in.

This gives us an idea of the advantages of using an XML based system. All NeuroML models must use these pre-defined tags/components—this is what we check for when we validate NeuroML models. A valid NeuroML model is said to adhere to the NeuroML schema.

Purpose of the NeuroML specification/schema.

The NeuroML schema/specification defines the structure of a valid NeuroML document. The core NeuroML tools adhere to this specification and can read/write/interpret the language correctly.

In the next section, we learn more about the NeuroML 2 schema, and see how the dynamics of the NeuroML 2 entities are defined in LEMS.