
マークアップ言語は、文書の構造と書式、そして場合によっては文書の各部の関係性を指定するテキスト符号化システムです。 [ 1 ]マークアップは文書の表示を制御したり、自動処理を容易にするために文書の内容を充実させたりすることができます。
マークアップ言語とは、文書に含めることができるマークアップ情報の種類と、それを文書の内容とどのように組み合わせて、人間とコンピュータプログラムが利用しやすいようにするかを規定する一連の規則です。この概念と用語は、紙の原稿(例えば、編集者による修正指示など)にマークアップを施すことから発展しました。伝統的に、著者の原稿には赤ペンや青鉛筆が使われていました。[ 2 ]
troff、TeX、LaTeXといった古いマークアップ言語は、典型的には組版とプレゼンテーションに重点を置いています。ScribeやXMLといった最新のマークアップ言語のほとんどは、文書の構成要素(見出し、段落、表など)を識別し、スタイルシートなどの技術を用いて書式設定やその他の処理を適用することを想定しています。
広く使用されているHTMLなどの一部のマークアップ言語には、定義済みのプレゼンテーションセマンティクスがあります。つまり、その仕様では、特定のメディア上で構造化データをどのように提示するかについて、いくつかの側面が規定されています。HTML は、 DocBook、Open eBook、JATSなど多くのマークアップメタ言語と同様に、 XML とSGMLというマークアップメタ言語に基づいています。つまり、SGML と XML では、設計者が特定のスキーマを指定でき、それによってどの要素、属性、その他の機能がどこに許可されるかが決まります。[ 3 ]
ほとんどのマークアップ言語の重要な特徴は、テキストや画像などのコンテンツとマークアップを組み合わせることができることです。例えば、文中のいくつかの単語を強調したり、固有名詞、定義済み用語、その他の特別な項目として識別したりする必要がある場合、マークアップを文の文字間に挿入することができます。
マークアップという言葉は、原稿にマークを付けるという伝統的な出版慣行に由来しており、紙や印刷された原稿の余白や本文に、従来の記号による印刷指示の形式で手書きの注釈を追加することが含まれます。
何世紀にもわたり、この作業は主にマークアップマン[ 4 ]またはマーカー[ 5 ]と呼ばれる熟練した印刷工によって行われてきました。彼らはテキストにマークを付けて、各部分に適用する書体、スタイル、サイズを示し、その後、手作業または機械による印刷のために原稿を他の人に渡していました。
このマークアップは、編集者、校正者、出版社、グラフィック デザイナー、および著者自身によっても一般的に適用され、これらの人々も訂正や変更などをマークすることがあります。
電子マークアップには3つの一般的なカテゴリーがあり、1987年にジェームズ・クームズ、アレン・レニア、スティーブン・デローズによって明確に定義されました。 [ 6 ]そして2003年にティム・ブレイによって定義されました。 [ 7 ]
プレゼンテーションマークアップは、従来のワードプロセッサシステムで使用されています。文書テキストに埋め込まれたバイナリコードは、WYSIWYG(「What You See Is What You Get(見たまま得られる)」)効果を生み出します。このようなマークアップは通常、人間のユーザー、さらには著者や編集者にも表示されません。このようなシステムは、内部的には手続き型マークアップと記述型マークアップを使用していますが、ユーザーにはそれらを変換して、書式化された文字配列で提示します。
マークアップはテキストに埋め込まれ、プログラムにテキストを処理するための指示を提供します。よく知られている例としては、 troff、TeX、Markdownなどがあります。一般的に、ソフトウェアはテキストを最初から最後まで順番に処理し、遭遇した指示に従います。このようなテキストは、多くの場合、マークアップが表示された状態で編集され、作成者によって直接操作されます。一般的な手続き型マークアップシステムには、通常、プログラミング構造、特にマクロ が含まれており、複雑な命令セットを単純な名前 (および場合によってはいくつかのパラメータ) で呼び出すことができます。これは、同じまたは類似の命令を多くの場所で繰り返し記述するよりもはるかに高速で、エラーが少なく、メンテナンスが容易です。
記述的マークアップは、文書の各部がどのように処理されるべきかではなく、その部分が何であるかを記述するために特に使用されます。このようなラベルを多数提供するよく知られたシステムには、LaTeX、HTML、XMLなどがあります。その目的は、文書の構造を特定の処理や表現から切り離すことです。このようなマークアップは、しばしばセマンティックと呼ばれます。記述的マークアップの例としては、引用<cite>をラベル付けするために使用されるHTMLのタグがあります。記述的マークアップ(論理マークアップまたは概念マークアップと呼ばれることもあります)は、著者が資料を視覚的にではなく概念的に記述する方法で書くことを推奨します。[ 8 ]
マークアップの種類にはかなりの重複と同時使用があります。現代のワードプロセッサシステムでは、プレゼンテーション用のマークアップはXMLなどの記述型マークアップ指向のシステムに保存され、その後、実装によって手続き的に処理されることがよくあります。TeXなどの手続き型マークアップシステムでのプログラミングは、LaTeXなどのより記述的な性質を持つ高レベルのマークアップシステムを作成するために使用できます。
近年、使いやすさを主な目標とし、標準化団体の意見を反映することなく、作成者がウェブブラウザ(例えばWikiやウェブフォーラム)経由でフォーマットされたテキストを作成できるようにすることを目指したマークアップ言語がいくつか開発されています。これらは軽量マークアップ言語と呼ばれることもあります。Markdown、BBCode、そしてWikipediaで使用されているマークアップ言語などが、このような言語の例です。
コンピュータテキスト処理におけるマークアップ言語の最初のよく知られた公開発表は、1967年の会議でウィリアム・W・タニクリフによって行われました。ただし、彼はこれをジェネリックコーディング(generic coding)と呼ぶことを好んでいました。これは、 RUNOFFなどの処理プログラムがそれぞれ独自の制御記法(多くの場合、対象となる組版デバイスに固有のもの)を使用するようになったことへの対応と見ることができます。1970年代、タニクリフは出版業界向けにGenCodeと呼ばれる標準の開発を主導しました。ブックデザイナーのスタンリー・ライスは1970年に同様の方向性で考察を発表しました。[ 9 ]
ブライアン・リードは、1980年にカーネギーメロン大学で博士論文を発表し、記述的マークアップの理論と実際の実装を開発しました。しかし、マークアップ言語の発明者としては、 IBMの研究者であるチャールズ・ゴールドファーブの方が一般的に知られています。ゴールドファーブは1969年に法律事務所向けの原始的な文書管理システムの開発中に基本的なアイデアを考案し、同年後半にIBMの汎用マークアップ言語(GML)の発明に貢献しました。GMLは1973年に初めて公開されました。
1975年、ゴールドファーブはマサチューセッツ州ケンブリッジからシリコンバレーに移り、 IBMアルマデン研究所の製品プランナーに就任しました。そこで彼はIBMの幹部を説得し、1978年にIBMのDocument Composition Facility製品の一部としてGMLを商用展開させました。そして数年のうちにGMLはビジネスで広く使用されるようになりました。
最初の標準的な記述的マークアップ言語であるSGML(Standard Generalized Markup Language )は、GMLとGenCodeの両方に基づいていました。SGMLは、国際標準化機構(ISO)委員会の成果であり、当初はタニクリフが議長を務め、ゴールドファーブも1974年からこの委員会の策定に携わっていました。 [ 10 ]ゴールドファーブは最終的に同委員会の議長に就任しました。SGMLは、1986年10月にISO 8879規格として初めてISOによってリリースされました。
出版業界以外で利用可能なコンピュータマークアップ言語の初期の例としては、 troffやnroffなどのUnixシステムのタイプセッティングツールが挙げられます。これらのシステムでは、テキストにフォーマットコマンドが挿入され、タイプセッティングソフトウェアがエディターの指定に従ってテキストをフォーマットすることができました。文書を正しく印刷するには、試行錯誤の反復的なプロセスでした。 [ 11 ] WYSIWYG出版ソフトウェアの登場により、一般ユーザーの間ではこれらの言語の使用が大幅に減少しましたが、プロの出版業界では、テキストの非視覚的な構造を指定するために依然としてマークアップが使用されており、WYSIWYGエディターでは現在、マークアップ言語ベースの形式で文書を保存するのが一般的です。
もう一つの主要な出版標準規格はTeXです。これは1970年代から1980年代にかけてドナルド・クヌースによって開発・改良されました。TeXは、数学書の組版において、テキストの詳細なレイアウトとフォント記述に重点を置いていました。そのため、クヌースは組版技術の研究にかなりの時間を費やしました。TeXは主に学術界で使用されており、多くの科学分野における事実上の標準となっています。LaTeXとして知られるTeXマクロパッケージは、TeX上に記述的なマークアップシステムを提供し、科学界と出版業界の両方で広く使用されています。
構造と表現を明確に区別した最初の言語は、ブライアン・リードによって開発され、1980年の博士論文で記述されたScribeでした。[ 12 ] Scribeは多くの点で革命的であり、マークアップされた文書から分離されたスタイルの概念と、記述要素の使用を制御する文法を導入しました。ScribeはGML、そして後のSGMLの開発に影響を与え、[ 13 ] HTMLとLaTeXの直接の祖先です。[ a ]
1980年代初頭、マークアップは文書の構造的側面に焦点を当て、その構造の視覚的な表現はインタープリタに委ねるべきという考えから、SGMLが生まれました。この言語は、ゴールドファーブが議長を務める委員会によって開発されました。SGMLは、タニクリフのプロジェクトであるGenCodeなど、様々なソースからのアイデアを取り入れました。シャロン・アドラー、アンダース・ベルグルンド、ジェームズ・A・マルケもSGML委員会の主要メンバーでした。
SGMLは、文書にマークアップを組み込むための構文と、どのようなタグがどこに配置できるかを個別に記述するための構文(文書型定義(DTD)、後にスキーマと呼ばれる)を規定する。これにより、作成者は、自分に最も意味があり、自分の自然言語で名前が付けられたタグを選択し、自動検証も可能にしながら、任意のマークアップを作成して使用できる。したがって、SGMLは正確にはメタ言語であり、多くのマークアップ言語はSGMLから派生している。1980年代後半以降、Text Encoding Initiative(TEI)ガイドラインやDocBookなど、ほとんどの重要な新しいマークアップ言語はSGMLに基づいている。SGMLは1986年にISO 8879標準として公布された。[ 14 ]
SGMLは、大規模なドキュメント作成が求められる分野で広く受け入れられ、利用されました。しかし、多くの人がSGMLを扱いにくく、習得が難しいと感じていました。これは、SGMLの設計が過剰な機能と柔軟性を追求した結果です。例えば、SGMLでは、特定の状況において終了タグ(または開始タグ、あるいはその両方)をオプションとしていました。これは、開発者が、多忙を極めるサポートスタッフがマークアップを手作業で行うことを前提としており、キー入力の手間を省くことができれば喜ぶだろうと考えていたためです。
1989年、コンピュータ科学者のティム・バーナーズ=リーはインターネットベースのハイパーテキストシステムを提案するメモを書き、 [ 15 ]、その後HTMLを仕様化し、1990年後半にブラウザとサーバーソフトウェアを開発しました。HTMLの最初の公開された記述は「HTMLタグ」と呼ばれる文書で、1991年後半にバーナーズ=リーによってインターネット上で初めて言及されました。[ 16 ] [ 17 ]この文書は、HTMLの初期の比較的シンプルな設計を構成する18個の要素を記述しています。ハイパーリンクタグを除くこれらの要素は、 CERNの社内SGMLベースの文書フォーマットであるSGMLguidの影響を強く受けており、SGML標準のサンプルスキーマと非常によく似ています。これらの要素のうち11個は、現在もHTML 4に残っています。[ 18 ]
バーナーズ=リーはHTMLをSGMLアプリケーションとみなした。インターネット技術タスクフォース(IETF)は、1993年半ばにバーナーズ=リーとダン・コノリーによる最初のHTML仕様案「ハイパーテキスト・マークアップ言語(HTML)」を発表し、HTMLを正式にSGMLアプリケーションとして定義した。 [ 19 ]この提案には、文法を定義するSGML DTDが含まれていた。[ 20 ] HTMLのテキスト要素の多くは、 1988年のISO技術報告書TR 9537「SGMLの利用技術」に記載されている。この報告書は、 1960年代初頭に互換タイムシェアリングシステム( TTS)オペレーティングシステム用に開発されたRUNOFFコマンドなど、初期のテキストフォーマット言語の機能を網羅している。これらのフォーマットコマンドは、タイプセッターが手動で文書をフォーマットするために使用していたコマンドから派生したものである。スティーブン・デローズは、HTMLの記述的マークアップの使用(特にSGMLの影響)が、それが可能にした柔軟性と拡張性により、Webの成功の大きな要因であったと主張している。 [ 21 ] HTMLは、Webブラウザで表示できるWebページやその他の情報を作成するための主要なマークアップ言語となり、21世紀では世界で最も使用されているマークアップ言語である可能性が高い。
XML(拡張マークアップ言語)は、広く使用されているメタマークアップ言語です。これは、ワールド・ワイド・ウェブ・コンソーシアム(W3C)のジョン・ボサック氏が設立・議長を務めた委員会によって開発されました。XMLの主な目的は、インターネット上の文書という特定のユースケースに焦点を当てることで、SGMLを簡素化することでした。[ 22 ] XMLはSGMLと同様にメタ言語であり、ユーザーは必要なタグ(したがって拡張可能)を作成し、それらのタグとその使用方法を記述することができます。
XMLの普及が加速したのは、あらゆるXML文書をSGML文書としても記述できるため、既存のSGMLユーザーやソフトウェアが容易にXMLに移行できたためです。同時に、XMLはSGMLの多くの複雑な機能を排除し、文書や出版物などの実装環境を簡素化します。XMLはシンプルさと柔軟性のバランスが取れており、非常に堅牢なスキーマ定義と検証ツールをサポートしているため、多くの用途に急速に普及しました。現在、XMLはアプリケーション間のデータ通信、プログラムデータのシリアル化、ハードウェア通信プロトコル、ベクターグラフィックスなど、文書以外にも幅広く利用されています。
2000年1月からHTML 5がリリースされるまで、 HTMLに関するW3Cの勧告はすべてXMLに基づいており、XHTML(Extensible HyperText Markup Language)が使用されていました。この言語仕様では、XHTML文書は整形式のXML文書であることが要求されています。これにより、HTMLユーザーに馴染みのある文書コンポーネントを使用しながら、歴史的にブラウザの望ましくない動作を引き起こしてきた多くの構文エラーを回避し、より厳密で堅牢な文書を作成できるようになりました。
HTML と XHTML の最も顕著な違いの 1 つは、XHTMLのすべてのタグを閉じる必要があるというルールです。つまり、 のような空の HTML タグは、通常の終了タグで閉じるか、特別な形式 : で置き換える必要<br>があります(終了タグのスラッシュの前のスペースはオプションですが、XML 以前の Web ブラウザーや SGML パーサーがタグを受け入れることができるため、頻繁に使用されます)。もう 1 つの違いは、タグ内のすべての属性値を引用符で囲む必要があることです。これらの違いは両方とも、冗長であるとよく批判されますが、エラーの検出、特定、修復がはるかに容易になるという点でも高く評価されています。最後に、XHTML 名前空間内のすべてのタグ名と属性名は、有効であるためには小文字でなければなりません。一方、HTML では大文字と小文字は区別されませんでした。 <br />
XMLベースのアプリケーションは数多く存在し、RDF/XML形式のリソース記述フレームワーク、XForms、DocBook、SOAP、Webオントロジー言語(OWL)などがあります。これらのアプリケーションの一部については、XMLマークアップ言語のリストを参照してください。
多くのマークアップ言語に共通する特徴として、文書のテキストとマークアップ命令を同じデータストリームまたはファイル内に混在させるという点があります。これは必ずしも必要ではありません。ポインタ、オフセット、ID、その他の方法を用いて、マークアップとテキストコンテンツを分離することが可能です。このような孤立したマークアップは、プログラムがマークアップされた文書を操作する際に使用する内部表現では一般的です。しかし、埋め込みマークアップやインラインマークアップは、他の分野ではより一般的です。例えば、以下はHTMLでマークアップされたテキストの一部です。
<!DOCTYPE html><html><ヘッド><メタ文字セット= "utf-8" >< title >私のテストページ</ title ></ヘッド><本文>< h1 > Mozilla はクールです</ h1 >< img src = "images/firefox-icon.png" alt = "Firefox のロゴ: 地球を取り囲む炎のキツネ。" >< p > Mozillaは、 </ p >のグローバルコミュニティです。< ul > <!-- チュートリアルではリストに変更されました -->< li >技術者</ li >< li >思想家たち</ li >< li >ビルダー</ li ></ ul >< p >インターネットの存続とアクセスの維持に協力することで、世界中の人々が情報に基づいたウェブの貢献者、そしてクリエイターになれるように努めています。私たちは、オープンプラットフォームを通じたこの人間同士の協働こそが、個人の成長と私たちの未来にとって不可欠だと信じています。</ p >< p >私たちの使命を追求する上での指針となる価値観と原則についてさらに詳しく知るには、< a href = "https://www.mozilla.org/en-US/about/manifesto/" > Mozilla 宣言</ a >をお読みください。 </ p ></本体></html>山括弧で囲まれたコードは<like this>マークアップ命令(タグと呼ばれる)で、これらの命令の間のテキストは実際の文書のテキストです。コードh1、、pはセマンティックemマークアップの例であり、含まれるテキストの目的や意味を記述します。具体的には、 は囲まれたテキストが第 1 レベルの見出しであることを意味し、は段落であることを意味し、 は強調された単語または句を意味します。このような構造マークアップを解釈するプログラムは、さまざまなテキスト部分を表示するための独自の規則やスタイルを適用し、必要に応じて異なる書体、太字、フォント サイズ、インデント、色、その他のスタイルを使用できます。たとえば、 のようなタグは、記事では大きな太字のサンセリフ書体で表示されることもあれば、等幅(固定幅フォント)の文書では下線が付けられることもありますが、まったく表示が変更されないこともあります。 h1pemh1
対照的に、 HTML 4の タグはプレゼンテーションiマークアップの例であり、これは通常、テキストの特性を指定するために使用されますが、その表示の理由を指定しません。この場合、要素はイタリック体の使用を指示します。しかし、HTML 5では、この要素はより意味的な用法に再利用され、「異なる声調や法、またはテキストの質を示す方法で通常の散文からオフセットされたテキストの範囲」を示すようになりました。[ 23 ]例えば、要素は分類上の指定や他の言語のフレーズを示すために使用するのが適切です。[ 23 ]この変更は、HTML 4から5への移行を可能な限りスムーズにし、プレゼンテーション要素の非推奨の使用が最も意図された意味を維持するようにするために行われました。 ii
TEIは、長年にわたる国際協力を通じて開発された、人文科学および社会科学分野の関心の高いテキストのエンコード方法に関する広範なガイドライン[ 24 ]を公開しています。これらのガイドラインは、歴史文書、特定の学者、時代、ジャンルの著作のエンコードに使用されています。
マークアップ言語という概念はテキスト文書から生まれましたが、プレイリスト、ベクターグラフィック、ウェブサービス、コンテンツシンジケーション、ユーザーインターフェースなど、他の種類の情報の提示にもますます利用されています。これらのほとんどはXMLアプリケーションです。これは、XMLが明確に定義され、拡張可能な言語であるためです。
XMLの使用により、 XHTML+SMILやXHTML+MathML+SVGのように、複数のマークアップ言語を単一のプロファイルに組み合わせることも可能になりました。[ 25 ]
一部のレビュアーは、印刷された出力に赤ペンを使うという昔ながらの方法を好む。
は非常に汎用的です。HTMLは、SGML基本構文を単純な構造のハイパーテキスト文書に適用した具体的なアプリケーションです。