> 백엔드 개발 > XML/RSS 튜토리얼 > DTD에 대한 자세한 설명

DTD에 대한 자세한 설명

黄舟
풀어 주다: 2017-02-20 15:06:11
원래의
2075명이 탐색했습니다.

DTD상세 설명

기본 개요


문서 유형 정의(Document Type Definition)은 프로그램 간 데이터 교환을 위해 설정된 태그에 대한 문법 규칙 집합입니다. 이는 Standard Generalized Markup Language (SGML) 및 Extensible Markup Language (XML) 버전 1.0의 일부이며 아래에 문서화되어 있습니다. 일종의 DTD 구문 규칙은 형식이 이 규칙을 준수하는지 확인합니다. 문서 유형 정의를 사용하여 표준 범용 마크업 언어 및 확장 가능 마크업 언어 문서 형식의 적법성을 보장할 수도 있습니다. 문서를 문서 유형 정의 파일과 비교하여 문서가 사양을 준수하는지, 요소와 태그가 올바르게 사용되는지 확인할 수 있습니다. . 파일 인스턴스는 애플리케이션에 데이터 교환 형식을 제공합니다.

PS: 간단히 말해서, DTDXML을 제한하는 데 사용됩니다. 특정 사양에서 사용할 수 있도록 DTD 기술 외에 Schema 기술도 있습니다. 제한된 XML 문서에도 사용됩니다.

참고 문서: DTD http://www.php.cn/

참고 문서: 스키마 http://www.php.cn/

DTD도식

PS: DTD에 의해 제한됨, XMLDTD의 제약에 따라 사용자 정의할 수 있지만 DTD에는 단점이 있습니다. 데이터에 대한 수치 제한과 같은 범위 제한을 부과할 수 없습니다.

DTD문서 선언 및 참조

내부DTD문서

루트 요소 [정의 콘텐츠]>

외부DTD문서

루트 요소 SYSTEM "DTD 파일 경로">

내부 및 외부 DTD문서 조합

루트 요소 SYSTEM "DTD파일 경로" [

정의 내용

]>

참고:

1, 정의 키워드는 대문자로 시작해야 합니다. 예: 문서 유형, 요소, ATTLIST.

2,

참조된 파일이 로컬인 경우 다음 방법을 사용합니다.

문서 루트 노드 SYSTEM "DTD파일 URL">

예: bookshelf SYSTEM "book .dtd>

참조된 파일이 공용 파일인 경우 다음 방법이 사용됩니다.

문서 루트 노드 PUBLIC "DTD이름" "DTD 파일의 URL">

예: "-//Sun Microsystems, Inc.//DTD Web 애플리케이션 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

DTD요소

기본 구문

 

설명:

ELEMENT: 키워드 (대문자이어야 합니다).

NAME: 요소 이름입니다.

CONTENT: 네 가지 요소 유형이 있으며 모두 대문자로 시작해야 합니다.

 1, EMPTY - 이 요소는 하위 요소와 텍스트를 포함할 수 없으나 속성(빈 요소)은 가질 수 있습니다.

2, ANY - 이 요소는 DTD의 모든 항목을 포함할 수 있습니다. 🎜 >

3, #PCDATA에 정의된 요소 콘텐츠 - 모든 문자 데이터를 포함할 수 있지만 그럴 수는 없습니다. 모든 하위 요소 포함

4, 기타 유형 (조합) 은 하위 요소, 하위 요소와 수정자의 조합, 기본 요소, 하위 요소와 수정자의 조합일 수 있습니다.

사례:

학급 (학생+,저자)>학생(이름,나이,소개)>< ;!ELEMENT

저자 (#PCDATA)>

이름 (#PCDATA)>연령(#PCDATA)>소개 (#PCDATA)>

수식어

나열된 개체 중 하나를 선택하세요개체는 한 번 이상 나타나고 여러 번 나타날 수 있습니다 이 개체는 숫자에 상관 없이 0으로 표시될 수 있습니다. 횟수(이 개체는 나타날 수 있지만 한 번만 나타날 수 있습니다 ,
기호

목적

설명예

( )

은 요소를 그룹화하는 데 사용됩니다. |

진용
|

량위성),(왕숴 |우지에)두 그룹으로 나누어

|

(남자|

여자)

은 남자나 여자가 반드시 등장해야 한다는 뜻으로, 하나만 선택할 수 있습니다

+

(1

또는 여러 번)

(멤버+

)

은 멤버를 의미합니다. 반드시 나타나야 하며, 여러 명의 구성원이 나타날 수 있습니다. 구성원

*

0

여러번)

(취미*

)

취미는 0번에서 여러 번 나타날 수 있습니다

?

(0

~
1

) (신인?

)

신인은 할 수 있다 등장 여부는 최대 1번만 등장할 수 있습니다. >객체는 지정된 순서대로 나타나야 합니다

(watermelon,

사과
바나나)

는 수박,사과,바나나 순으로 나오라는 뜻이고, 이 순서로 등장합니다


DTD속성

기본 구문


요소 이름

속성 이름 유형 속성 특성

속성 이름 유형 속성 특성......

>

설명:

ATTLIST: 속성 목록, ( 대문자로 표기해야 합니다).

요소 이름: 해당 요소의 이름입니다.

속성: 여러 속성이 있을 수 있으며 형식은 이름 유형 속성 특성

유형:


PS: 주로 사용되는 것은 CDATA(문자형 ), 열거 ( 열거 형식은 (1|입니다. 2|3...)), ID(ID 은 반복될 수 없으며 ), IDREF(는 다른 ID를 나타냄)로 시작할 수 없습니다. ), IDREFS(는 여러 ID 공백으로 구분된 값 )

속성 특성은 다음과 같습니다.


