title: XHTML Modularization
text: # XHTML Modularization
  
  XHTML modularization is a methodology for producing modularized markup languages in a number of different schema languages (currently DTDs, XML Schema and Relax NG) so that the modules can easily be plugged together to create markup languages.
  
  Although it was originally designed to help manage the development of various XHTML Profiles, such as XHTML 1.1, XHTML Basic for mobile devices, and XHTML Print for sending to printers, the methodology is independent of XHTML, and has been used for the definition of other markup languages as well, such as SVG and MathML.
  
  ## Method
  
  XHTML Modularization consists of three essential parts
  
  * a technique or methodology (as explained, actually independent of XHTML, and applicable to any XML-based markup language) for defining abstract modules of a markup language, and implementing those modules in various schema languages, such as DTDs, XML Schema, and Relax NG.
  * a collection of abstract modules
  * a number of implementations of those modules in various schema languages.
  
  To define a language using these modules, you only have to define a driver in one or more of the implementation schema languages, that causes the necessary modules to be loaded.
  
  ## Application to XHTML
  
  In its application to XHTML, it provides a means for defining modules of XHTML to allow subsetting and extending XHTML in a controlled way.
  
  Core modules are:
  
  * Structure (html, head, body, title...)
  * Text (h1, h2, h3... p, pre...)
  * Hypertext (a)
  * List (ul, li...)
  
  Other modules include applet, image, forms and basic forms.
  
  