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

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

WBOY
WBOYオリジナル
2016-06-24 12:33:431143ブラウズ

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

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

外部 DTD
インポート方法 構文形式 手順
内部DTD

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

例: 132742ae6a675c6bc9d97ff7bace0dca

]>

<!DOCTYPE 根元素名[     元素描述]>

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

例: d3a746c88cadf52dede7dd4811b4fc5b

2. DTD 構造

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

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

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

(3) 0 から複数の fcd660e03c08654ee9512f1d4a7d89ff XML 要素を定義します

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

(5) 0 から複数の 92be6b45fe0b84037af52084f3d59530

(6) 0 から複数の 9dbac70fe7742591af09579a27f80b0eシンボルを定義します

そのうち 4 つは bbfe022067457a4b49db0fef48244a91、9dc71515bfc0e797ceea2f5a6fdad63f、9c5fa95a5e92eb0e81a8a2fb61d4e35a、1d84d3a9fab0f8f8c5fb95f5b2e16380 定義は互いに完全に独立しており、相互にネストする必要はありません。以下で 4 つの定義を 1 つずつ説明します。

3. 要素の定義

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

(2) 要素タイプ

要素タイプ

定義形式620ba87490a3beeb7f4f45be79427538。 A: #PCDATA は先頭に置く必要があります 説明
説明 任意のタイプ
指定できる値はいくつかの特定の型のみであり、どの型よりも強い制約がありますが、関数は可能な限り混合型を使用する必要があります 混合型の定義に関するいくつかのポイント:
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 f6701d43a6602d2b1bddd3314888121a &实体名;  
参数实体 DTD 33765f3db4a4f87a0ce377e07b6ef9a9 %实体名; 必须在使用前先定义
外部实体 XML 45223d92d67a471d8aa418c07c553844 &实体名; 这里外部文件必须是满足XML文档结构的文本文档
公用外部实体 XML 6aac85f33d84c658fd3542675d8fdda5 &实体名;  
外部参数实体 DTD 364efaa3ef353d39e6fdfd5f1874fb78 %实体名;  
公用外部参数实体 DTD 91c2898167f83894552848e9fe14aac7 %实体名;  
未解析实体 XML 076f232aa9e658c37746fe037adbd428 需要通过ENTITY等类型的属性调用 未解析实体不能由XML文档解析,而需要根据相应的符号名去解析
公用未解析实体 XML 16f7b8c015db549d96c6a7ff75c506e7

6、定义符号

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

符号类型 定义语法
普通符号 87305a241d10ab5f20e6b60def27653b
公用符号 7d246b2c0dae669d0773fab845ef04ed

符号值通常有两种形式:

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

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

符号通常有两种用途:

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

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

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

<!ATTLIST 属性所属的元素 属性名 NOTATION  (值1|值2|...) 约束 默认值>

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

 

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