ホームページ ウェブフロントエンド htmlチュートリアル XML 学習ノート 2??DTD_html/css_WEB-ITnose

XML 学習ノート 2??DTD_html/css_WEB-ITnose

Jun 24, 2016 pm 12:33 PM

前回のnoteでは、文書の種類を分類する際に、その文書がDTDとスキーマのどちらを使用し準拠しているかに基づいて、整形式XMLと有効なXMLに区別していました。では、DTDとスキーマとは何でしょうか。 DTD とスキーマはどちらも XML ドキュメントを標準化し、XML ドキュメントにセマンティック制約を課すために使用されます。一方、DTD はシンプルで使いやすく、スキーマは強力です。このnoteでは、まずDTD(Document Type Definition、文書型定義)について学びます。

1. XMLドキュメントでDTDを使用する方法

外部 DTDパブリック DTD
インポート方法 構文形式 手順
内部DTD

DTD 定義を XML ドキュメント内の Behind の直後に配置します。 XML 宣言と処理命令

例:

]>

<!DOCTYPE 根元素名[     元素描述]>
ログイン後にコピー

DTD をファイル内で個別に定義し、キーワード SYSTEM を使用して DTD をインポートします

例:

<!DOCTYPE 根元素名 SYSTEM "外部DTD的URI">
ログイン後にコピー

パブリック DTD、この DTD は通常、特定の業界または公共の使用のために権威ある組織によって指定され、キーワード PUBLIC

を通してインポートされます

例:

2. DTD 構造

DTD document これは XML ドキュメントそのものではありませんが、XML の意味上の制約を定義するドキュメントです。 DTD ドキュメントの構文は非常に単純で、次の構造になっています:

(1) 最初の行は DTD ドキュメントの宣言です。構文は XML の宣言と同じです

( 2) 0 から複数のコメント部分、DTD コメントは XML コメントと同じ構文になります

(3) 0 から複数の 定義、それぞれ XML 要素を定義します

(4) 0 からその他の は XML 要素の属性を定義します

(5) 0 から複数の 定義、各

(6) 0 から複数の 定義、それぞれ シンボルを定義します

そのうち 4 つは 、<です。 ;!NOTATION...> 定義は互いに完全に独立しており、相互にネストする必要はありません。以下で 4 つの定義を 1 つずつ説明します。

3. 要素の定義

(1) ETD と呼ばれる要素タイプの定義

(2) 要素タイプ

要素タイプ

定義形式。 A: #PCDATA は先頭に置く必要があります 説明
説明 任意のタイプ
要素は文字列、空の要素、またはサブ要素を含むことができます 文字列値
要素値 It文字列であり、空の要素ではなく、サブエレメントを含むこともできません。サブ要素間の順序やサブ要素の出現数などを詳細に定義する必要がある 混合型
指定できる値はいくつかの特定の型のみであり、どの型よりも強い制約がありますが、関数は可能な限り混合型を使用する必要があります 混合型の定義に関するいくつかのポイント:
B: #PCDATA と各サブ要素を区切るには縦棒 (|) のみを使用できます。カンマは使用しないでください C を区切る: サブ要素の後に ?、*、+ などの周波数修飾を使用しないでください。 シンボル (3) サブ要素を定義します
サブ要素の構文を定義します 説明 サブ要素の周波数修飾子

(サブ要素 1、サブ要素 2、...)

順序付けされたサブ要素を定義するには英語のカンマを使用します

デフォルト (修飾子なし)

表示一度だけ

4、定义属性

在XML中,属性不能单独存在,因此定义属性时必须指定属于哪个元素。定义属性的语法格式如下:

<!ATTLIST 属性所属的元素名称  属性名称  属性类型  [元素对属性的约束]  [默认值]>
ログイン後にコピー

(1)属性类型

(サブ要素 1|サブ要素 2|...) 垂直線を使用して相互に排他的な子要素を定義します ? は 0 回または 1 回発生します
((child要素 1、子要素 2) | (子要素 3、子要素 4)) 子要素をグループ化するには括弧を使用します + が 1 回以上出現します
(子要素 1|子要素 2|。 ..)+ 縦棒の相互排他を使用し、頻度変更を使用して順序のない子要素を定義します * が 0 回以上出現します
类型 说明
CDATA 该属性值只能是字符串数据
(en1|en2|en3) 该属性值必须是一系列枚举值之一
ID 该属性值必须是有些的标识符,且该属性值可用于标识该元素,因此必须在此XML文档中唯一
IDREF 该属性值必须是引用另一个已有的ID类型的属性值
IDREFS 该属性值必须是引用已有的一个或多个ID类型的属性值,多个ID类型的属性值之间使用空格分隔
NMTOKEN 该属性值必须是合法的XML名称,必须是字符串数据,比CDATA约束更强,只能由字母、数字、下划线、中划线,点号和冒号组成
NMTOKENS 该属性值必须是一个或多个NMTOKEN类型的属性值,多个使用空格分隔
ENTITY 该属性值是一个外部实体,比如图片
ENTITIES 该属性值是一个或多个ENTITY类型的属性值,多个使用空格分隔
NOTATION 该属性值是在DTD中声明过的符号(NOTATION),这是个将要过期的规范,尽量避免使用
xml: 该属性值是一个预定义的XML值

(2)元素对属性的约束与默认值的关系

