XMLを構成する要素は、XML宣言、DTD、XMLデータと大きく3つに分かれています。なお、XML宣言と DTDは必ずしも必要ではなく、必要に応じて作成します。
XMLは、汎用的なデータ記述言語であり、HTMLのようにデータと表示方法が混在した言語ではないため、コンピュータシステムとのデータの連携が容易にできる点にあります。XMLの作成上、欠かすことのできない規則があります。コンピュータ間で正しくデータ交換できるための最低条件があるということです。XMLでデータを作成する場合、使用できる文字コードに基準が定められています。Windows系や Macintosh、UNIX系OSで主に使用されている1バイト系文字コードは、ASCIIです。Shift_Jis) コードや EUC、Unicode などがあります。Windows系OSで主に利用されている2バイト系文字コードは、シフトJISで、UNIX系OSでは EUCが利用されています。このように、文字コードは様々な環境で、様々な種類が使われています。XMLでデータを作成する場合、W3Cから勧告されている XMLの規格書では、ISO-10646 (世界の文字コードを統一する Unicodeプロジェクトの成果を国際標準化したもの) を基準とする文字コードとして定義されています。XMLの規格書では、文字コードは16進コードで「000000〜10FFFF」の領域を使用することができると定義しています。この文字コードには、日本語環境のコンピュータで扱う1バイト系文字コードと、2バイト系文字コードの両方が含まれています。ISO-10646 を利用すれば1バイト系の英数字のみならず、2バイト系のひらがなや漢字も表現できるわけです。XML宣言の中で、利用するエンコードを明示的に宣言する必要があります。XMLにおいて「名前」と呼ばれています。XMLデータとは別の命名規則があります。名前に使える文字のことを「名前文字 (Name Character)」と呼び、名前文字には、以下の表のようなものがあります。| 名前文字 | 説明 |
| letter | 基本文字と表意文字がある。 |
| Base Character | 基本文字。アルファベット、ひらがな、カタカナなどの文字。 |
| Ideograph Caracter | 表意文字。漢字などの文字。 |
| Digit | 数字。数字文字。 |
| Combining Character | 統合文字。アクセント記号、ウムラウト記号などの文字。 |
| Extender | ある文字に続く文字。データの「−」、日々の「々」など。 |
| その他 | アンダースコア、コロン、ハイフン、ピリオドなど |
XMLにおける基本的な基盤となるのが「タグ」です。タグとは、< と > で囲まれた文書の意味付け(マークアップ)を指定するために記述します。「 _ 」に限定されています。2文字目には、文字、ハイフン、アンダースコア、数字などを利用できます。最初の1文字目に数字を指定するとエラーになります。XML文書は、以下の3つの要素で構成されています。
XML宣言 (XML Declaration)XMLのバージョンと、XML文書中で使用する文字符号コードを宣言する。DTD (Document Type Definition 文書型定義)XML文書の要素、属性、エンティティ、記法を定義する。XMLデータXMLデータの要素そのものを記述する。
これらの XMLの構成要素は、右の図のように記述されます。XML宣言と、DTD に関しては、必ずしも記述する必要はなく、省略することもできます。特に、DTD の部分は、XMLデータの文法を明確に定義したい場合に記述します。ただし、XML宣言を省略した場合、XMLパーサが正しく解釈できるかはソフトウェアに依存します。つまらないエラーを避けるためにも、XML宣言は記述するよう強くお勧めします。DTD は、XML文書中に配置することができますが、XML文書とは別の外部ファイルに記述することも可能です。DTD は、同じコンピュータ内になければならないものではなく、外部組織の Webサーバ上にあるものを参照することもできます。XML宣言補足説明XML宣言は、XMLパーサ に対して、XML文書であることを伝えます。XML宣言のようにパーサに直接伝えるべき情報を「XML処理命令」と呼び、XML処理命令は、必ず「 <? 」で始まり「 ?> 」で終わります。XML宣言で記述される属性は、version属性、encoding属性、standalone属性があります。version属性は XMLのバージョンを指定しますが、現在のバージョンは 1.0 です。 (追記:2004年3月にバージョン 1.1 が勧告されています。)XMLはデフォルトエンコード方式として UTF-8 を採用しています。UTF-8 は、Unicode の種類で、1バイト文字を1バイトに圧縮したものです。XMLは、Unicode に対応していて、Unicode を用いられることを前提として制定されています。XML文書が単一で完成されるかどうかを示します。これは、クライアントコンピュータで複数の文書を包括する仕組みを与えています。XML文書がそれ一つで完成しているのであれば standalone属性で "yes" を指定し、そうでなければ "no" を指定します。standalone属性を記述しない場合には、自動的に "yes" が選択されます。