Sims2packDtd
<!ATTLIST Sims2Package type (eObject | Lot | Object | Sim) #REQUIRED>
<!ELEMENT RequiredPacks (ContentPack+)>
<!ELEMENT ContentPack (#PCDATA)> <![IGNORE[This is a package name including the trailing ".package".]]>
<!ELEMENT GameVersion (#PCDATA)> <![IGNORE[Version strings seen so far: "2141707388.153.1", "2141707388.153.1,2141707388.182.1"]]>
<!ELEMENT PackagedFile (Name, ((Crc, Length, Type) | (Length, Type, Crc)), (Guid, Version)?, Offset, Description, LocaleText*)> <![IGNORE[The complexity of this is only due to the different orders of the elements as they appear in Sims2Pack files. Sigh. This may not (yet) be a complete specification of all the orders produced by various programs and/or versions.]]>
<!ELEMENT Name (#PCDATA)> <![IGNORE[This is the name of the package including ".package".]]>
<!ELEMENT Crc (#PCDATA)> <![IGNORE[Sometimes this is an actual checksum of 32 hex digits; other times it is a copy of the Name element (presumably, this is a bug).]]>
<!ELEMENT Length (#PCDATA)> <![IGNORE[This is a decimal digit string.]]>
<!ELEMENT Type (#PCDATA)> <![IGNORE[Type is restricted to the following (and therefore, *should* have been an ATTRIBUTE of PackagedFile, rather than an ELEMENT): DesignModeResource | Family | FloorPattern | Lot | Object | part | Person | sim | SimSkin | TerrainPaint | WallPattern]]>
<!ELEMENT Guid (#PCDATA)> <![IGNORE[This appears to be the same as the Crc (32 hex digits).]]>
<!ELEMENT Version (#PCDATA)> <![IGNORE[This is a decimal digit string.]]>
<!ELEMENT Offset (#PCDATA)> <![IGNORE[This is a decimal digit string representing the offset of the package relative to the end of the XML data.]]>
<!ELEMENT Description (#PCDATA)> <![IGNORE[This is an English description of the package.]]>
<!ELEMENT LocaleText (#PCDATA)> <![IGNORE[This is a description of the package in the language specified by the language attribute.]]>
<!ATTLIST LocaleText language CDATA #REQUIRED> <![IGNORE[language should actually be an enumeration, but because there are values with spaces in them, there is no valid way to specify that in the DTD. The acceptable values are: "Brazilian Portuguese" | Czech | Danish | Dutch | English | Finnish | French | German | Hungarian | Italian | Japanese | Korean | Norwegian | Polish | Portuguese | "Simplified Chinese" | Spanish | Swedish | Thai | "Traditional Chinese" | "UK English"]]>