<!--
File: netmsgs.dtd
$LastChangedDate$
$Rev$
This is RoadNarrows LLC NetMsgs DTD, which supports the definitions of
messages intended to be packed and unpacked in architecture agnostic
order and sent and received across a disparate set of networked nodes.
The NetMsgs package supports the Presentation Level of the OSI model.
It does not include support to handle the transmission of messages across
the network nor does it "know" how the applications interpretate the
messages.
Typical usage:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE netmsgs PUBLIC "-//www.roadnarrows.com//DTD NETMSGS 1.0//EN"
"http://www.roadnarrows.com/DTD/netmsgs/1.0/netmsgs.dtd">
<netmsgs>
<meta>
...
</meta>
<field_types>
...
</field_types>
<msgdef>
...
</msgdef>
<msgdef>
...
</msgdef>
</netmsgs>
The URI used as a system identifier with the public identifier allows
the user agent to download the DTD and entity sets as needed.
This version of the transitional DTD is: 1.0
Author: Robin Knight (robin.knight@roadnarrows.com)
Copyright:
(C) 2010. RoadNarrows LLC.
(http://www.roadnarrows.com)
All Rights Reserved
EULA:
Permission is hereby granted, without written agreement and without
license or royalty fees, to use, copy, modify, and distribute this
software and its documentation for any purpose, provided that
(1) The above copyright notice and the following two paragraphs
appear in all copies of the source code and (2) redistributions
including binaries reproduces these notices in the supporting
documentation. Substantial modifications to this software may be
copyrighted by their authors and need not follow the licensing terms
described here, provided that the new terms are clearly indicated in
all files where they apply
IN NO EVENT SHALL THE AUTHOR, ROADNARROWS LLC, OR ANY MEMBERS/EMPLOYEES
OF ROADNARROW LLC OR DISTRIBUTORS OF THIS SOFTWARE BE LIABLE TO ANY
PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION,
EVEN IF THE AUTHORS OR ANY OF THE ABOVE PARTIES HAVE BEEN ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE
THE AUTHOR AND ROADNARROWS LLC SPECIFICALLY DISCLAIM ANY WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN
"AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE NO OBLIGATION TO
PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
-->
<!-- ==================== Atribute Types =================================== -->
<!ENTITY % MsgEncoding "itv | flat">
<!ENTITY % Endian "big | little | native">
<!ENTITY % Lang "h | c | python">
<!ENTITY % Dispo "active | deprecated">
<!ENTITY % FTypeBuiltInSimple
"u8 | s8 | char | bool | u16 | s16 | u32 | s32 | u64 | s64 | f32 | f64 |
p32 | p64"
>
<!ENTITY % FTypeBuiltInCompound
"string | struct | vector"
>
<!ENTITY % FTypeBuiltInAlias
"byte | schar | ushort | short | uint | int | ulonglong | longlong |
float | double"
>
<!ENTITY % FTypeExtended "CDATA"> <!-- really legal c/python identifier -->
<!ENTITY % FTypeBuiltIn
"%FTypeBuiltInSimple; | %FTypeBuiltInCompound; | %FTypeBuiltInAlias;"
>
<!ENTITY % FType "CDATA"> <!-- builtin or extended -->
<!ENTITY % Size "CDATA"> <!-- number or symbol -->
<!-- ==================== Atribute Types =================================== -->
<!ELEMENT netmsgs (meta?, field_types?, msg_types?) >
<!ATTLIST netmsgs
encoding (%MsgEncoding;) "itv"
endian (%Endian;) "big"
>
<!ELEMENT meta (brief? | ns? | prologue | epilogue)* >
<!ELEMENT brief (#PCDATA) >
<!ELEMENT ns (#PCDATA) >
<!ELEMENT prologue (#PCDATA) >
<!ATTLIST prologue
lang (%Lang;) #REQUIRED
>
<!ELEMENT epilogue (#PCDATA) >
<!ATTLIST epilogue
lang (%Lang;) #REQUIRED
>
<!ELEMENT field_types (ftypedef*) >
<!ELEMENT ftypedef (fielddef*) >
<!ATTLIST ftypedef
ftid ID #REQUIRED
ftype %FType; #REQUIRED
size %Size; #IMPLIED
>
<!ELEMENT msg_types (msgdef*) >
<!ELEMENT msgdef (fielddef+ | pad* | comment?)* >
<!ATTLIST msgdef
msgid ID #REQUIRED
disposition (%Dispo;) "active"
>
<!ELEMENT fielddef (const? | min? | max? | comment? | fielddef?)* >
<!ATTLIST fielddef
fname NMTOKEN #REQUIRED
ftype %FType; #REQUIRED
size %Size; #IMPLIED
disposition (%Dispo;) "active"
>
<!ELEMENT const (#PCDATA) >
<!ELEMENT min (#PCDATA) >
<!ELEMENT max (#PCDATA) >
<!ELEMENT pad EMPTY >
<!ATTLIST pad
count CDATA #IMPLIED
>
<!ELEMENT comment (#PCDATA) >