사례:

rreee


Entity

엔터티에는 두 가지 유형이 있습니다. 참조 엔터티는

XML에서 일반적으로 사용되며, 매개변수 엔터티는 DTD. 기본 구문

엔티티 이름 "엔티티 콘텐츠" > // 참조 엔터티

엔티티 이름 "엔티티 콘텐츠" >

// 매개변수 엔터티설명:

1

, 참조 엔터티는

DTD에서 참조할 수 있습니다. 🎜 >XML 파일인 경우 &엔티티 이름;을 사용하여 엔터티 콘텐츠를 사용합니다. 2. 내 컴퓨터 때문인지는 모르겠지만 외부

DTD에서는 사용할 수 없습니다. 사용하려면 참조 엔터티 정의를 DTD 내부에서 사용할 수 있습니다. 3, 매개변수 엔터티는

DTD에서 사용되며, %엔티티 이름; 사용

4、可以将那些重复使用的值定义成实体,这样能减少代码的冗余度。

5、在外部DTD中,引用实体最好放在DTD底部,参数实体最好放在DTD顶部。

 

案例:

<!ENTITY % sex "男|女">
<!ELEMENT 班级 (学生+,作者)>
<!ELEMENT 学生 (名字,年龄,介绍)>
<!ELEMENT 作者 (#PCDATA)>
<!ATTLIST 学生
	性别 (%sex;) #REQUIRED
>
<!ELEMENT 名字 (#PCDATA)>
<!ELEMENT 年龄 (#PCDATA)>
<!ELEMENT 介绍 (#PCDATA)>
<!ENTITY writer "Switch">
로그인 후 복사


综合案例1

XML3.dtd

<!ENTITY % sex "男|女">
<!ELEMENT 班级 (学生+,作者)>
<!ATTLIST 班级
	班次 CDATA "1班"
	编号 ID #REQUIRED
>
<!ELEMENT 学生 (名字,年龄,介绍)>
<!ELEMENT 作者 (#PCDATA)>
<!ATTLIST 学生
	地址 CDATA #IMPLIED
	授课方式 CDATA #FIXED "面授"
	学号 ID #REQUIRED
	班级编号 IDREF #REQUIRED
	朋友 IDREFS #IMPLIED
	性别 (%sex;) #REQUIRED
>
<!ELEMENT 名字 (#PCDATA)>
<!ELEMENT 年龄 (#PCDATA)>
<!ELEMENT 介绍 (#PCDATA)>
로그인 후 복사


XML3.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- 引入DTD -->
<!DOCTYPE 班级 SYSTEM "XML3.dtd"
[<!ENTITY writer "Switch">]>
<班级 编号="C1" 班次="1班">
	<学生  地址="湖南" 授课方式="面授" 学号="n1" 班级编号="C1" 朋友="n2" 性别="男">
		<名字>张三</名字>
		<年龄>20</年龄>
		<介绍>不错</介绍>
	</学生>
	<学生 授课方式="面授" 学号="n2" 班级编号="C1" 朋友="n1 n3" 性别="女">
		<名字>李四</名字>
		<年龄>18</年龄>
		<介绍>很好</介绍>
	</学生>
	<学生 授课方式="面授" 学号="n3" 班级编号="C1" 朋友="n2" 性别="男">
		<名字>王五</名字>
		<年龄>22</年龄>
		<介绍>非常好</介绍>
	</学生>
	<作者>&writer;</作者>
</班级>
로그인 후 복사


综合案例2

XML4.dtd

<!ENTITY AUTHOR "John Doe">
<!ENTITY COMPANY "JD Power Tools, Inc.">
<!ENTITY EMAIL "jd@jd-tools.com">

<!ELEMENT CATALOG (PRODUCT+)>

<!ELEMENT PRODUCT
(SPECIFICATIONS+,OPTIONS?,PRICE+,NOTES?)>
<!ATTLIST PRODUCT
NAME CDATA #IMPLIED
CATEGORY (HandTool|Table|Shop-Professional) "HandTool"
PARTNUM CDATA #IMPLIED
PLANT (Pittsburgh|Milwaukee|Chicago) "Chicago"
INVENTORY (InStock|Backordered|Discontinued) "InStock">

<!ELEMENT SPECIFICATIONS (#PCDATA)>
<!ATTLIST SPECIFICATIONS
WEIGHT CDATA #IMPLIED
POWER CDATA #IMPLIED>

<!ELEMENT OPTIONS (#PCDATA)>
<!ATTLIST OPTIONS
FINISH (Metal|Polished|Matte) "Matte" 
ADAPTER (Included|Optional|NotApplicable) "Included"
CASE (HardShell|Soft|NotApplicable) "HardShell">

<!ELEMENT PRICE (#PCDATA)>
<!ATTLIST PRICE
MSRP CDATA #IMPLIED
WHOLESALE CDATA #IMPLIED
STREET CDATA #IMPLIED
SHIPPING CDATA #IMPLIED>

<!ELEMENT NOTES (#PCDATA)>
로그인 후 복사


XML4.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE CATALOG SYSTEM "XML4.dtd">
<CATALOG>
	<PRODUCT NAME="C&#39;estbon" CATEGORY="Shop-Professional" INVENTORY="Backordered" PARTNUM="10" PLANT="Chicago">
		<SPECIFICATIONS POWER="0" WEIGHT="555ml">SPECIFICATIONS</SPECIFICATIONS>
		<OPTIONS>OPTIONS</OPTIONS>
		<PRICE>2</PRICE>
		<NOTES>NOTES</NOTES>
	</PRODUCT>
</CATALOG>
로그인 후 복사

 以上就是DTD详解的内容,更多相关内容请关注PHP中文网(www.php.cn)!


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