The <thing> is everything in the data file. Every power, race, class, feat, item, etc is a <thing> with a different set of code.
<thing id="arUniqueCode" name="Name for the Item" description="This is the fluffy text the user sees when selecting the thing. It has no mechanical value to the character, and is there usually just for the RP value." compset="Armor">
<!-- This is where all of the actual information about the thing goes for HL to make it work. Stuff like the armor value, or cost, or minimum level.-->
</thing>
As you can see, it starts with a code <thing ...>, then at the end, it again ends with an ending code </thing>. This is how HL knows where each <thing> starts and ends. You can have multiple <thing>s in each file. They cannot nest (no putting a <thing> inside another <thing>). There is a process for chaining them together called "bootstrapping" where something like a race may add a power to the character (all of them), or a class may replace a standard ability with a different one (barbarian melee attack), and so on.
Some <thing>s require additional tags. For example, Races require a uniqueness="unique" tag in the <thing> open tag.
Within the actual <thing> there are lots of tags and other code that can be used to specifiy what the <thing> does. Some <thing>s don't have any HL crunchy bits, but are there to add, for example, extremely conditional abilities - such as a class ablility that might grant "+5 to fly speed in a thunderstorm" can't really be put on the character sheet where it does math, but it may be necessary to put it on the character sheet somewhere, or just within the program as a reminder to do the math when necessary.
Each specific <thing> has different information that is required when it is opened, so there is no basic <thing> file. For a template, please visit the page about the actual <thing> you want to make. It will include both a basic blank template and, where possible, a step-by-step delete and edit version.