Your support for our advertisers helps cover the cost of hosting, research, and maintenance of this FAQ

The XML FAQ — Frequently-Asked Questions about the Extensible Markup Language

Section 3: Authors

Q 3.11: Does XML let me make up my own tags?

Yes but they're not called tags. They're element types.

XML lets you make up names for your own element types. If you think tags and elements are the same thing you are already in considerable trouble: read the rest of this question carefully.

The same applies if you are thinking in terms of ‘fields’ (see How do I get XML into or out of my database?). Wrong paradigm, wrong language.

Bob DuCharme writes:

Don't confuse the term ‘tag’ with the term ‘element’. They are not interchangeable. An element usually contains two different kinds of tag: a start-tag and an end-tag, with text or more markup between them.

XML lets you decide which elements you want in your document and then indicate your element boundaries using the appropriate start- and end-tags for those elements. Each <!ELEMENT... declaration defines a type of element that may be used in a document conforming to that DTD. We call this type of element an ‘element type’. Just as the HTML DTD includes the H1 and P element types, your document can have color or price element types, or anything else you want.

Normal (non-empty) elements are made up of a start-tag, the element's content, and an end-tag. <color>red</color> is a complete instance of the color element. <color> is only the start-tag of the element, showing where it begins; it is not the element itself.

Empty elements are a special case that may be represented either as a pair of start- and end-tags with nothing between them (eg <price retail="123"></price>) or as a single empty element start-tag that has a closing slash to tell the parser ‘don't go looking for an end-tag to match this’ (eg <price retail="123"/>).