<!--
**
** OMNeT++ Network Description (NED)
**
** Characteristics:
** - describes NED I.
** - values (expressions) may be either unparsed (in attributes) or parsed
** (in expression elements).
** - display strings stored unparsed
** - plusindent missing
** - contains limitations of NED grammar:
** - for loops cannot contain for loops AND connections;
** - connections cannot share condition
**
-->
<!ELEMENT ned-files ((ned-files|ned-file)*)>
<!ELEMENT ned-file ((import|channel|simple-module|compound-module|network|
cppinclude|cpp-struct|cpp-cobject|cpp-noncobject|
enum|message|class|struct)*)>
<!ATTLIST ned-file
filename CDATA #IMPLIED
preferred-indent CDATA "4"
banner-comment CDATA #IMPLIED >
<!--
** NED-I.
-->
<!ELEMENT import (imported-file*)>
<!ATTLIST import
banner-comment CDATA #IMPLIED
right-comment CDATA " "
trailing-comment CDATA " " >
<!ELEMENT imported-file EMPTY>
<!ATTLIST imported-file
filename CDATA #REQUIRED
banner-comment CDATA #IMPLIED
right-comment CDATA " " >
<!ELEMENT channel (channel-attr*, display-string?)>
<!ATTLIST channel
name NMTOKEN #REQUIRED
banner-comment CDATA #IMPLIED
right-comment CDATA " "
trailing-comment CDATA " " >
<!ELEMENT channel-attr (expression?)>
<!ATTLIST channel-attr
name NMTOKEN #REQUIRED
value CDATA #IMPLIED
banner-comment CDATA #IMPLIED
right-comment CDATA " " >
<!ELEMENT network (substmachines?,substparams?)>
<!ATTLIST network
name NMTOKEN #REQUIRED
type-name NMTOKEN #REQUIRED
like-name NMTOKEN #IMPLIED
banner-comment CDATA #IMPLIED
right-comment CDATA " "
trailing-comment CDATA " " >
<!ELEMENT simple-module (machines?, params?, gates?, display-string?)>
<!ATTLIST simple-module
name NMTOKEN #REQUIRED
banner-comment CDATA #IMPLIED
right-comment CDATA " "
trailing-comment CDATA " " >
<!ELEMENT compound-module (machines?, params?, gates?,
submodules?, connections?, display-string?)>
<!ATTLIST compound-module
name NMTOKEN #REQUIRED
banner-comment CDATA #IMPLIED
right-comment CDATA " "
trailing-comment CDATA " " >
<!ELEMENT params (param*)>
<!ATTLIST params
banner-comment CDATA #IMPLIED
right-comment CDATA " " >
<!ELEMENT param EMPTY>
<!ATTLIST param
name NMTOKEN #REQUIRED
data-type CDATA "numeric"
banner-comment CDATA #IMPLIED
right-comment CDATA " " >
<!ELEMENT gates (gate*)>
<!ATTLIST gates
banner-comment CDATA #IMPLIED
right-comment CDATA " " >
<!ELEMENT gate EMPTY>
<!ATTLIST gate
name NMTOKEN #REQUIRED
direction (input|output) #REQUIRED
is-vector (true|false) "false"
banner-comment CDATA #IMPLIED
right-comment CDATA " " >
<!ELEMENT machines (machine*)>
<!ATTLIST machines
banner-comment CDATA #IMPLIED
right-comment CDATA " " >
<!ELEMENT machine EMPTY>
<!ATTLIST machine
name NMTOKEN #REQUIRED
banner-comment CDATA #IMPLIED
right-comment CDATA " " >
<!ELEMENT submodules (submodule*)>
<!ATTLIST submodules
banner-comment CDATA #IMPLIED
right-comment CDATA " " >
<!ELEMENT submodule (expression?, substmachines*, substparams*,
gatesizes*, display-string?)>
<!ATTLIST submodule
name NMTOKEN #REQUIRED
type-name NMTOKEN #REQUIRED
like-name NMTOKEN #IMPLIED
vector-size CDATA #IMPLIED
banner-comment CDATA #IMPLIED
right-comment CDATA " " >
<!ELEMENT substparams (expression?, substparam*)>
<!ATTLIST substparams
condition CDATA #IMPLIED
banner-comment CDATA #IMPLIED
right-comment CDATA " " >
<!ELEMENT substparam (expression?)>
<!ATTLIST substparam
name NMTOKEN #REQUIRED
value CDATA #IMPLIED
banner-comment CDATA #IMPLIED
right-comment CDATA " " >
<!ELEMENT gatesizes (expression?, gatesize*)>
<!ATTLIST gatesizes
condition CDATA #IMPLIED
banner-comment CDATA #IMPLIED
right-comment CDATA " " >
<!ELEMENT gatesize (expression?)>
<!ATTLIST gatesize
name NMTOKEN #REQUIRED
vector-size CDATA #IMPLIED
banner-comment CDATA #IMPLIED
right-comment CDATA " " >
<!ELEMENT substmachines (expression?, substmachine*)>
<!ATTLIST substmachines
condition CDATA #IMPLIED
banner-comment CDATA #IMPLIED
right-comment CDATA " " >
<!ELEMENT substmachine EMPTY>
<!ATTLIST substmachine
name NMTOKEN #REQUIRED
banner-comment CDATA #IMPLIED
right-comment CDATA " " >
<!ELEMENT connections ((connection|for-loop)*)>
<!ATTLIST connections
check-unconnected (true|false) "true"
banner-comment CDATA #IMPLIED
right-comment CDATA " " >
<!ELEMENT connection ((expression|conn-attr|display-string)*)>
<!ATTLIST connection
condition CDATA #IMPLIED
src-module NMTOKEN #IMPLIED
src-module-index CDATA #IMPLIED
src-gate NMTOKEN #REQUIRED
src-gate-index CDATA #IMPLIED
dest-module NMTOKEN #IMPLIED
dest-module-index CDATA #IMPLIED
dest-gate NMTOKEN #REQUIRED
dest-gate-index CDATA #IMPLIED
arrow-direction (left|right) "right"
banner-comment CDATA #IMPLIED
right-comment CDATA " " >
<!ELEMENT conn-attr (expression*)>
<!ATTLIST conn-attr
name NMTOKEN #REQUIRED
value CDATA #IMPLIED
right-comment CDATA "" >
<!ELEMENT for-loop (loop-var+,connection*)>
<!ATTLIST for-loop
banner-comment CDATA #IMPLIED
right-comment CDATA " "
trailing-comment CDATA " " >
<!ELEMENT loop-var (expression*)>
<!ATTLIST loop-var
param-name NMTOKEN #REQUIRED
from-value CDATA #IMPLIED
to-value CDATA #IMPLIED
banner-comment CDATA #IMPLIED
right-comment CDATA " " >
<!-- FIXME: should become a property -->
<!ELEMENT display-string EMPTY>
<!ATTLIST display-string
value CDATA #REQUIRED
banner-comment CDATA #IMPLIED
right-comment CDATA " " >
<!--
** Expressions
-->
<!ELEMENT expression ((operator|function|param-ref|ident|const))>
<!ATTLIST expression
target NMTOKEN #IMPLIED >
<!ELEMENT operator ((operator|function|param-ref|ident|const)+)>
<!ATTLIST operator
name NMTOKEN #REQUIRED >
<!ELEMENT function ((operator|function|param-ref|ident|const)*)>
<!ATTLIST function
name NMTOKEN #REQUIRED >
<!ELEMENT param-ref (expression*)>
<!ATTLIST param-ref
module CDATA #IMPLIED
module-index CDATA #IMPLIED
param-name NMTOKEN #REQUIRED
param-index CDATA #IMPLIED
is-ref (true|false) "false"
is-ancestor (true|false) "false" >
<!-- for loop variables, etc. -->
<!ELEMENT ident EMPTY>
<!ATTLIST ident
name NMTOKEN #REQUIRED >
<!ELEMENT const EMPTY>
<!ATTLIST const
type (bool|int|real|string|time) #REQUIRED
text CDATA #IMPLIED
value CDATA #REQUIRED >
<!--
** NED-II: message subclassing part
-->
<!ELEMENT cppinclude EMPTY>
<!ATTLIST cppinclude
filename CDATA #REQUIRED
banner-comment CDATA #IMPLIED
right-comment CDATA " "
trailing-comment CDATA " " >
<!-- C++ type announcements -->
<!ELEMENT cpp-struct EMPTY>
<!ATTLIST cpp-struct
name NMTOKEN #REQUIRED
banner-comment CDATA #IMPLIED
right-comment CDATA " "
trailing-comment CDATA " " >
<!ELEMENT cpp-cobject EMPTY>
<!ATTLIST cpp-cobject
name NMTOKEN #REQUIRED
banner-comment CDATA #IMPLIED
right-comment CDATA " "
trailing-comment CDATA " " >
<!ELEMENT cpp-noncobject EMPTY>
<!ATTLIST cpp-noncobject
name NMTOKEN #REQUIRED
banner-comment CDATA #IMPLIED
right-comment CDATA " "
trailing-comment CDATA " " >
<!-- Enums -->
<!ELEMENT enum (enum-fields?)>
<!ATTLIST enum
name NMTOKEN #REQUIRED
extends-name NMTOKEN #IMPLIED
banner-comment CDATA #IMPLIED
right-comment CDATA " "
trailing-comment CDATA " " >
<!ELEMENT enum-fields (enum-field*)>
<!ATTLIST enum-fields
banner-comment CDATA #IMPLIED
right-comment CDATA " " >
<!ELEMENT enum-field EMPTY>
<!ATTLIST enum-field
name NMTOKEN #REQUIRED
value CDATA #IMPLIED
banner-comment CDATA #IMPLIED
right-comment CDATA " " >
<!-- Message, class, struct -->
<!ELEMENT message (properties?,fields?)>
<!ATTLIST message
name NMTOKEN #REQUIRED
extends-name NMTOKEN #IMPLIED
banner-comment CDATA #IMPLIED
right-comment CDATA " "
trailing-comment CDATA " " >
<!ELEMENT class (properties?,fields?)>
<!ATTLIST class
name NMTOKEN #REQUIRED
extends-name NMTOKEN #IMPLIED
banner-comment CDATA #IMPLIED
right-comment CDATA " "
trailing-comment CDATA " " >
<!ELEMENT struct (properties?,fields?)>
<!ATTLIST struct
name NMTOKEN #REQUIRED
extends-name NMTOKEN #IMPLIED
banner-comment CDATA #IMPLIED
right-comment CDATA " "
trailing-comment CDATA " " >
<!ELEMENT fields (field*)>
<!ATTLIST fields
banner-comment CDATA #IMPLIED
right-comment CDATA " " >
<!ELEMENT field EMPTY>
<!ATTLIST field
name NMTOKEN #REQUIRED
data-type CDATA #REQUIRED
is-abstract (true|false) "false"
is-vector (true|false) "false"
vector-size CDATA #IMPLIED
enum-name NMTOKEN #IMPLIED
default-value CDATA #IMPLIED
banner-comment CDATA #IMPLIED
right-comment CDATA " " >
<!ELEMENT properties (property*)>
<!ATTLIST properties
banner-comment CDATA #IMPLIED
right-comment CDATA " " >
<!ELEMENT property EMPTY>
<!ATTLIST property
name NMTOKEN #REQUIRED
value CDATA #REQUIRED
banner-comment CDATA #IMPLIED
right-comment CDATA " " >
<!--
** 'unknown' is used internally to represent elements not in this NED DTD
-->
<!ELEMENT unknown ANY>
<!ATTLIST unknown
element NMTOKEN #REQUIRED>