検索

前回の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 をインポートします

例: スト SYSTEM "モデル リスト DTD ファイルの相対パスまたは絶対パス">

<!DOCTYPE 根元素名 SYSTEM "外部DTD的URI">

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

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

例: プリケーション 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

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 つは 、、、 定義は互いに完全に独立しており、相互にネストする必要はありません。以下で 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 までご連絡ください。
HTML、CSS、およびJavaScriptの理解:初心者向けガイドHTML、CSS、およびJavaScriptの理解:初心者向けガイドApr 12, 2025 am 12:02 AM

webdevelopmentReliesOnhtml、css、andjavascript:1)htmlStructuresContent、2)cssStylesit、および3)Javascriptaddsinteractivity、形成、

HTMLの役割:Webコンテンツの構造HTMLの役割:Webコンテンツの構造Apr 11, 2025 am 12:12 AM

HTMLの役割は、タグと属性を使用してWebページの構造とコンテンツを定義することです。 1。HTMLは、読みやすく理解しやすいようなタグを介してコンテンツを整理します。 2。アクセシビリティとSEOを強化するには、セマンティックタグなどを使用します。 3. HTMLコードの最適化により、Webページの読み込み速度とユーザーエクスペリエンスが向上する可能性があります。

HTMLとコード:用語を詳しく見るHTMLとコード:用語を詳しく見るApr 10, 2025 am 09:28 AM

htmlisaspecifictypeofcodefocuseduructuringwebcontent

HTML、CSS、およびJavaScript:Web開発者に不可欠なツールHTML、CSS、およびJavaScript:Web開発者に不可欠なツールApr 09, 2025 am 12:12 AM

HTML、CSS、およびJavaScriptは、Web開発の3つの柱です。 1。HTMLは、Webページ構造を定義し、などなどのタグを使用します。2。CSSは、色、フォントサイズなどのセレクターと属性を使用してWebページスタイルを制御します。

HTML、CSS、およびJavaScriptの役割:コアの責任HTML、CSS、およびJavaScriptの役割:コアの責任Apr 08, 2025 pm 07:05 PM

HTMLはWeb構造を定義し、CSSはスタイルとレイアウトを担当し、JavaScriptは動的な相互作用を提供します。 3人はWeb開発で職務を遂行し、共同でカラフルなWebサイトを構築します。

HTMLは初心者のために簡単に学ぶことができますか?HTMLは初心者のために簡単に学ぶことができますか?Apr 07, 2025 am 12:11 AM

HTMLは、簡単に学習しやすく、結果をすばやく見ることができるため、初心者に適しています。 1)HTMLの学習曲線はスムーズで簡単に開始できます。 2)基本タグをマスターして、Webページの作成を開始します。 3)柔軟性が高く、CSSおよびJavaScriptと組み合わせて使用​​できます。 4)豊富な学習リソースと最新のツールは、学習プロセスをサポートしています。

HTMLでの開始タグの例は何ですか?HTMLでの開始タグの例は何ですか?Apr 06, 2025 am 12:04 AM

Anexampleapalofastartingtaginhtmlis、それはaperginsaparagraph.startingtagsaresentionentientiontheyinitiateelements、definetheirtypes、およびarecrucialforurturingwebpagesandcontingthomedomを構築します。

CSSのフレックスボックスレイアウトを使用して、メニューの点線のラインセグメンテーション効果のセンターアラインメントを実現する方法は?CSSのフレックスボックスレイアウトを使用して、メニューの点線のラインセグメンテーション効果のセンターアラインメントを実現する方法は?Apr 05, 2025 pm 01:24 PM

メニューで点線のラインセグメンテーション効果を設計する方法は?メニューを設計するときは、通常、皿の名前と価格の間に左右に合わせることは難しくありませんが、真ん中の点線またはポイントはどうですか...

See all articles

ホット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ヘンタイを無料で生成します。

ホットツール

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン