Abstractions reveal causes and effects, expose patterns and frameworks, and separate what’s important from what’s not. They’re at the root of understanding. To invent programs, you need to be able to capture the same kinds of abstractions and express them in the program design. Database abstraction is required to get the software and hardware interoperable. E.g. Database server describes a field as a customer, but software defines the same field as a client. For the software and hardware to understand each other, a data abstraction must be programmed to map the two fields.

A descended language that has been made mandatory for Department of Defense software projects by the Pentagon. Hackers are nearly unanimous in observing that, technically, it is precisely what one might expect given that kind of endorsement by fiat. Hackers find Ada's exception-handling and inter-process communication features particularly hilarious. The kindest thing that has been said about it is that there is probably a good small language screaming to get out from inside its vast, elephantine bulk.

An open source HTTP server for Unix, Windows NT, and other platforms. Apache is purely cryptic (no GUI). Apache was developed in early 1995, based on code and ideas found in the most popular HTTP server of the time. It has since evolved to rival (and probably surpass) almost any other Unix based HTTP server in terms of functionality, and speed. Since April 1996 Apache has been the most popular HTTP server on the Internet, in May 1999 it was running on 57% of all web servers.

API (Application Programming Interface)
The interface (calling conventions) by which an application program accesses operating system and other services. An API is defined at source code level and provides a level of abstraction between the application and the kernel (or other privileged utilities) to ensure the portability of the code. An API can also provide an interface between a high level language and lower level utilities and services which were written without consideration for the calling conventions supported by compiled languages. In this case, the API's main task may be the translation of parameter lists from one format to another and the interpretation of call-by-value and call-by-reference arguments in one or both directions. An API is the programming interface needed to program for databases, Operating Systems, browsers, etc. Windows has one main API, Win32, Mac Tool Kit has several for Mac OS, and Unix has more than any OS. APIs make it possible to program for closed source programs and make it much easier to program for open source programs.

The ASCII Table is what determines which combination of binary 1s and 0s equal which character. It was originally an acronym (American Standard Code for Information Interchange) but now merely conventional] the predominant character set encoding of present-day computers. The standard version uses 7 bits for each character, whereas most earlier codes (including early drafts of ASCII prior to June 1961) used fewer. This change allowed the inclusion of lowercase letters -- a major win -- but it did not provide for accented letters or any other letterforms not used in English (such as the German sharp-S or the ae-ligature which is a letter in, for example, Norwegian).

ASP (Active Server Pages)
Active Server Pages (ASP) is a server side scripting technology that enables scripts (embedded in web pages) to be executed by an Internet server. Unlike Cold Fusion, JSP, and PHP, ASP is not a programming language, but an architecture. Another language such as Perl, Jscript, or VBScript must be used on top of ASP. Most programmers will use VBScript on top of ASP since they are both Microsoft technologies. ASP comes pre-installed with windows.

