XML とは何ですか?
XML は、データの構造化および転送のための柔軟なマークアップ言語です。カスタマイズ可能なタグ、階層構造、およびスキーマ定義を特徴としています。HTML とは異なり、XML は表示よりもデータの表現に重点を置いています。Logto の SAML 実装のような SSO 設定を含むさまざまなアプリケーションで広く使用されています。
拡張可能なマークアップ言語 (XML) は、データファイル内のテキストがどのように構造化され、保存され、送信されるべきかを示すためにタグを使用します。XML は人間と機械の両方が読み取れるように設計されており、強力で高カスタマイズ可能なマークアップツールとなっています。
XML は 1996 年に World Wide Web Consortium (W3C) によって作成されました。W3C の目標は、ドキュメントの種類を定義するのに役立つ言語を作成し、カスタムタグを作成する機能を提供することでした。結果として生まれたマークアップ言語タイプにより、ページ上のデータが別のシステムと XML ファイルとして共有される前にどのようにマークアップされているかを定義することができます。2 つのシステムが同じ XML 言語 (両者が解釈できるタグを含む) を使用している限り、両方のシステムが XML ファイル形式を「理解」することができます。XML が適切に展開されると、データファイルはどのように保存され、送信されるかを問わず、アクセスするたびに同じデータと構造が正確に再現されることを保証します。
XML コンテンツの例
XML データはデジタルファイル内のテキストで構成されています。HTML と同様に、テキストの解釈方法を示すためにタグを挿入することで、XML ファイル用の必要な「コード」を作成します。例えば、次のようになります。
この例では、3 人のユーザーを示しています。XML コンテンツには名前、ユ ーザーネーム、メール、ユーザーレベルが含まれています。
これにより、アイデンティティプロバイダーとリソースプロバイダー間で共有および読み取ることができる XML ドキュメントが作成されます。
重要なのは、上記の例が XML ドキュメントの階層的な性質を示していることです。例えば:
- 最初の行の内容
<?xml version="1.0" encoding="UTF-8"?>
は XML 宣言であり、バージョンとエンコーディングを指定します - XML ドキュメントにはルート要素が必要です。この例では
<users>
がそれに該当します - ルート要素内に含まれるすべての他の要素は「子要素」と呼ばれます
- 上記の例では、
<user>
タグでマークされた 3 つの子要素があります <user>
の子要素には、<name>
,<username>
,<email>
,<level>
などの他の子要素がいくつか含まれています<user>
タグにはid
もあり、これは XML 属性と呼ばれます。1 つの要素に同名の複数の属性を含めることはできません
使用されるタグは各データタイプを示しており、プレーンテキストはデータそのものとして機能しています。また、コンテンツがどのようにインデントされているかにも注意してください。これはシステムが XML ファイルを処理するのを助けるためではなく、人間が XML ファイルとその階層順序をより簡単に閲覧してエラーや欠落を発見し、修正するのを手助けするためです。
XML スキーマとは?
スキーマは XML ドキュメントの「定義」として機能します。つまり、XML ファイル構造の主要なルールと制約、コンテンツとデータタイプへの制御を記述し、ドキュメント内での相互作用を管理することを意味します。これにより、異なるアプリケーションやシステム間で扱われても、XML のデータの整合性が常に保護されるようになります。
主なスキーマ言語はドキュメント型定義 (DTD) と XML スキーマ定義 (XSD) です。XSD は、その豊富な機能セット、強力なデータタイプ機能などにより、XML ドキュメントで最も一般的に使用されています。
XML 構文とは?
XSD などの XML スキーマが XML ドキュメントの有効性を確保するための詳細な仕様についてであるなら、XML 構文は XML ファイルの全体的な構造を制御する一連のルールを提供します。例えば、XML 構文は、自己終了要素(追加コンテンツを必要としない単一の情報)や XML 宣言(ドキュメントの冒頭で使用され、文字エンコーディングなどの主要情報を説明)といったテキストコンテンツ、ドキュメントで使用されている XML バージョンなどをカバーすることができます。
XML 対 HTML
HTML に精通している場合、XML ファイルのマークアップの展開方法は非常に似ているように見えますが、これら 2 つのマークアップ言語には重要な違いがあります。それは使用例と目的が異なることです:
- HTML はブラウザが画面上にコンテンツを表示す る方法を理解するのを助けるためのマークアップ言語です
- XML はデータの保存、表示、転送に使用されるマークアップ言語です
この他にも、いくつかの違いがあります:
- HTML はブラウザ向けにページコンテンツをレンダリングするために使用されるため、そのタグタイプは事前定義されていますが、XML タグは実際の状況に応じてカスタマイズできます
- HTML はコンテンツの表示に使用されるため、静的です。XML はデータの転送に使用されるため、動的です
- HTML は名前空間をサポートしていませんが、XML は名前空間を使用して同名の異なるコンテキストのタグを区別し、混乱を避けることができます
この例では:
tech:title
は<http://www.example.com/tech>
を名前空間として使用しており、この<title>
要素がtech
名前空間に属することを示していますbio:author
は<http://www.example.com/bio>
を名前空間として使用しており、この<author>
要素がbio
名前空間に属することを示しています
Logto における XML の使用方法
Logto は SSO のために SAML プロトコルをサポートしています。SSO を構成する際に、アイデンティティプロバイダーは証明書やシングルサインオン URL などの重要な設定を含む XML 形式の設定ファイルを提供します。
SAML SSO を構成する際、Logto はアイデンティティプロバイダーから取得した XML 設 定ファイルを直接アップロードすることを可能にし、個々の設定項目を手動で入力する必要をなくします。