1<!ENTITY % plistObject "(array | data | date | dict | real | integer | string | true | false )" > 2<!ELEMENT plist %plistObject;> 3<!ATTLIST plist version CDATA "1.0" > 4 5<!-- Collections --> 6<!ELEMENT array (%plistObject;)*> 7<!ELEMENT dict (key, %plistObject;)*> 8<!ELEMENT key (#PCDATA)> 9 10<!--- Primitive types --> 11<!ELEMENT string (#PCDATA)> 12<!ELEMENT data (#PCDATA)> <!-- Contents interpreted as Base-64 encoded --> 13<!ELEMENT date (#PCDATA)> <!-- Contents should conform to a subset of ISO 8601 (in particular, YYYY '-' MM '-' DD 'T' HH ':' MM ':' SS 'Z'. Smaller units may be omitted with a loss of precision) --> 14 15<!-- Numerical primitives --> 16<!ELEMENT true EMPTY> <!-- Boolean constant true --> 17<!ELEMENT false EMPTY> <!-- Boolean constant false --> 18<!ELEMENT real (#PCDATA)> <!-- Contents should represent a floating point number matching ("+" | "-")? d+ ("."d*)? ("E" ("+" | "-") d+)? where d is a digit 0-9. --> 19<!ELEMENT integer (#PCDATA)> <!-- Contents should represent a (possibly signed) integer number in base 10 --> 20 21