Upon the addition of a KineticLaw object to an SBMLDocument (e.g., using Reaction::setKineticLaw()), the SBML Level, SBML Version and XML namespace of the document override the values used when creating the KineticLaw object via this constructor. This is necessary to ensure that an SBML document is a consistent structure. Nevertheless, the ability to supply the values at the time of creation of a KineticLaw is an important aid to producing valid SBML. Knowledge of the intented SBML Level and Version determine whether it is valid to assign a particular value to an attribute, or whether it is valid to add an object to an existing SBMLDocument.
Visit SBML.org for more information
about SBML and libSBML.