---
title: "SGMLとは？読み方・正式名称（ISO 8879）とXML・HTMLとの違い"
url: "https://www.issoh.co.jp/column/details/8044/"
published: 2025-08-05
updated: 2026-09-27
categories: ["Webサイト"]
publisher: "株式会社一創"
---

# SGMLとは？読み方・正式名称（ISO 8879）とXML・HTMLとの違い

SGMLは、文書の論理構造をタグで書き表すための「タグの決め方」を定めた規格です。読み方は「エスジーエムエル」、正式名称はStandard Generalized Markup Language、規格番号はISO 8879です。HTMLやXMLの直接の源流にあたりますが、その両者がSGMLから何を受け継ぎ何を捨てたかは、いま公開されている仕様書を読むと辞書的な説明とかなり食い違います。ここでは読み方と正式名称、DTDによる構文の書き方、XML・HTMLとの違い、そして規格と実務それぞれの現況を、一次資料と実際に動かした結果で整理します。

## まとめ：SGMLの要点

- 正式名称はStandard Generalized Markup Language、読み方はエスジーエムエル。個々のマークアップ言語を定義するためのメタ言語です。
- ISO 8879:1986として1986年10月15日に第1版が発行されました。国内対応規格のJIS X 4151:1992は1998年と2001年に改正され、2025年6月20日付の確認を経て有効な規格として維持されています。
- 使えるタグと入れ子の規則はDTD（文書型定義）に書き、文書本体はその定義に従って記述します。
- XMLはSGMLの制限された形式で、タグ省略（OMITTAG）やSHORTTAGなど記述を短くする機能をすべて禁止しました。
- HTMLはHTML 4までSGML応用でしたが、現行のHTML標準は「非SGMLの基盤に戻る」と明記しており、いまのHTMLはSGML応用ではありません。
- DocBookはV5.0からXML専用、S1000Dが配布するのもXMLスキーマです。実務でSGMLそのものを新規採用する場面はほぼ残っていません。

## SGMLの定義と読み方｜ISO 8879が定めたメタ言語

### 正式名称・読み方とISO 8879としての標準化

SGMLの正式名称はStandard Generalized Markup Language、日本語では「標準汎用マークアップ言語」と訳します。読みはエスジーエムエル。頭字語をそのまま読む形です。規格化に先立って設計思想を論文にまとめたのはC. F. Goldfarbで、「A generalized approach to document markup」（1981年、Proceedings of the ACM SIGPLAN SIGOA symposium on Text manipulation、68〜73ページ）がその文献です。規格としてはISO 8879にあたり、W3CのXML 1.0（1998年2月10日勧告）は参考文献A.2にこの規格を「ISO 8879:1986(E). Information processing -- Text and Office Systems -- Standard Generalized Markup Language (SGML). First edition -- 1986-10-15.」と記載しています。第1版の発行日は1986年10月15日です。

国内では日本産業規格のJIS X 4151:1992「文書記述言語ＳＧＭＬ」が対応します。制定は1992年7月1日、その後1998年1月20日と2001年1月20日に改正され、日本規格協会の書誌では状態が「有効」、最新確認日は2025年6月20日です。対応国際規格はISO 8879:1986（MOD）およびISO 8879:1986/AMENDMENT 1（MOD）と記載されています。大本のISO 8879から数えて40年になる規格ですが、廃止されたわけではありません。

### マークアップ言語との関係｜SGMLが「タグを決める側」である理由

マークアップ言語は、本文の中にタグを埋め込んで「ここは見出し」「ここは段落」という論理的な意味を機械に伝える記法の総称です。HTMLなら`h1`や`p`というタグ集合があらかじめ決まっています。

SGMLはこの一段上にあります。タグ集合そのものを持たず、どんなタグを使い、どの要素の中に何を入れてよいかを利用者側が定義する枠組みを与えるだけです。この立ち位置がメタ言語と呼ばれる理由で、航空整備マニュアルなら`manual`や`section`、法令文書なら条・項に対応する要素というように、業務ごとに専用の語彙を組めます。

## SGMLの構文｜DTDによる要素・属性・エンティティの宣言

### DTDによる要素・属性の宣言

