OMNeT++ NEDXML 6.1
Discrete Event Simulation Library
DTD

The DTD that describes NED XML files:

<!--
**
** OMNeT++ Network Description v2 (NED2)
**
-->
<!ELEMENT files (ned-file*)>
<!ELEMENT ned-file (comment*, (package|import|property-decl|property|
simple-module|compound-module|module-interface|
channel|channel-interface)*)>
<!ATTLIST ned-file
filename CDATA #REQUIRED
version CDATA "2">
<!-- comments and whitespace; comments include '//' marks. Note that although
nearly all elements may contain comment elements, there are places
(e.g. within expressions) where they are ignored by the implementation.
Default value is a space or a newline, depending on the context.
-->
<!ELEMENT comment EMPTY>
<!ATTLIST comment
locid NMTOKEN #REQUIRED
content CDATA #IMPLIED>
<!ELEMENT package (comment*)>
<!ATTLIST package
name CDATA #REQUIRED>
<!ELEMENT import (comment*)>
<!ATTLIST import
import-spec CDATA #REQUIRED>
<!ELEMENT property-decl (comment*, property-key*, property*)>
<!ATTLIST property-decl
name CDATA #REQUIRED
is-array (true|false) "false">
<!ELEMENT extends (comment*)>
<!ATTLIST extends
name CDATA #REQUIRED>
<!ELEMENT interface-name (comment*)>
<!ATTLIST interface-name
name CDATA #REQUIRED>
<!ELEMENT simple-module (comment*, extends?, interface-name*, parameters?, gates?)>
<!ATTLIST simple-module
name NMTOKEN #REQUIRED>
<!ELEMENT module-interface (comment*, extends*, parameters?, gates?)>
<!ATTLIST module-interface
name NMTOKEN #REQUIRED>
<!ELEMENT compound-module (comment*, extends?, interface-name*,
parameters?, gates?, types?, submodules?, connections?)>
<!ATTLIST compound-module
name NMTOKEN #REQUIRED>
<!ELEMENT channel-interface (comment*, extends*, parameters?)>
<!ATTLIST channel-interface
name NMTOKEN #REQUIRED>
<!ELEMENT channel (comment*, extends?, interface-name*, parameters?)>
<!ATTLIST channel
name NMTOKEN #REQUIRED>
<!ELEMENT parameters (comment*, (property|param)*)>
<!ATTLIST parameters
is-implicit (true|false) "false">
<!ELEMENT param (comment*, property*)>
<!ATTLIST param
type (double|int|string|bool|object|xml) #IMPLIED
is-volatile (true|false) "false"
name CDATA #REQUIRED
value CDATA #IMPLIED
is-pattern (true|false) "false"
is-default (true|false) "false">
<!ELEMENT property (comment*, property-key*)>
<!ATTLIST property
is-implicit (true|false) "false"
name CDATA #REQUIRED
index CDATA #IMPLIED>
<!ELEMENT property-key (comment*, literal*)>
<!ATTLIST property-key
name CDATA #IMPLIED>
<!ELEMENT gates (comment*, gate*)>
<!ELEMENT gate (comment*, property*)>
<!ATTLIST gate
name NMTOKEN #REQUIRED
type (input|output|inout) #IMPLIED
is-vector (true|false) "false"
vector-size CDATA #IMPLIED>
<!ELEMENT types (comment*, (channel|channel-interface|simple-module|
compound-module|module-interface)*)>
<!ELEMENT submodules (comment*, submodule*)>
<!ELEMENT submodule (comment*, condition?, parameters?, gates?)>
<!ATTLIST submodule
name NMTOKEN #REQUIRED
type CDATA #IMPLIED
like-type CDATA #IMPLIED
like-expr CDATA #IMPLIED
is-default (true|false) "false"
vector-size CDATA #IMPLIED>
<!ELEMENT connections (comment*, (connection|connection-group)*)>
<!ATTLIST connections
allow-unconnected (true|false) "false">
<!ELEMENT connection (comment*, parameters?, (loop|condition)*)>
<!ATTLIST connection
src-module NMTOKEN #IMPLIED
src-module-index CDATA #IMPLIED
src-gate NMTOKEN #REQUIRED
src-gate-plusplus (true|false) "false"
src-gate-index CDATA #IMPLIED
src-gate-subg (i|o) #IMPLIED
dest-module NMTOKEN #IMPLIED
dest-module-index CDATA #IMPLIED
dest-gate NMTOKEN #REQUIRED
dest-gate-plusplus (true|false) "false"
dest-gate-index CDATA #IMPLIED
dest-gate-subg (i|o) #IMPLIED
name NMTOKEN #IMPLIED
type CDATA #IMPLIED
like-type CDATA #IMPLIED
like-expr CDATA #IMPLIED
is-default (true|false) "false"
is-bidirectional (true|false) "false"
is-forward-arrow (true|false) "true">
<!ELEMENT connection-group (comment*, (loop|condition)*, connection*)>
<!ELEMENT loop (comment*)>
<!ATTLIST loop
param-name NMTOKEN #REQUIRED
from-value CDATA #IMPLIED
to-value CDATA #IMPLIED>
<!ELEMENT condition (comment*)>
<!ATTLIST condition
condition CDATA #IMPLIED>
<!ELEMENT literal (comment*)>
<!-- Note: value is in fact REQUIRED, but empty attr value should
also be accepted because that represents the "" string literal;
"spec" is for properties, to store the null value and "-",
the antivalue.
-->
<!ATTLIST literal
type (double|quantity|int|bool|string|spec) #REQUIRED
text CDATA #IMPLIED
value CDATA #IMPLIED>
<!--
** 'unknown' is used internally to represent elements not in this NED DTD
-->
<!ELEMENT unknown ANY>
<!ATTLIST unknown
element CDATA #REQUIRED>