Can be thought of as an adjective in programming. A named value or relationship that exists for some or all instances of some entity and is directly associated with that instance. Examples include the href attribute of an HTML anchor element, the columns of a database table considered as attributes of each row, and the members (properties and methods of an object in OOP. This contrasts with the contents of some kind of container (e.g. an array), which are typically not named. The contents of an associative array, though they might be considered to be named by their key values, are not normally thought of as attributes.

The operating system designed to run on the BeBox microcomputer. BeOS is good at both multitasking and real-time operation. It has a bash command shell, with ports of many GNU programs by Be, Inc. It has a GUI front end (not X). A C++ compiler is supplied with the machine, and there are rumors of other languages being ported in the future.

A family of {Unix} versions for the DEC VAX and PDP-11 developed by Bill Joy and others at Berkeley starting around 1980, incorporating paged virtual memory, TCP/IP networking enhancements, and many other features. The BSD versions (4.1, 4.2, and 4.3) and the commercial versions derived from them (SunOS, ULTRIX, and Mt. Xinu) held the technical lead in the Unix world until AT&T's successful standardization efforts after about 1986; descendants are still widely popular. Note that BSD versions going back to 2.9 are often referred to by their version numbers, without the BSD prefix.

Building refers to compiling several files at once. You must build or compile a file before you can execute or run a program.

A programming language designed by Dennis Ritchie at AT&T Bell Labs ca. 1972 for systems programming on the PDP-11 and immediately used to reimplement Unix. It was called "C" because many features derived from an earlier compiler named "B". In fact, C was briefly named "NB". It has a macro preprocessor, cpp. Partly due to its distribution with Unix, C became immensely popular outside Bell Labs after about 1980 and is now the dominant language in systems and microcomputer applications programming. It has grown popular due to its simplicity, efficiency, and flexibility. C programs are often easily adapted to new environments. C is often described, with a mixture of fondness and disdain, as "a language that combines all the elegance and power of assembly language with all the readability and maintainability of assembly language".

Designed by Bjarne Stroustrup of AT&T Bell Labs as a successor to C. Now one of the languages of choice, although many hackers still grumble that it is the successor to either Algol 68 or Ada (depending on generation), and a prime example of second-system effect. Almost anything that can be done in any language can be done in C++, but it requires a language lawyer to know what is and what is not legal. Much of the cruft results from C++'s attempt to be backward compatible with C. Stroustrup himself has said in his retrospective book "Within C++, there is a much smaller and cleaner language struggling to get out." Yes, and it’s called Java.

The prototype for an object in an object-oriented language; analogous to a derived type in a procedural language. A class may also be considered to be a set of objects which share a common structure and behavior. The structure of a class is determined by the class variables which represent the state of an object of that class and the behavior is given by a set of methods associated with the class. Classes are related in a class hierarchy. One class may be a specialization (a "subclass") of another (one of its "superclasses") or it may be composed of other classes or it may use other classes in a client-server relationship. A class may be an abstract class or a concrete class. A class is like a stamp or a blueprint that defines how objects should be created. They are not, however, predefined. You must define a class.

Cold Fusion
A server side language developed by Allaire and used to make websites dynamic by tying into a database or using cookies. Many people prefer Cold Fusion to other languages because it is easier to use (because the syntax is similar to HTML) however, it is not open source.


A computer program that translates source code written in a particular programming language into computer-readable machine code (binary 0s and 1s) that can be executed. If you try to run a program before it is compiled, you will get an error because computers can only understand binary. Compiled languages include C, C++, Java, and Cobal.

CSS (Cascading Style Sheets)
An extension to HTML to allow styles, e.g. color, font, size to be specified for certain elements of a hypertext document. Style information can be included in-line in the HTML file or in a separate CSS file (which can then be easily shared by multiple HTML files). Multiple levels of CSS can be used to allow selective overriding of styles.

One or more large structured sets of persistent data, usually associated with software to update and query the data. A simple database might be a single file containing many records, each of which contains the same set of fields where each field is a certain fixed width. A database is one component of a database management system. Many companies just use Access, ACT, Goldmine, or Lotus notes which are very lightweight and very user friendly databases. Databases are used for contact/customer management, inventory management, document management human resources, or any numeric or text data management. Some of the most common databases include Oracle, Sybase, MySQL, IBM DB2, Postgress, and Informix.

A suite of programs which typically manage large structured sets of persistent data, offering ad hoc query facilities to many users. They are widely used in business applications. A database management system can be an extremely complex set of software programs that controls the organization, storage and retrieval of data (fields, records and files) in a database. It also controls the security and integrity of the database. The DBMS accepts requests for data from the application program and instructs the operating system to transfer the appropriate data. When a DBMS is used, information systems can be changed much more easily as the organization's information requirements change. New categories of data can be added to the database without disruption to the existing system.

A debugger is a program that helps in locating and correcting programming errors and flawed syntax


DHTML is an abbreviation for the term "Dynamic HTML". It is not actually a markup language, but a combination of HTML 4.0, Style Sheets and JavaScript.

A listing of the files contained in a storage device, such as a magnetic disk. A description of the various characteristics of a file, such as the layout of the fields in it. Includes all the files of a certain program or application. You can open up each individual file to view the source code.

DOM (Document Object Model)
As a W3C specification, the objective for the XML DOM has been to provide a standard programming interface to a wide variety of applications. The XML DOM is designed to be used with any programming language and any operating system. With the XML DOM, a programmer can create an XML document, navigate its structure, and add, modify, or delete its elements. Creating dynamic HTML documents would not be possible without the DOM.

A program that translates some device-independent or other common format to something a real device can actually understand. The main loop of an event-processing program; the code that gets commands and dispatches them for execution or code designed to handle a particular peripheral device such as a magnetic disk or tape unit.

A popular screen editor for Unix and most other operating systems. Emacs is distributed by the Free Software Foundation and was Richard Stallman's first step in the GNU project. Emacs is extensible - it is easy to add new functions; customizable - you can rebind keys, and modify the behavior of existing functions; self-documenting - there is extensive on-line, context-sensitive help; and has a real-time "what you see is what you get" display. Emacs is writen in C and the higher levels are programmed in Emacs Lisp. Emacs has an entire Lisp system inside it. It was originally written in TECO under ITS at the MIT AI lab. AI Memo 554 described it as "an advanced, self-documenting, customizable, extensible real-time display editor".

A binary file containing a program in machine language which is ready to be executed (run). The term might also be, but generally isn't, applied to scripts which are interpreted by a command line interpreter. Executables are distinguished in Unix by having the execute permission bits set, at least for the owner

Can be thought of as a verb in programming. A function may return different values each time it is called with the same argument values and may have side effects.

GNOME (GNU Network Object Model Environment)

A project to build a complete, user-friendly desktop based entirely on free software. GNOME is part of the GNU project and part of the OpenSource movement. The desktop will consist of small utilities and larger applications which share a consistent look and feel. GNOME uses GTK+ as the GUI toolkit for applications. GNOME is intended to run on any modern and functional Unix-like system. The current version runs on Linux, FreeBSD, IRIX and Solaris.

"GNU's Not Unix!". The Free Software Foundation's project to provide a freely distributable replacement for Unix. The GNU Manifesto was published in the March 1985 issue of Dr. Dobb's Journal but the GNU project started a year and a half earlier when Richard Stallman was trying to get funding to work on his freely distributable editor, Emacs.

GUI (Graphical User Interface)
An interface for issuing commands to a computer utilizing a pointing device, such as a mouse, that manipulates and activates graphical images on a monitor.


HTML stands for Hyper Text Markup Language. An HTML file is a text file containing small markup tags which tell the Web browser how to display the page. An HTML file must have a .htm or .html file extension. An HTML file can be created using a simple text editor

HTML 4.0
HTML 4.0 introduced Cascading Style Sheets (CSS), and the Document Object Model (DOM). Creating dynamic HTML documents would not be possible without these two additions.

IDE (Integrated Developer Environment)
A system for supporting the process of writing software. Such a system may include a syntax-directed editor, graphical tools for program entry, and integrated support for compiling and running the program and relating compilation errors back to the source.

IIS (Internet Information Server)
Microsoft's web server and FTP server for Windows NT. IIS is easier to learn for some people because of its GUI. Features include web publishing, customizable tools, wizards, customizable management tools, flexible administration options, and analysis tools. IIS is the second most popular server due to the fact that it is built into MS NT and 2000.

Interpreters are built into client residing programs such as windows, UNIX, Linux, etc, as well as into servers. When writing the code, the programmer lets the interpreter know which language is being used by using a declaration (e.g. <?PHP lets the interpreter know that the following syntax will be written in PHP).

Any network which provides similar services within an organization to those provided by the Internet outside it but which is not necessarily connected to the Internet. The most common example is the use by a company of one or more World-Wide Web servers on an internal TCP/IP network for distribution of information within the company. Since about 1995, intranets have become a major growth area in corporate computing due to the availability of cheap or free commercial browser and web server software which allows them to provide a simple, uniform hypertext interface to many kinds of information and application programs.

A simple, object-oriented, distributed, interpreted, robust, secure, architecture-neutral, portable, multithreaded, dynamic, buzzword-compliant, general-purpose programming language developed by Sun Microsystems in 1995(?). Java supports programming for the Internet in the form of platform-independent Java "applets". Java is similar to C++ without operator overloading (though it does have method overloading), without multiple inheritance, and extensive automatic coercions. It has automatic garbage collection. Java programs can run stand-alone on small computers. The interpreter and class support take about 40 kilobytes; adding the standard libraries and thread support (essentially a self-contained microkernel) adds an additional 175Kb. Java extends C++'s object-oriented facilities with those of Objective C for dynamic method resolution.

Netscape's simple, cross-platform, World-Wide Web scripting language, only very vaguely related to Java. JavaScript is intimately tied to the World-Wide Web, and currently runs in only three environments - as a server-side scripting language, as an embedded language in server-parsed HTML, and as an embedded language run in browsers. JavaScript may end up being more popular and entrenched than Java, due to the current prevalence of its primary platform and its ease of learning. It has a simplified C-like syntax. Its functionality is currently limited, being aimed primarily at enhanced forms, simple web database front-ends and navigation enhancements.

Jscript is an object-oriented language created by Microsoft to compete with Java.

JSP (Java Server Pages)
Developed so that HTML and Java could work together more smoothly. JSP allows you to write in Java and HTML all in the same file. JSP is Sun’s technology and is somewhat open source.

JVM (Java Virtual Machine)
A specification for software which interprets Java programs that have been compiled into byte-codes, and usually stored in a ".class" file. The JVM instruction set is stack-oriented, with variable instruction length. Unlike some other instruction sets, the JVM's supports object-oriented programming directly by including instructions for object method invocation (similar to subroutine call in other instruction sets).

The essential part of Unix or other operating systems, responsible for resource allocation, low-level hardware interfaces, security etc. See also microkernel.

A collection of subroutines and functions stored in one or more files, usually in compiled form, for linking with other programs. Libraries are one of the earliest forms of organized code reuse. They are often supplied by the operating system or software development environment developer to be used in many different programs. The routines in a library may be general purpose or designed for some specific function such as three dimensional animated graphics. Libraries are linked with the user's program to form a complete executable. The linking may be static linking or, in some systems, dynamic linking. A system is more efficient by using libraries because files can be closed and don’t take up memory.

An implementation of the Unix kernel originally written from scratch with no proprietary code. The kernel runs on Intel and Alpha hardware in the general release, with SPARC, PowerPC, MIPS, ARM, Amiga, Atari, and SGI in active development. The SPARC, PowerPC, ARM, PowerMAC - OSF, and 68k ports all support shells, X and networking. The Intel and SPARC versions have reliable symmetric multiprocessing. Work on the kernel is coordinated by Linus Torvalds, who holds the copyright on a large part of it. The rest of the copyright is held by a large number of other contributors (or their employers). Regardless of the copyright ownerships, the kernel as a whole is available under the GNU General Public License. The GNU project supports Linux as its kernel until the research Hurd kernel is completed.

A programming language designed to process data consisting of lists. It is widely used in artificial intelligence research.

The latest version of the Macintosh operating system. It is based on the NeXT operating system and is features an “Aqua” GUI. It is also much more stable than previous Mac operating systems.

A portion of a program that carries out a specific function and may be used alone or combined with other modules of the same program. Modules are added to servers to allow it to understand directives that link extensions back to the server.

A set of names in which all names are unique. In other words, their names won’t conflict with identically named data elements outside the structure. Partitioning the program namespace is essential for keeping implementation details out of the interface. Imagine, for example, the enormous task of assigning a different name to every piece of data in a large program and of making sure new names don’t conflict with old ones.

Objective C
An object-oriented superset of ANSI C by Brad Cox, Productivity Products. Its additions to C are few and are mostly based on Smalltalk. Objective C is implemented as a preprocessor for C. Its syntax is a superset of standard C syntax, and its compiler accepts both C and Objective C source code. It is used as the system programming language on the NeXT. As implemented for NEXTSTEP/OpenStep/MacOS X, the Objective C language is fully compatible with ANSI C.

Object-Oriented Programming

The use of a class of programming languages and techniques based on the concept of an "object" which is a data structure (abstract data type) encapsulated with a set of routines, called "methods", which operate on the data. Operations on the data can only be performed via these methods, which are common to all objects that are instances of a particular "class". Thus the interface to objects is well defined, and allows the code implementing the methods to be changed so long as the interface remains the same. Each class is a separate module and has a position in a "class hierarchy". Methods or code in one class can be passed down the hierarchy to a subclass or inherited from a superclass. This is called "inheritance". A procedure call is described as invoking a method on an object (which effectively becomes the procedure's first argument), and may optionally include other arguments. The method name is looked up in the object's class to find out how to perform that operation on the given object. If the method is not defined for the object's class, it is looked for in its superclass and so on up the class hierarchy until it is found or there is no higher superclass.

An object is more than a collection of random functions. It’s a bundle of related behaviors that are supported by shared data. The idea behind objects is quite simple-you just break up your program into the various parts, each of which you can easily conceptualize as performing a discrete task, and those are your objects. Objects are more powerful than simple functions or sets of variables because an object can hold both functions and variables wrapped up together in a way that makes it easy to use. An object can be thought of as both a noun and an adjective. An object is an instance of a class.

ODBC (Open Database Connectivity)
A standard for accessing different database systems. There are interfaces for Visual Basic, Visual C++, SQL and the ODBC driver pack contains drivers for the Access, Paradox, dBase, Text, Excel and Btrieve databases. An application can submit statements to ODBC using the ODBC flavor of SQL. ODBC then translates these to whatever flavor the database understands. ODBC allows databases running on different platforms to communicate with each other. ODBC is a quick solution that usually results in the loss of some data. To do this without the loss of data would require writing an application for the native drivers for each database. This would be costly and time consuming.

OODB (Object-Oriented Database)

A system offering DBMS facilities in an object-oriented programming environment. Data is stored as objects and can be interpreted only using the methods specified by its class. The relationship between similar objects is preserved (inheritance) as are references between objects. Queries can be faster because joins are often not needed (as in a relational database). This is because an object can be retrieved directly without a search, by following its object id.

OS (Operating System)
The low-level software which handles the interface to peripheral hardware, schedules tasks, allocates storage, and presents a default interface to the user when no application program is running. The OS may be split into a kernel which is always present and various system programs which use facilities provided by the kernel to perform higher-level house-keeping tasks, often acting as servers in a client-server relationship.

IBM and Microsoft's successor to the MS-DOS operating system for Intel 80286 and Intel 80386-based microprocessors. It is proof that they couldn't get it right the second time either. Often called "Half-an-OS". The design was so baroque, and the implementation of 1.x so bad, that 3 years after introduction you could still count the major application programs shipping for it on the fingers of two hands, in unary. Later versions improved somewhat, and informed hackers now rate them superior to Microsoft Windows, which isn't saying much. On an Intel 80386 or better, OS/2 can multitask between existing MS-DOS applications. OS/2 is strong on connectivity and the provision of robust virtual machines. It can support Microsoft Windows programs in addition to its own native applications.

An algorithm or program to determine the syntactic structure of a sentence or string of symbols in some language. A parser normally takes as input a sequence of tokens output by a lexical analyser. It may produce some kind of abstract syntax tree as output. One of the best known parser generators is yacc. Most new languages need to be parsed before they are compiled.

A programming language designed by Niklaus Wirth around 1970. Pascal was designed for simplicity and for teaching programming, in reaction to the complexity of ALGOL 68. It emphasises structured programming constructs, data structures and strong typing. Innovations included enumeration types, subranges, sets, variant records and the case statement. Pascal has been extremely influential in programming language design and has a great number of variants and descendants.

A high-level programming language, started by Larry Wall in 1987 and developed as an open source project. It has an eclectic heritage, deriving from the ubiquitous C programming language and to a lesser extent from sed, awk, various Unix shell languages, Lisp, and at least a dozen other tools and languages. Originally developed for Unix, it is now available for many platforms. Perl's elaborate support for regular expression matching and substitution has made it the language of choice for tasks involving string manipulation, whether for text or binary data. It is particularly popular for writing CGI scripts. The language's highly flexible syntax and concise regular expression operators, make densely written Perl code indecipherable to the uninitiated. The syntax is, however, really quite simple and powerful and, once the basics have been mastered, a joy to write. Perl's only primitive data type is the "scalar", which can hold a number, a string, the undefined value, or a typed

PHP (Personal Home Page)
PHP is an HTML-embedded scripting language. This means PHP code can be inserted into HTML code of a web page. When the page is accessed, the PHP code is read or "parsed" by the server the page resides on. The output from the PHP functions on the page are typically returned as HTML code, which is read by the browser. Because the PHP code is transformed into HTML before the page is loaded, users can't view the PHP code on a page. This helps make PHP pages more secure for web developers. A lot of the syntax of PHP is borrowed from other languages such as C, Java and Perl. However, PHP also has a number of unique features and specific functions as well. The goal of the language is to allow web developers to write dynamically generated pages quickly and easily.

A file containing data used to alter, enhance, or extend the operation of a parent application program. Plug-ins, both commercially and independently authored, can usually be downloaded for free and are stored locally.

Procedural Programming

In procedural programming functions encapsulate behaviors that can be used repeatedly without being re-implemented. Data elements local to a function, like the fields within a structure, are protected within their own namespace. Functions can reference (call) other functions, so quite complex behaviors can be built from smaller pieces. Functions are reusable. Once defined, they can be called any number of times without again considering the implementation. The most generally useful functions can be collected in libraries and reused in many different applications. All the user needs is the function interface, not the source code. However, unlike data elements, functions aren’t partitioned into separate namespaces. Each function must have a unique name. Although the function may be reusable, its name is not.
*** In programming, object oriented vs. procedural is not always black and white. Many languages have some characteristics of both. Java, for example, is totally object oriented, while Perl can be object oriented or procedural. In procedural programming, you would define a structure and some functions instead of a class. In object, you would define a new class.

A function which returns no value but has only side-effects. The C language, for example, has no procedures, only functions.

A simple, high-level interpreted language by Guido van Rossum. Python combines ideas from ABC, C, Modula-3 and Icon. It bridges the gap between C and shell programming, making it suitable for rapid prototyping or as an extension language for C applications. It is object-oriented and supports packages, modules, classes, user-defined exceptions, a good C interface, dynamic loading of C modules and has no arbitrary restrictions. Python is available, among others, for Unix, Windows, DOS, OS/2, Macintosh, and Amoeba.

RDBMS (Relational Database Management System)
A database in which relations between information items are explicitly specified as accessible attributes. In a relational database the data are organized as a number of differently sized tables.

A program which provides some service to other (client) programs. The connection between client and server is normally by means of message passing, often over a network, and uses some protocol to encode the client's requests and the server's responses. The server may run continuously (as a daemon), waiting for requests to arrive or it may be invoked by some higher-level daemon which controls a number of specific servers. On Unix, a long list can be found in /etc/services or in the NIS database "services".

A program that works with the operating system as a command processor, used to enter commands and initiate their execution. Shell programming is simply programming that is done within a shell.

SOAP is an XML based protocol to let software components and applications communicate using standard Internet HTTP. An important need for Internet application development is to allow communication between applications. SOAP was designed to do this. Today's distributed applications communicate using remote procedure calls (RPC) between distributed objects like DCOM and CORBA. HTTP was not designed for this, so RPC calls are not easily adaptable to the Internet. Using RPC over the Internet also represents a security problem, and firewalls and proxy servers will normally block this kind of traffic. A much better way to communicate between applications would be to use HTTP, because HTTP is supported by all Internet browsers and servers. SOAP was created to accomplish this and to replace RPC.

Source Code
Code written by a programmer in a high-level language and readable by people but not computers. Source code must be converted to object code or machine language before a computer can read or execute the program.

SQL (Structured Query Language)
An industry-standard language for creating, updating and, querying relational database management systems. SQL was developed by IBM in the 1970s for use in System R. It is the de facto standard as well as being an ISO and ANSI standard. It is often embedded in general purpose programming languages. The first SQL standard, in 1986, provided basic language constructs for defining and manipulating tables of data; a revision in 1989 added language extensions for referential integrity and generalised integrity constraints. Another revision in 1992 provided facilities for schema manipulation and data administration, as well as substantial enhancements for data definition and data manipulation. SQL has currently been enhanced into a computationally complete language for the definition and management of persistent, complex objects.

Microsoft's scripting language, which is an extension of their Visual Basic language. VBScript can be used with Microsoft Office applications and others. It can also be embedded in web pages but can only be understood by Internet Explorer. Visual Basic is a BASIC variant with object-oriented features. Objects include applications, windows and selections.

WAP (Wireless Applications Protocol)
The wireless industry came up with the idea of WAP. The point of this standard was to show Internet contents on wireless clients, like mobile phones.

Web Server
A server process running at a web site, which sends out web pages in response to HTTP requests from remote browsers. If one site runs more than one server they must use different port numbers. Alternatively, several hostnames may be mapped to the same computer in which case they are known as "virtual servers". A web server must have an interpreter for whatever languages it wants to be able to read. So if the web page you build has a form done in PHP, the web server must have a PHP interpreter. A web server is contains various modules to allow it to do this.

XML (Extensible Markup Language)
A metalanguage written in SGML that allows one to design a markup language, used to allow for the easy interchange of documents on the World Wide Web.

DTD stands for Document Type Definition. It can be included either internally or externally to allow XML files to carry a description of its own format with it. With a DTD, independent groups of people can agree to use a common DTD for interchanging data. Your application can use a standard DTD to verify that the data you receive from the outside world is valid. You can also use a DTD to verify your own data. A lot of forums are emerging to define standard DTDs for almost everything in the areas of data exchange.

XML Schema
An XML Schema define elements that can appear in a document define attributes that can appear in a document define which elements are child elements defines the sequence in which the child elements can appear defines the number of child elements defines whether an element is empty or can include text define default values for attributes The purpose of a Schema is to define the legal building blocks of an XML document, just like a DTD.

XSL - The Style Sheet of XML
Because XML does not use predefined tags (we can use any tags we want), the meanings of these tags are not understood: <table> could mean an HTML table or maybe a piece of furniture. Because of the nature of XML, the browser does not know how to display an XML document. In order to display XML documents, it is necessary to have a mechanism to describe how the document should be displayed. One of these mechanisms is CSS, but XSL (the eXtensible Stylesheet Language) is the preferred style sheet language of XML, and XSL is far more sophisticated than the CSS used by HTML.XSL consists of three parts:a method for transforming XML documents a method for defining XML parts and patterns a method for formatting XML documents If you don't understand the meaning of this, think of XSL as a language that can transform XML into HTML, a language that can filter and sort XML data, a language that can address parts of an XML document, a language that can format XML data based on the data value, like displaying negative numbers in red, and a language that can output XML data to different devices, like screen, paper or voice.