DTD（Document Type Definition、文書型定義）は、その文書で使える要素と属性、および入れ子の規則を宣言する部分です。要素は`ELEMENT`宣言、属性は`ATTLIST`宣言で書きます。次はマニュアル1冊分の最小構成を、DTDを文書内に直接書く内部サブセットの形で示したものです。

```
<!DOCTYPE manual [
  <!ELEMENT manual (title, section+)>
  <!ELEMENT title (#PCDATA)>
  <!ELEMENT section (head, para+)>
  <!ELEMENT head (#PCDATA)>
  <!ELEMENT para (#PCDATA)>
  <!ATTLIST section
      number CDATA #REQUIRED
      status (draft | final) "draft">
]>
<manual>
  <title>製品マニュアル</title>
  <section number="1" status="final">
    <head>概要</head>
    <para>本機の設置手順を説明します。</para>
  </section>
</manual>
```

`section+`のプラス記号は「1回以上の繰り返し」を意味し、`manual`要素はタイトル1つと1つ以上のセクションを持つと宣言しています。`#PCDATA`は解析対象の文字データ、つまりタグではなく本文が入る位置です。属性側では`number`に`#REQUIRED`を付けて必須にし、`status`はdraftとfinalの2値に限定したうえで既定値をdraftにしています。この宣言に反した文書は妥当性検証で弾かれるため、執筆者が増えても構造がぶれません。

### エンティティによる文字列・外部ファイルの一元管理

エンティティは、繰り返し登場する文字列や外部ファイルに名前を付けて参照する仕組みです。社名や製品名のように後で一括変更したい語、全マニュアル共通の法的注記のようにファイル単位で差し込みたい内容が対象になります。

```
<!ENTITY product "SGML Composer">
<!ENTITY legal SYSTEM "legal_notice.sgml">

<para>&product; の使用条件は次のとおりです。&legal;</para>
```

前者は文字列を展開する内部エンティティ、後者は外部ファイルを読み込む外部エンティティです。製品名が変わってもDTDの1行を直せば全文書に反映されるため、数千ページ規模の保守で効きます。この考え方はXMLにそのまま引き継がれました。

### SGMLアプリケーションを構成する4つの要素

「SGML文書は宣言・DTD・本体の3部構成」と説明されることがありますが、W3CのHTML 4.01仕様はSGMLアプリケーションの構成要素を4つ挙げています。すなわち(1) SGML宣言、(2) DTD、(3) マークアップに与える意味を記述した仕様、(4) データとマークアップを含む文書インスタンスです。

見落とされやすいのが(3)です。DTDは「`head`要素の中にテキストが入る」という構造しか決められず、それを見出しとして大きく組版するのか目次に拾うのかは規定できません。意味と処理は人間が読む仕様書の側で定義する、という役割分担がSGMLの前提になっています。

## XML・HTMLとの違い｜SGMLの何が引き継がれ、何が捨てられたか

### XMLがSGMLから外した機能

XML 1.0勧告はXMLを「an application profile or restricted form of SGML」と定義し、「By construction, XML documents are conforming SGML documents.」と述べています。サブセットと訳されるとおり、XML文書はそのままSGML文書として通用します。

削られたのは、記述を短くするための機能群です。W3CのNote「Comparison of SGML and XML」は、XMLがDATATAG・OMITTAG・RANK・LINK・CONCUR・SUBDOC・FORMALの各機能をNOと宣言すること、SHORTTAGで許される省略記法（`>`で閉じない開始タグと終了タグ、直前の要素を繰り返す`<>`や現在の要素を閉じる`</>`、引用符で囲まない属性値、属性名を省いた指定）が使えないこと、SGML宣言を文書内に書けないことを列挙しています。要するに、SGMLが認めていた「書き手が楽をするための省略」をXMLは一律に禁じました。

この違いは実際に動かすとはっきりします。次のコードは、段落の終了タグを省いた文書をXMLパーサとHTMLパーサに渡したものです（Python 3.14.6、標準ライブラリのみ）。

```
import xml.etree.ElementTree as ET
from html.parser import HTMLParser

src = '<manual><para>A<para>B</manual>'
try:
    ET.fromstring(src)
    print('XML: OK')
except ET.ParseError as e:
    print('XML ParseError:', e)

class Collector(HTMLParser):
    def __init__(self):
        super().__init__()
        self.tags = []
    def handle_starttag(self, tag, attrs):
        self.tags.append(tag)

parser = Collector()
parser.feed('<p>A<p>B')
print('HTML parser tags:', parser.tags)
```

