web-dev-qa-db-ja.com

XMLとXSDの違いは何ですか?

Extensible Markup Language(XML)とXML Schema(XSD)の違いは何ですか?

103

実際、XSDはXMLそのものです。その目的は、別のXMLドキュメントの構造を検証することです。 XSDはXMLに必須ではありませんが、XMLが特定の目的に使用できることを保証します。 XMLには、適切な形式と構造のデータのみが含まれています。

142
anthares


例をご覧ください

<root>
  <parent>
     <child_one>Y</child_one>
     <child_two>12</child_two>
  </parent>
</root>

そのためのxsdを設計します。

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" 
xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="root">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="parent">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="child_one" type="xs:string" />
              <xs:element name="child_two" type="xs:int" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>


XSDでは不可能なこと:はリストが非常に小さいので最初に書きたい
1)別のノード/属性の値を使用してノード/属性を検証することはできません。
2)これは制限です:XSDファイルで定義される要素は、1つのデータ型のみで定義する必要があります。 [上記の例では、別の<child_two>ノードに表示される<parent>の場合、int以外のデータ型は定義できません。
3)要素と属性の検証を無視することはできません。つまり、要素/属性がXMLに含まれる場合、対応するXSDで明確に定義する必要があります。 <xsd:any>を使用すると許可されますが、独自のルールがあります。検証エラーの原因となるAbiding。私は同様のアプローチを試みましたが、確かに成功しませんでした ここにQ&Aがあります


XSDで可能なこと:
1)XMLノードの適切な階層をテストできます。 [xsdは、どの子がどの親の下に来るかを定義し、エラーとしてカウントされます。上記の例では、child_twoはルートの直接の子にはなりませんが、 「ルート」ノードの子、階層があります。]
2)ノードの値のデータ型を定義できます。 [上記の例では、child_twoはnumber以外のデータを持つことはできません]
3)また、カスタムdata_typesを定義することもできます。たとえば、ノード<month>の場合、可能なデータは12か月のいずれかです。したがって、新しいデータで12か月すべてを定義する必要があります。入力されたXMLにこれらの12の値以外の値が含まれている場合、検証はエラーを示します。
4)minOccursおよびmaxOccursを使用して、要素の出現を制限できます。デフォルト値は1および1です。

.. などなど ...

107

XSD:
XSD(XML Schema Definition)は、Extensible Markup Language(XML)ドキュメントの要素を形式的に記述する方法を指定します。
Xml:
XMLは、データの説明として設計されました。ハードウェアだけでなくソフトウェアからも独立しています。
次のことを強化します。
-データ共有。
-プラットフォームに依存しません。
-データの可用性を高めます。

違い:

  1. XSDはXMLに基づいて記述されています。

  2. XSDは、ドキュメントに表示できる要素と構造を定義しますが、XMLは定義しません。

  3. XSDは、データが適切に解釈されることを保証しますが、XMLはそうではありません。

  4. XSDドキュメントはXMLとして検証されますが、その逆は常に正しいとは限りません。

  5. XSDは、XMLよりもエラーの捕捉に優れています。

XSD 要素の定義文書で使用でき、エンコードされる実際のデータに関連します。
たとえば:
2010年1月12日と表現される日付は、1月12日または12月1日を意味します。 XSDドキュメントで日付データ型を宣言すると、XSDで指定された形式に従うことが保証されます。

14
Skull

簡単なXMLの例:

<school>
  <firstname>John</firstname>
  <lastname>Smith</lastname>
</school>

XSD OF ABOVE XML:

<xs:element name="school">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="firstname" type="xs:string"/>
      <xs:element name="lastname" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

ここ:

複合型:他の要素が含まれていることを示します。 単純型:他の要素が含まれていないことを示します。

タイプ:文字列、10進数、整数、ブール、日付、時刻、

簡単に言えば、xsdは特定のタイプのXMLデータを表現および検証するもう1つの方法です。追加の属性を使用して、複数の操作を実行できます。 xsdでのタスクの実行は、xmlよりも簡単です。

3
shubham1js

基本的に、XSDファイルは、XMLファイルの外観を定義します。これは、XMLファイルの構造を定義するスキーマファイルです。そのため、使用可能なフィールドとそのサイズを指定します。

XMLファイルは、XSDで定義されたルールを使用するため、XSDのインスタンスです。

1
SelMez

XMLにはf.exよりもはるかに幅広いアプリケーションがあります。 HTML。組み込みまたはデフォルトの「アプリケーション」はありません。そのため、Webページも許可されている内容によって管理されていることをあまり気にしないかもしれませんが、作成者側からは、XML文書に含めるものと含めないものを正確に定義する必要があります。

データベースを設計するようなものです。

XMLテクノロジーに関することは、それらが本質的にテキストであることです。 XSDでは、PHPのようなテキスト処理ツールに「プラグイン」できるデータ構造定義フレームワークがあることを意味します。そのため、データ自体を操作できるだけでなく、構造を非常に簡単に変更および文書化し、フロントエンドを自動生成することもできます。

このように見られるXSDは、データ(XML)とデータ処理ツール間の「接着剤」または「ミドルウェア」です。

0
Agnes K. Cathex