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


回答:


145

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


ちょうどそれで私は明確です-サードパーティが次のようなものを含む.XSDドキュメントを送信した場合:<xs:element name = "QuoteRequestID" type = "xs:unsignedLong" minOccurs = "0" />が含まれている-これはちょうどですフィールドの説明ではありません。<QuoteResultID>などを含む未加工のXMLである実際のサンプルリクエストを依頼するのは理にかなっていますか
James Wilson

3
きっと、あなたは彼らに尋ねることができます。また、これを実行できるオンラインツールの一部を使用することもできます(例:xsd2xml)。xsdを貼り付けるだけで、それに基づいてサンプルのxmlドキュメントが生成されます。
アンサレス2016年

@anthares、私はリンクを試してみ<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="QuoteRequestID" type="xs:unsignedLong" minOccurs="0" /> </xs:schema> ましたが、エラーが発生しました: Error!!! The 'minOccurs' attribute cannot be present.
heretoinfinity

なぜそれが問題になるのでしょうか?
heretoinfinity

111


例をとる

<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>可能です が、独自のルールがあります。これは、検証エラーにつながります。私は同様のアプローチを試みました、そして確かに成功しませんでした、ここにQ&Aがあります


XSDで可能なこと:
1)XMLノードの適切な階層をテストできます。[xsdは、どの子がどの親の下に来るかを定義します。これは、エラーとしてカウントされることを禁じます。上記の例では、child_twoはルートの直接の子にはできませんが、順番にaである「親」タグの子です。 「ルート」ノードの子、階層があります。]
2)ノードの値のデータ型を定義できます。[上記の例では、child_twoに数値以外のデータを含めることはできません]
3)カスタムdata_typesを定義することもできます(たとえば、nodeの<month>場合、可能なデータは12か月のいずれかになります。したがって、12か月すべてを定義する必要があります。 12か月すべての名前を列挙値として書き込む新しいデータ型..
4)minOccursおよびmaxOccursを使用して、要素の出現に制限をかけることができます。デフォルト値は1および1です。

.. などなど ...


1
@ InfantPro'Aravind '「別のノード/属性の値を使用してノード/属性を検証できない」とはどういう意味ですか。なぜ誰かがそれをしたいのですか?
Geek


「別のノード/属性の値を使用してノード/属性を検証することはできません」。これはどういう意味ですか
GrowinMan 2014

@ GrowinMan、条件付き検証(未親子関係)例:これはあなたのXMLの場合:<root> <A>A</A> <B/> <C/> </root>およびノードがあれば<A>ある<A>B</A>、そして作る<B>場合、必須<A>C</A>その後、作る<C>必須。
InfantPro'Aravind '

上記の要件は、XSDだけでは
InfantPro'Aravind '

15

XSD:
XSD(XMLスキーマ定義)は、拡張マークアップ言語(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で指定された形式に従うことが保証されます。


最初のステートメントはすべてを説明しました。
Ojonugwa Jude Ochalifu


6

簡単なXMLの例:

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

上記のXMLのXSD(説明):

<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>

ここに:

xs:element:要素を定義します。

xs:sequence:記述された順序でのみ表示される子要素を示します。

xs:complexType:他の要素が含まれていることを示します。

xs:simpleType:他の要素が含まれていないことを示します。

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

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

  • xsdでのタスクの実行は、xmlよりも簡単です。


こんにちは!XSDファイルの作成にはどのプログラムを使用しますか?
ジュディス

@ジュディスプログラム?あなたの質問を説明できますか?エディター、言語、ツールのように?
shubham1js

1

基本的に、XSDファイルは、XMLファイルがどのように見えるかを定義します。これは、XMLファイルの構造を定義するスキーマファイルです。したがって、可能なフィールドとはどのようなサイズになるかを指定します。

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


0

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

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

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.