An XML schema defines the structure and elements of an XML document. It is an XML-based alternative to DTDs that allows defining element types, attributes, data types, defaults and restrictions. Schemas support namespaces, data types, extensibility and are written in XML, allowing the use of XML tools. Complex elements can contain child elements, text or both.