```
XML ParseError: mismatched tag: line 1, column 24
HTML parser tags: ['p', 'p']
```

XMLパーサは終了タグの不一致で解析を止め、HTMLパーサは段落2つとして読み進めました。省略を許すか許さないかという設計判断が、そのまま実装の挙動に残っています。なお、DTDの内部サブセット自体はXMLにも残っており、上のELEMENT宣言や内部エンティティを書いた文書は`xml.etree`でも解析でき、`&product;`は文字列に展開されます。ただし`SYSTEM`で外部ファイルを指す外部エンティティは既定で読み込まれず、`undefined entity &legal;`のエラーになります。さらに`xml.etree`はATTLISTの既定値こそ補いますが妥当性検証はしないため、`#REQUIRED`の属性を欠いた文書も未宣言の要素もそのまま通ります。DTDどおりかを確かめるには検証パーサが別に要ります。

### 現行HTMLとSGMLの関係｜応用と呼べるのはHTML 4まで

結論から言うと、現行のHTMLはSGML応用ではありません。辞書サイトや古い解説記事の記述が更新されないまま残っている論点なので、仕様書の原文で確認しておきます。

WHATWGのHTML標準は解析処理の章で「While the HTML syntax described in this specification bears a close resemblance to SGML and XML, it is a separate language with its own parsing rules.」と述べ、続けて「Some earlier versions of HTML (in particular from HTML2 to HTML4) were based on SGML and used SGML parsing rules.」と過去形で書いています。さらに、真のSGML解析を実装したブラウザはほぼ存在せず厳密に扱ったのは検証ツールだけだったこと、その食い違いが数十年分の生産性を浪費したことを認めたうえで、「This version of HTML thus returns to a non-SGML basis.」と結んでいます。

したがって「HTMLはSGMLの応用である」という説明は、HTML 4.01までの話として区切るのが正確です。冒頭の`<!DOCTYPE html>`もDTDを指すものではなく、ブラウザを標準モードで動かすために残された固定の文字列にすぎません。この前提を取り違えると、DTDに基づく検証ツールを探して行き詰まります。[HTML Tidyとは？HTMLを整形・修正するツールの使い方・インストール・他ツール比較](/column/details/7594/)で扱っているような、現行仕様に沿ったツールを起点にしてください。

### SGML・XML・HTMLの規格／構造定義／タグ省略の対比

| 項目   | SGML          | XML                       | HTML（現行）             |
| ---- | ------------- | ------------------------- | -------------------- |
| 規格   | ISO 8879:1986 | W3C勧告（1.0 第5版 2008-11-26） | WHATWG HTML Standard |
| 位置づけ | メタ言語          | SGMLの制限形式                 | SGML非依存の独立言語         |
| タグ集合 | 利用者が定義        | 利用者が定義                    | 仕様が固定                |
| 構造定義 | DTD           | DTD・XML Schema・RELAX NG   | なし（仕様が規定）            |
| タグ省略 | 可（OMITTAG）    | 不可                        | 可                    |
| 主な用途 | 大規模文書の長期保守    | データ交換・設定・文書               | Webページ               |

XMLの系譜にある言語は今も増えています。たとえば[XAMLとは？読み方（ザムル）・XMLとの違い・WPF/.NET MAUIでの書き方を解説](/tech/details/7598/)で扱うXAMLは、SGMLが示した「用途別に語彙を定義する」設計をXML上で実践した例です。

## SGMLは今も使われているのか｜規格の現況と移行済みの現場

### 規格としては現行、実装は縮小

規格の側は生きています。前述のとおりJIS X 4151:1992は2025年6月20日付で確認されており、ISO 8879に対応する国内規格として有効です。一方で、SGML専用の処理系を新規に選定する場面は事実上ありません。標準的なSGMLパーサだったOpenSPは1.5.2が2005年12月23日公開で、以降20年更新がない状態です。規格が有効であることと、それを扱う実装が現役であることは別の話だと考えてください。

### 業界標準はXMLへ移行済み

