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 1: Basics

Q 1.16: What is the difference between XML and C or C++ or Java?

C and Java are for writing programs; XML is for storing information.

C and C++ (and other languages like FORTRAN, or Pascal, or Visual Basic, or Java or hundreds more) are programming languages with which you specify calculations, actions, and decisions to be carried out in order:

mod curconfig[if left(date,6) = "01-Apr", 
    t.put "April Fool!", 
    f.put days('31102011','DDMMYYYY') -
    " more shopping days to Samhain"];

XML is a markup specification language with which you can design ways of describing information (text or data), usually for storage, transmission, or processing by a program. It says nothing about what you should do with the data (although your choice of element names may hint at what they are for):

<part num="DA42" models="LS AR DF HG KJ" update="2001-11-22">
  <name>Camshaft end bearing retention circlip</name>
  <image drawing="RR98-dh37" type="SVG" x="476" y="226"/>
  <maker xml:id="RQ778">Ringtown Fasteners Ltd</maker>
  <notes>An <tool xml:id="GH25"/>angle-nosed insertion tool</tool> is 
    required for the removal and replacement of this part.</notes>

On its own, an XML file (including HTML) doesn't do anything. It's a data format which just sits there until you run a program which does something with it. See also the question about how to run or execute XML files.


The water is muddied by the fact that the most popular transformation processing languages (XSLT2 and XSL:FO) are actually written in XML syntax, because they are declarative, not procedural. In these special cases you can be said to ‘execute’ an XML file, by running a processing application like Saxon, which compiles the directives specified in the files into Java bytecode to process XML documents. In this sense, you could compare them with other programming languages, but you would be comparing the language facilities, not the XML syntax in which they are written.

William Hammond writes:

(in article <>)

SGML is a category of ‘document types’, with a configurable shared syntax, most of which (like classic HTML) cannot be compiled to produce executable programs. XML is a subcategory of SGML with syntactic restrictions. For example, with XML the vocabulary of a document type is always case sensitive, while with SGML it may be either case sensitive or case insensitive. So, for example, classic HTML is an SGML document type, and XHTML+MathML is an XML document type.

While some document types correspond to document markup languages, other document types (like a CTAN catalog entry) are just for structured data[...]

I doubt seriously, however, that a computer language like C is in any reasonable sense equivalent to an SGML document type.