This is the RFML DTD. Note that the version is 4.0. The RFML DTD resides in the jt400.jar file (com/ibm/as400/data/rfml.dtd).
<!-- Record Format Markup Language (RFML) Document Type Definition. RFML is an XML language. Typical usage: <?xml version="1.0"?> <!DOCTYPE rfml SYSTEM "rfml.dtd"> <rfml version="4.0"> ... </rfml> (C) Copyright IBM Corporation, 2001,2002 All rights reserved. Licensed Materials Property of IBM US Government Users Restricted Rights Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. --> <!-- Convenience entities --> <!ENTITY % string "CDATA"> <!-- a string of length 0 or greater --> <!ENTITY % nonNegativeInteger "CDATA"> <!-- a non-negative integer --> <!ENTITY % binary2 "CDATA"> <!-- an integer in range 0-65535 --> <!ENTITY % boolean "(true|false)"> <!ENTITY % datatype "(char | int | packed | zoned | float | byte | struct)"> <!ENTITY % biditype "(ST4 | ST5 | ST6 | ST7 | ST8 | ST9 | ST10 | ST11 | DEFAULT)"> <!-- The document root element --> <!ELEMENT rfml (struct | recordformat)+> <!ATTLIST rfml version %string; #FIXED "4.0" ccsid %binary2; #IMPLIED > <!-- Note: The ccsid is the default value that will be used for --> <!-- any contained <data type="char"> elements that do not specify a ccsid. --> <!-- Note: RFML does not support nested struct declarations. --> <!-- All struct elements are direct children of the root node. --> <!ELEMENT struct (data)+> <!ATTLIST struct name ID #REQUIRED > <!-- <!ELEMENT recordformat (data | struct)*> --> <!ELEMENT recordformat (data)*> <!ATTLIST recordformat name ID #REQUIRED description %string; #IMPLIED > <!-- Note: On the server, the Record "text description" field is limited to 50 bytes. --> <!ELEMENT data EMPTY> <!ATTLIST data name %string; #REQUIRED count %nonNegativeInteger; #IMPLIED type %datatype; #REQUIRED length %nonNegativeInteger; #IMPLIED precision %nonNegativeInteger; #IMPLIED ccsid %binary2; #IMPLIED init CDATA #IMPLIED struct IDREF #IMPLIED bidistringtype %biditype; #IMPLIED > <!-- Note: The 'name' attribute must be unique within a given recordformat. --> <!-- Note: On the server, the length of Record field names is limited to 10 bytes. --> <!-- Note: The 'length' attribute is required, except when type="struct". --> <!-- Note: If type="struct", then the 'struct' attribute is required. --> <!-- Note: The 'ccsid' and 'bidistringtype' attributes are valid only when type="char". --> <!-- Note: The 'precision' attribute is valid only for types "int", "packed", and "zoned". --> <!-- The standard predefined character entities --> <!ENTITY quot """> <!-- quotation mark --> <!ENTITY amp "&#38;"> <!-- ampersand --> <!ENTITY apos "'"> <!-- apostrophe --> <!ENTITY lt "&#60;"> <!-- less than --> <!ENTITY gt ">"> <!-- greater than --> <!ENTITY nbsp " "> <!-- non-breaking space --> <!ENTITY shy "­"> <!-- soft hyphen (discretionary hyphen) --> <!ENTITY mdash "&#x2014;"> <!ENTITY ldquo "&#x201C;"> <!ENTITY rdquo "&#x201D;">