SGMLの代表的な応用として名前が挙がる文書標準も、すでに移っています。DocBookの公式ガイド「DocBook: The Definitive Guide」は、DocBookの出自について「DocBook's roots are in SGML, where it was defined with a Document Type Definition, or DTD.」と述べたうえで、「Starting with DocBook V5.0, DocBook is exclusively an XML vocabulary defined with RELAX NG and Schematron.」と明記しています。V5.0以降のDocBookはXML専用で、SGML DTDでは定義されていません。

航空・防衛分野の技術出版で使われるS1000Dも同様で、公式サイトのダウンロードページが案内しているのは「the S1000D specification and XML schemas」です。SGMLベースの標準として紹介されることがありますが、現在配布されているスキーマはXMLです。文献や社内資料で「SGMLベース」と書かれていたら、発行年を確認してください。

### SGML資産に手を入れるときの判断基準

これから新規に文書基盤を作るなら、SGMLを選ぶ理由はありません。前述のOpenSPの更新停止が示すとおり処理系の選択肢が枯れており、10年後に読める保証はXMLやJSONのほうが厚いためです。SGMLの柔軟さは、タグ省略や同時マークアップのように解析を難しくする方向の柔軟さであり、XMLはそれを捨てることで実装を増やしました。

逆に、既存のSGML資産を抱えている場合に「まず全部XMLへ変換する」と決め打ちするのも早計です。SGML文書はタグ省略や短縮記法を使っている可能性があり、XMLへ機械変換するにはDTDを読んで省略された終了タグを補う必要があります。DTDが失われていたり、実文書がDTDから外れていたりする資産は珍しくありません。移行の可否は、DTDの有無と、実文書がそのDTDで検証を通るかどうかを先に確かめてから判断してください。検証の考え方そのものは古びておらず、[JSON Schemaとは？JSONの構造を検証する書き方とDraft 2020-12の実装を実装者目線で解説【2026年版】](/tech/details/16289/)のような現代のスキーマ言語にも、DTDが持ち込んだ「構造を宣言して機械に検査させる」発想が引き継がれています。

## よくある質問

### SGMLの読み方と正式名称は何ですか？

読み方は「エスジーエムエル」、正式名称はStandard Generalized Markup Language（標準汎用マークアップ言語）です。

### SGMLはいつ標準化されましたか？

ISO 8879として標準化され、第1版の発行日は1986年10月15日です。国内対応のJIS X 4151:1992は1992年7月1日制定で、2025年6月20日付の確認を経て現行規格として維持されています。

### SGMLとXMLの違いは何ですか？

XMLはSGMLの制限された形式で、XML文書はそのままSGMLに適合する文書になります。違いは省略記法の扱いにあり、XMLはOMITTAGやSHORTTAGなどをすべて禁止して終了タグの省略や引用符なし属性値を認めません。その分、解析器の実装が単純になりました。

### HTMLは今もSGMLの応用ですか？

いいえ。SGML応用だったのはHTML 4までで、現行のWHATWG HTML標準は自身を「a separate language with its own parsing rules」と位置づけ、「returns to a non-SGML basis」と明記しています。冒頭のDOCTYPE宣言もDTDを参照しない固定文字列です。

### SGMLは現在も使われていますか？

規格は有効ですが、実務はXMLへ移りました。DocBookはV5.0からXML専用、S1000Dが配布するのもXMLスキーマです。現在SGMLに触れる機会は、1990年代から続く文書資産の保守や移行の場面にほぼ限られます。

## 関連記事

- [XAMLとは？読み方（ザムル）・XMLとの違い・WPF/.NET MAUIでの書き方を解説](/tech/details/7598/)
- [HTML Tidyとは？HTMLを整形・修正するツールの使い方・インストール・他ツール比較](/column/details/7594/)
- [LaTeXとは？読み方・TeXとの違い・使い方を初心者向けにわかりやすく解説](/tech/details/9718/)
- [JSON Schemaとは？JSONの構造を検証する書き方とDraft 2020-12の実装を実装者目線で解説【2026年版】](/tech/details/16289/)
- [MarkdownでWebサイトを作る3つの方法【2026年版】](/column/details/2566/)

---

出典: [SGMLとは？読み方・正式名称（ISO 8879）とXML・HTMLとの違い](<https://www.issoh.co.jp/column/details/8044/>)（株式会社一創）
