なぜテキスト形式が必要なのでしょうか?

テキスト形式は、プログラムと人間の両方で作成および処理できるため、情報を保存するのに便利です。

テキスト ファイル (テキスト形式のファイル) は、さまざまなテキスト エディターで開いたり、読んだり、編集したりできます。

多くのプログラムは、形式に数値やバイナリ (はい/いいえ) 値が含まれている場合でも、テキストベースの構成ファイルを使用します。

これにより、テキストから内部形式へ、またはその逆に変換する必要があるため、プログラムが多少複雑になりますが、プログラム自体で構成ツールを使用せずに構成を手動で編集することが可能になります。

XML は現在どこで使用されていますか?

XML は IT のさまざまな分野で使用されます。これは、構成ファイル (プログラム設定を含む) またはプログラム間のデータ転送に使用されるファイルです。Java では、最も一般的な使用例の 1 つは、ビルド自動化ツールである Maven の構成です。

XML文書の構造

XML ドキュメントの物理構造と論理構造は別々に保たれます。物理構造の観点から見ると、ドキュメントは他のエンティティを参照できるエンティティで構成されます。

唯一のルート要素はドキュメント エンティティです。エンティティはドキュメント内の最小部分です。すべてのエンティティには名前があり、文字が含まれています。

次に、文字は、文字データまたはマークアップの 2 つのカテゴリのいずれかに属します。

マークアップには次のものが含まれます。

  • 要素の境界を示すタグ。
  • 宣言と処理命令 (その属性を含む)。
  • エンティティ参照。
  • コメント。
  • CDATA セクションをラップする文字シーケンス。

論理的には、ドキュメントは要素、コメント、宣言、エンティティ参照、および処理命令で構成されます。マークアップは、ドキュメント内にこの構造すべてを作成するために使用されます。

文書のすべての構成部分は、プロローグとルート要素に分割されます。ルート要素は XML ドキュメントの必須かつ重要な部分ですが、プロローグはまったく存在しない場合もあります。ルート要素は、ネストされた要素、文字データ、およびコメントで構成されます。ドキュメントの要素は正しくネストされている必要があります。別の要素内で始まる要素は、その要素内で終了する必要もあります。

マークアップシンボル

マークアップは常に<で始まり>で終わります。

<と> (山括弧) および& (アンパサンド) 記号は特別な役割を果たします山括弧は、要素、処理命令、およびその他のシーケンスの境界を示します。アンパサンドは、テキストをエンティティに置き換えるのに役立ちます。

XML宣言

XML 宣言では、ドキュメントの作成に使用される言語のバージョンを指定します。XML 仕様では、ドキュメントの内容の適切な解釈は言語のバージョンに依存するため、ドキュメントを XML 宣言で始めるように規定されています。

この言語の最初のバージョン (1.0) では、この宣言はオプションでしたが、後のバージョンでは必須です。宣言が欠落している場合は、バージョン 1.0 を意味すると想定されます。宣言には、ドキュメントのエンコーディングに関する情報も含まれる場合があります。

例:

<?XML バージョン="1.1" エンコーディング="UTF-8" ?>

タグ

タグは、要素の名前を含むマークアップ構造です。開始タグと終了タグがあります。開始要素と終了要素を組み合わせる空要素タグもあります。

例:

  • 開始タグ: <tag1>

  • 終了タグ: </tag1>

  • 空要素タグ: <empty_tag1 />

属性

XML 要素のもう 1 つの部分は属性です。要素は複数の一意の属性を持つことができます。属性を使用すると、要素に関する詳細情報を指定できます。より正確には、属性は要素のプロパティを定義します。

属性は常に名前と値のペアです。

名前 = "値"

タグ内の属性の例:

<tag1 name = "value">要素</tag1>

属性の値は二重引用符 ( " ) または一重引用符 ( ' ) で囲む必要があります。属性は開始タグと空要素タグでのみ使用されます。

5 つの特殊文字 (<、>、'、”、&) のエスケープ

当然のことながら、<>、および&記号をそのまま文字データや属性値に使用することはできません。それらを表すには特別なエスケープ シーケンスが必要です。属性値内にアポストロフィや引用符を記述する場合にも、特別なシーケンスが使用されます。

シンボル 置換
< <;
> >
& &
' '

また、\文字を記述するには、 \\を使用する必要があります。

CDATA セクション

CDATA セクションはテキストの論理単位ではありません。このタイプのセクションは、XML 構文により文書内に文字データを配置できる場合に発生する可能性があります。

このセクションは<![CDATA[で始まり]]>で終わります。文字データはマークアップのこれらのビットの間に配置され、<>、および&記号をそのままの形式で使用できます。

コメント

コメントは文字データとみなされません。コメントは<!--で始まり-->で終わります。文字シーケンス-- はコメント内で使用できません。また、コメント内のアンパサンド文字はマークアップを示しません。

例:

<!-- これはコメントです -->

名前

XML では、すべての名前に Unicode 文字テーブル内の文字、アラビア数字、ピリオド、コロン、ハイフン、およびアンダースコアのみを含めることができます。名前は文字、コロン、またはアンダースコアで始めることができます。名前を文字列XMLで始めることはできないことに注意してください。

Java クラスとそのクラスのオブジェクトを見てみましょう。次に、オブジェクトを XML 形式でシリアル化してみます。クラスコード:


public class Book {
   private String title;
   private String author;
   private Integer pageCount;
   private List<String> chapters;

   public Book(String title, String author, Integer pageCount, List<String> chapters) {
       this.title = title;
       this.author = author;
       this.pageCount = pageCount;
       this.chapters = chapters;
   }
// Getters/setters
}

そしてオブジェクトの作成:


Book book = new Book("My Favorite Book", "Amigo", 999, Arrays.asList("Chapter 1", "Chapter 2", "Chapter 3", "Chapter 4", "Chapter 5", "Chapter 6"));

次に、4 つのフィールドを含む Java オブジェクトの有効な XML 表現の例を示します。そのうちの 1 つはコレクションです (上記の Java コードを参照)。

<本>
  <title>私のお気に入りの本</title>
  <author>アミーゴ</author>
  <pageCount>999</pageCount>
 <chapters>
    <chapters>第1章</chapters>
    <chapters>第2章</chapters>
    <chapters>第 3 章</chapters>
    <chapters>第 4 章</chapters>
    <chapters>第 5 章</chapters>
    <chapters>第 6 章</chapters>
 </chapters>
</Book>

XMLスキーマ

XML スキーマは、XML ドキュメントの構造を記述したものです。対応する仕様 (XML スキーマ定義、つまり XSD) は W3C 勧告です。

XSD は、XML ドキュメントが従わなければならないルールを表現するために設計されました。しかし、私たちにとって最も興味深いのは、XSD が XML ドキュメントを処理するソフトウェアを開発するときに使用するように設計されていることです。これを使用すると、XML ドキュメントの正確性をプログラム的にチェックできます。

XML スキーマを含むファイルには、.xsd 拡張子が付いています。XML スキーマの設計はこのレッスンの範囲を超えているため、現時点ではその可能性が存在することを認識してください。