[解決済み] XML SchemaとDTDの違いは何ですか?
質問
ググってみたのですが、XMLスキーマとDTD(文書型定義)とは何か、なぜXMLスキーマの方がDTDより強力なのかがよくわかりません。
何かご指導いただければ幸いです。
解決方法は?
からの DTDとスキーマの違い のセクションは DTDをスキーマに変換する の記事を参照してください。
DTDと決定的に違うのは とXMLスキーマは、XMLスキーマが はXMLベースの構文を利用するのに対し DTDは、独自の構文を引き継いでいます。 SGMLのDTDから DTDは このため、よく批判されるのが 新しい構文を覚える必要がありますが、その構文は は、非常に簡潔なものです。その逆が XMLスキーマは 冗長でありながら、タグを活用し XMLの作者にとっては XMLスキーマの構文は のようなものです。
DTDの目的は、あるレベルを維持することでした。 のSGMLとの互換性 を希望するアプリケーションがあります。 SGMLのDTDをXMLのDTDに変換する。 しかし XMLの目標である「XMLマークアップのテラネス」。 は最小限の重要性しかありません。 シンタックスを維持することに は簡潔である。
[...]
では、DTDを変換する際に特に重要となるその他の違いにはどのようなものがあるのでしょうか。見てみましょう。
型付け
DTDとXML Schemaの最も大きな違いは、Schemaで要素や属性の宣言と一緒にデータ型を作成し、使用することができる点である。実際、XML Schema勧告の半分がデータタイピングとXML Schemaに割かれているほど、重要な違いなのです。データ型については、本書の第III部「XML Schema Datatypes」で詳しく説明しています。
[...]
オカレンス制約
DTDとSchemaが大きく異なるもう一つの領域は、出現制約です。第2章、"Schema Structure"の以前の例(またはDTDを使った独自の作業)を思い出すと、要素の出現回数を制限するために使用できる記号が3つあります。*、+、?
[...]
列挙
例えば、シャツの要素に size 属性を定義して、ユーザーが small, medium, large のどれかのサイズを選択できるようにしたいとします。DTDは次のようになります。
<!ELEMENT item (shirt)> <!ELEMENT shirt (#PCDATA)> <!ATTLIST shirt size_value (small | medium | large)>
[...]
しかし、もし
size
を要素にすることができますか?DTDではそれができない。DTDは、要素のテキストコンテンツに列挙を提供しません。しかし、Schemaによるデータ型のため、前の例で列挙を宣言したとき、実際にはsimpleType
というsize_values
というように、要素で使用できるようになりました。<xs:element name="size" type="size_value">
[...]
関連
-
[解決済み] ウェブサービスのレスポンスにおけるtext/xmlとapplication/xmlの違いは何ですか?
-
[解決済み] PHPでHTML/XMLをパースして処理する方法とは?
-
[解決済み] XMLの<![CDATA[]]>は何を意味するのですか?
-
[解決済み] XMLを解析して、特定のノード属性のインスタンスをカウントするには?
-
[解決済み] XML文書でエスケープする必要がある文字は何ですか?
-
[解決済み] DTDやXSDからサンプルXMLドキュメントを生成する方法は?
-
[解決済み] 大容量ファイルを扱える軽量なXMLビューア【終了しました
-
[解決済み] XMLの属性値で二重引用符をエスケープするには?
-
[解決済み] IIS7:HTTP->HTTPS クリーンアップ
-
[解決済み] Notepad++:ファイルを読み込むときに自動的に言語をXmlに設定する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] XMLの要素とノードはどう違うのですか?
-
[解決済み] XPathによる属性の取得
-
[解決済み] foo "を含む属性を選択するための正しいXPathは何ですか?
-
[解決済み] T-SQLでXML文字列の属性にある二重引用符をエスケープするにはどうすればよいですか?
-
[解決済み] XPath contains()の使い方を教えてください。
-
[解決済み] XMLサイトマップのContent-Typeはどのような値ですか?
-
[解決済み] Notepad++:ファイルを読み込むときに自動的に言語をXmlに設定する方法
-
[解決済み] SVG テキストの自動改行
-
[解決済み] Ubuntu 11.04でRパッケージがインストールできない [非公開]
-
[解決済み] Eclipse で XML の検証を無効にする