Extensible Markup Language(XML)とXML Schema(XSD)の違いは何ですか?
Extensible Markup Language(XML)とXML Schema(XSD)の違いは何ですか?
回答:
実際、XSDはXMLそのものです。その目的は、別のXMLドキュメントの構造を検証することです。XSDはどのXMLにも必須ではありませんが、XMLを特定の目的に使用できることを保証します。XMLには、適切な形式と構造のデータのみが含まれています。
<?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.
例をとる
<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です。
.. などなど ...
<root> <A>A</A> <B/> <C/> </root>
およびノードがあれば<A>
ある<A>B</A>
、そして作る<B>
場合、必須<A>C</A>
その後、作る<C>
必須。
XSD:
XSD(XMLスキーマ定義)は、拡張マークアップ言語(XML)ドキュメントの要素を正式に記述する方法を指定します。
Xml:
XMLはデータを記述するために設計されました。ハードウェアだけでなくソフトウェアからも独立しています。
以下の機能を強化します。
-データ共有。
-プラットフォームに依存しない。
-データの可用性の向上。
違い:
XSDはXMLに基づいて作成されています。
XSDはドキュメントに表示できる要素と構造を定義しますが、XMLは定義しません。
XSDはデータが適切に解釈されることを保証しますが、XMLはそうではありません。
XSDドキュメントはXMLとして検証されますが、その逆が常に当てはまるとは限りません。
XSDは、XMLよりもエラーの捕捉に優れています。
XSD は、エンコードに使用される実際のデータに関連して、ドキュメントで使用できる要素を定義します。
例:
2010年1月12日として表される日付は、1月12日または12月1日を意味します。XSDドキュメントで日付データ型を宣言すると、XSDで指定された形式に従うことが保証されます。
<school>
<firstname>John</firstname>
<lastname>Smith</lastname>
</school>
<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よりも簡単です。
XMLはf.exよりもはるかに広いアプリケーションを持っています。HTML。組み込みの、つまりデフォルトの「アプリケーション」はありません。したがって、Webページが許可されているものによっても管理されていることをあまり気にしないかもしれませんが、作成者の側からは、XMLドキュメントに含まれる内容と含まれない内容を正確に定義する必要があります。
データベースを設計するようなものです。
XMLテクノロジーの重要な点は、XMLテクノロジーが本質的にテキストであるということです。XSDを使用すると、PHPなどのテキスト処理ツールに「プラグイン」できるデータ構造定義フレームワークがあることになります。そのため、データ自体を操作できるだけでなく、構造を簡単に変更および文書化し、フロントエンドを自動生成することもできます。
このように見ると、XSDはデータ(XML)とデータ処理ツールの間の「接着剤」または「ミドルウェア」です。