元素对属性的约束 说明 默认值
未指定 必须指定默认值
#REQUIRED 必须的属性,必须为相应元素提供该属性 不能指定默认值
#IMPLIED 该属性可有可无 不能指定默认值
#FIXED 该属性值是固定的,定义时必须指定固定值 必须指定默认值

5、定义实体

实体引用就是用一个字符串代替另一个字符串,类似于C语言中的宏,上一篇笔记中已经提到过XML中内置的5个实体引用,在这里接着看看怎么自定义实体引用。

实体类型 使用场所 定义语法 使用语法 说明
普通实体 XML &实体名;
参数实体 DTD %实体名; 必须在使用前先定义
外部实体 XML &实体名; 这里外部文件必须是满足XML文档结构的文本文档
公用外部实体 XML &实体名;
外部参数实体 DTD %实体名;
公用外部参数实体 DTD %实体名;
未解析实体 XML 需要通过ENTITY等类型的属性调用 未解析实体不能由XML文档解析,而需要根据相应的符号名去解析
公用未解析实体 XML

6、定义符号

定义符号也有两种语法格式,分别定义普通符号和公用符号:

符号类型 定义语法
普通符号
公用符号

符号值通常有两种形式:

(1)MIME:通用MIME类型的文件总是由相应的程序负责处理

(2)外部程序所在路径:直接指定某个外部程序负责处理XML文档中的外部数据

符号通常有两种用途:

(1)如上,符号可以用来定义未解析实体

(2)符号可以作为ENTITY或ENTITIES类型的属性值

(3)符号还可以作为NOTATION类型的属性的值,定义NOTATION类型的属性时,语法如下:

<!ATTLIST 属性所属的元素 属性名 NOTATION  (值1|值2|...) 约束 默认值>
ログイン後にコピー

比一般的属性定义多一个值的列表。

 

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

&lt; Progress&gt;の目的は何ですか 要素? &lt; Progress&gt;の目的は何ですか 要素? Mar 21, 2025 pm 12:34 PM

この記事では、HTML&lt; Progress&gt;について説明します。要素、その目的、スタイリング、および&lt; meter&gt;との違い要素。主な焦点は、&lt; Progress&gt;を使用することです。タスクの完了と&lt; Meter&gt; statiの場合

&lt; datalist&gt;の目的は何ですか 要素? &lt; datalist&gt;の目的は何ですか 要素? Mar 21, 2025 pm 12:33 PM

この記事では、HTML&lt; Datalist&GT;について説明します。オートコンプリートの提案を提供し、ユーザーエクスペリエンスの改善、エラーの削減によりフォームを強化する要素。

&lt; meter&gt;の目的は何ですか 要素? &lt; meter&gt;の目的は何ですか 要素? Mar 21, 2025 pm 12:35 PM

この記事では、html&lt; meter&gt;について説明します。要素は、範囲内でスカラーまたは分数値を表示するために使用され、Web開発におけるその一般的なアプリケーション。それは差別化&lt; Meter&gt; &lt; Progress&gt;およびex

HTML5のクロスブラウザー互換性のベストプラクティスは何ですか? HTML5のクロスブラウザー互換性のベストプラクティスは何ですか? Mar 17, 2025 pm 12:20 PM

記事では、HTML5クロスブラウザーの互換性を確保するためのベストプラクティスについて説明し、機能検出、プログレッシブエンハンスメント、およびテスト方法に焦点を当てています。

HTML5フォーム検証属性を使用してユーザー入力を検証するにはどうすればよいですか? HTML5フォーム検証属性を使用してユーザー入力を検証するにはどうすればよいですか? Mar 17, 2025 pm 12:27 PM

この記事では、ブラウザのユーザー入力を直接検証するために、必要、パターン、MIN、MAX、および長さの制限などのHTML5フォーム検証属性を使用して説明します。

ビューポートメタタグとは何ですか?レスポンシブデザインにとってなぜそれが重要なのですか? ビューポートメタタグとは何ですか?レスポンシブデザインにとってなぜそれが重要なのですか? Mar 20, 2025 pm 05:56 PM

この記事では、モバイルデバイスのレスポンシブWebデザインに不可欠なViewportメタタグについて説明します。適切な使用により、最適なコンテンツのスケーリングとユーザーの相互作用が保証され、誤用が設計とアクセシビリティの問題につながる可能性があることを説明しています。

HTML5&lt; time&gt;を使用するにはどうすればよいですか 日付と時刻を意味的に表す要素? HTML5&lt; time&gt;を使用するにはどうすればよいですか 日付と時刻を意味的に表す要素? Mar 12, 2025 pm 04:05 PM

この記事では、html5&lt; time&gt;について説明します。セマンティックデート/時刻表現の要素。 人間の読み取り可能なテキストとともに、マシンの読みやすさ(ISO 8601形式)のDateTime属性の重要性を強調し、Accessibilitを増やします

&lt; iframe&gt;の目的は何ですか タグ?使用する際のセキュリティ上の考慮事項は何ですか? &lt; iframe&gt;の目的は何ですか タグ?使用する際のセキュリティ上の考慮事項は何ですか? Mar 20, 2025 pm 06:05 PM

この記事では、&lt; iframe&gt;外部コンテンツをWebページ、その一般的な用途、セキュリティリスク、およびオブジェクトタグやAPIなどの代替案に埋め込む際のタグの目的。

See all articles