サーチ…


備考

XMLは階層データをテキストファイルに格納するためのマークアップ言語です。 JSONのような半構造化データとも呼ばれます。 XMLは機械可読であるが、人々が読むことができる。

XMLはエレメントで構成されていますが、時にはカジュアルにタグスープと呼ばれ、それ自体が他のエレメントやテキストを含むことがあります。要素には属性も含まれます。

XMLは、プラットフォーム間、特にインターネット上でのデータ交換によく使用されます。また、半構造化データをNoSQLデータストア(XMLデータベース/ドキュメントストア)に格納するためにますます使用されています。さらに、これは、ドキュメント指向のデータ(マークアップ付きテキスト)を処理する柔軟性を備えており、出版業界で非常に人気があります。 XMLは設定ファイルにも広く使われています。

XMLが広く普及している主要な理由の1つは、オープンソースを含む多くのパーサーが利用できるように標準化されていることです。これにより、XMLを使用するコストは、独自の新しい構文の発明よりも低くなります。

XMLの起源と目的に関する詳細は、公式のW3C勧告に記載されています。

XMLには2つのバージョンがあります(下の表を参照)。各バージョンのエディションは、元のドキュメントの改訂だけであり、標準の変更はありません。

XMLの最初のバージョンは1.0です。 XML 1.1は、Unicodeのバージョンが2.0から3.1に変更されたために主に変更され、新しいUnicode文字の使用と解釈のための一連の新しい規則が指定されています。

バージョン

バージョン発売日
1.0 1998年2月10日
1.1 2001年12月13日

インストールまたはセットアップ

XMLは構文です。これは、簡単なテキストエディタで十分です。

ただし、XML形式のエディタを使用すると、文書が整形式でない場合にはいつどこで生産性が向上するかがわかります。このようなエディタでは、XMLスキーマに対してXMLドキュメントを検証したり、XMLドキュメントからXMLスキーマを生成することもできます(逆も同様です)。

エディタのいくつかの例は、oXygen、Atom、Eclipse、およびAltova XMLSpyです。別の解決方法は、Apache XercesなどのコマンドラインXMLパーサーを使用することです。

基本ビルディングブロック

XMLは、以下の基本的なビルディングブロックで構成されています。

  • 素子
  • テキスト
  • 属性
  • コメント
  • 処理命令

要素に山括弧が付きます:

<element/>

<element>some content</element>

オープニング要素タグに属性が表示されます。

<element
  attribute-name="attribute value"
  other-attribute='single-quoted value'>
  ...
</element>

テキストは要素内または要素間のどこにでも表示できます。

<element>some more <b>bold</b> text</element>

コメントは次の構文を使用します。 XMLコメントは、プログラミング言語とは異なり、モデルの一部であり、パーサの上にあるアプリケーションから見えることを知っておくことが重要です。

<!-- this is a comment -->

処理命令は、メッセージを消費するアプリケーションに渡すことを可能にする(例えば、表示方法やスタイルシートなど)。 XMLは、処理命令のフォーマットを制限しません。

<?target-application these are some instructions?>

ビルディングブロックの詳細は、このトピックで見つけることができます

整形式

XMLドキュメントは、XML仕様の整形ルールに準拠したテキストファイルです。このような適合する文書は整形式であると言われています( 有効と混同しないでください)。 XMLは、HTMLなどの他の言語と比較して整形式性が非常に厳格です。正しく構成されていないテキストファイルはXMLと見なされず、アプリケーションをまったく使用して使用することはできません。

XML文書に適用される規則は次のとおりです。

  1. XMLは多くの自己記述構文を使用します。プロローグは、XMLバージョンと文字エンコーディングを定義します。

    <?xml version="1.0" encoding="UTF-8"?>
    
  2. 厳密に1つの最上位要素が存在しなければなりません。

    ただし、コメント、処理命令、および初期XML宣言は最上位レベルでも許可されています。テキストと属性はそうではありません。

    <?xml version="1.0"?>
    <!-- some comments -->
    <?app a processing instruction?>
    <root/>
    <!-- some more comments -->
    
  3. 要素はネストできますが、適切にネストされている必要があります。

    <name>
      <first-name>John</first-name>
      <last-name>Doe</last-name>
    </name>
    

    埋め込み要素の開始タグと終了タグは、そのコンテナ要素の開始タグと終了タグ内になければなりません。要素の重なりは違法です。特に、これは<foo><bar></foo></bar>形式のXMLではありません: <foo><bar></foo></bar>

  4. 属性は、開始要素タグまたは空要素タグにのみ表示され、終了要素タグには表示されません。要素間に属性の構文がある場合、意味はなく、テキストとして解析されます。

    <person first-name="John" last-name="Doe"/>
    

    これは整形式ではありません: <person></person first-name="John"/>

  5. コメント、処理命令、テキストなどの要素は、エレメント内(つまり、開始タグと終了タグの間)の任意の場所に表示できますが、タグ内には表示されません。

    <element>
        This is some <b>bold</b> text.
        <!-- the b tag has no particular meaning in XML -->
    </element>
    

    この例は整形式ではありません: <element <-- comment --> />

  6. <文字は、テキストまたは属性値に表示されないことがあります。

  7. "文字は、引用符で囲まれた属性値には現れません"'文字は引用符で囲まれた属性値には表示されません'

  8. 文字のシーケンスが--コメントで表示されない場合があります。

  9. リテラル<および&文字はそれぞれのエンティティによってエスケープされなければならない&lt; &amp;

こんにちは世界

<?xml version="1.0"?>
<?speech-generator voice="Siri"?>
<root xmlns:vocabulary="http://www.example.com/vocabulary">
  <!-- These are the standard greetings -->
  <vocabulary:greetings>
    <vocabulary:greeting xml:lang="en-US" type="informal">
      Hi!
    </vocabulary:greeting> 
    <vocabulary:greeting xml:lang="en-US" type="intermediate">
      Hello!
    </vocabulary:greeting> 
    <vocabulary:greeting xml:lang="en-US" type="formal">
      Good morning to <b>you</b>!
    </vocabulary:greeting> 
  </vocabulary:greetings>
</root>

名前空間

要素名と属性名は、URIである名前空間に存在します。名前空間は、実際の要素と属性名で使用される接頭辞(QNamesと呼ばれる)にバインドされています。

このドキュメントは、名前空間を接頭prefix接頭prefixに結びつけ、接頭辞がないデフォルトの名前空間を定義します。

<?xml version="1.0"?>
<document
    xmlns="http://www.example.com/default-namespace"
    xmlns:prefix="http://www.example.com/another-namespace">
  <prefix:element/>
</document>

このトピックでは、名前空間の詳細を見つけることができます



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow