在上一篇笔记中,将文档类型分类时,曾经根据文档是否使用并遵守了DTD或Schema来区分为格式良好的XML和有效的XML,那么什么是DTD和Schema呢?DTD和Schema都是用来规范XML文档的,对XML文档进行语义约束的,DTD简单易用,Schema则功能强大。在这篇笔记中,首先学习一下DTD(Document Type Definition,文档类型定义)。
1、在XML文档中怎么使用DTD
导入方式 | 语法格式 | 说明 |
内部DTD |
<!DOCTYPE 根元素名[ 元素描述]> | 将DTD定义放在XML文档内部,紧跟在XML声明和处理指令后面 如:
]> |
外部DTD |
<!DOCTYPE 根元素名 SYSTEM "外部DTD的URI"> | 将DTD单独定义在一个文件内,然后通过关键字SYSTEM导入DTD 如: |
公用DTD |
<!DOCTYPE 根元素名 PUBLIC "DTD的标识名" "公用DTD的URI"> | 公用DTD,这种DTD一般是由某个权威机构指定,供特定行业或公众使用,通过关键字PUBLIC导入 如: |
2、 DTD的结构
DTD文档本身不是XML文档,而只是为XML定义语义约束的文档,DTD文档的语法非常简单,大致有如下结构:
(1)第一行是DTD文档的声明,语法和XML的声明相同
(2)0到多个注释部分,DTD注释与XML注释语法相同
(3)0到多个定义,每个定义一个XML元素
(4)0到多个定义,每个为XML元素定义一个属性
(5)0到多个定义,每个定义一个实体
(6)0到多个定义,每个定义一个符号
其中、、、4个定义彼此完全独立,无须互相嵌套,下面就逐一说明这四种定义。
3、定义元素
(1)元素类型定义,Element Type Definition,简称ETD
(2) 元素类型
元素类型 | 定义格式 | 说明 |
任意类型 | 元素可以是字符串,可以是空元素,也可以包含子元素 | |
字符串值 | 元素值只能是字符串,不可以是空元素,也不能包含子元素 | |
空元素 | ||
包含子元素 | 比较复杂,需要详细定义子元素之间的顺序以及子元素出现的次数等 | |
混合类型 | 指定值只能是几个确定的类型,比任意类型有更强的约束,但功能相当,应尽量使用混合类型 |
关于混合类型的定义,说明几点:
A:#PCDATA必须放在最前面
B:#PCDATA和各子元素之间只能用竖线(|)分隔,不要使用逗号分隔
C:不要在子元素之后使用?、*、+等表示频率的修饰符
(3)定义子元素
定义子元素的语法 | 说明 | 子元素的出现频率修饰词 | 说明 |
(子元素1,子元素2,...) | 使用英文逗号定义有序的子元素 | 默认(没有修饰词) | 出现一次,且只能出现一次 |
(子元素1|子元素2|...) | 使用竖线定义互斥的子元素 | ? | 出现0或1次 |
((子元素1,子元素2)|(子元素3,子元素4)) | 使用括号将子元素分组 | + | 出现1或多次 |
(子元素1|子元素2|...)+ | 使用竖线互斥,然后使用频率修饰实现定义无序的子元素 | * | 出现0或多次 |
4、定义属性
在XML中,属性不能单独存在,因此定义属性时必须指定属于哪个元素。定义属性的语法格式如下:
<!ATTLIST 属性所属的元素名称 属性名称 属性类型 [元素对属性的约束] [默认值]>
(1)属性类型
类型 | 说明 |
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|...) 约束 默认值>
比一般的属性定义多一个值的列表。

Self-ClosingTagsinhtmlandxMlaretagsThatCloseThemselvess withoutseeparateClosingTag, 1) theareStement-well-formeddocuments.2) indugible-ustible butrr

강력한 기능과 우수한 사용자 경험을 가진 웹 사이트를 구축하기 위해서는 HTML만으로는 충분하지 않습니다. 다음 기술도 필요합니다. JavaScript는 웹 페이지 동적 및 상호 작용을 제공하며 DOM을 운영하여 실시간 변경을 달성합니다. CSS는 미학 및 사용자 경험을 향상시키기 위해 웹 페이지의 스타일과 레이아웃을 담당합니다. React, Vue.js 및 Angular와 같은 현대 프레임 워크 및 라이브러리는 개발 효율성 및 코드 조직 구조를 향상시킵니다.

부울 속성은 값없이 활성화되는 HTML의 특수 속성입니다. 1. 부울 속성은 입력 상자를 비활성화하는 등의 존재 여부에 따라 요소의 동작을 제어합니다. 2. 작업 원칙은 브라우저가 구문 분석 할 때 속성의 존재에 따라 요소 동작을 변경하는 것입니다. 3. 기본 사용법은 속성을 직접 추가하는 것이며, 고급 사용량은 JavaScript를 통해 동적으로 제어 될 수 있습니다. 4. 일반적인 실수는 값을 설정해야한다고 잘못 생각하고 올바른 글쓰기 방법은 간결해야합니다. 5. 모범 사례는 코드를 간결하게 유지하고 부울 속성을 합리적으로 사용하여 웹 페이지 성능 및 사용자 경험을 최적화하는 것입니다.

HTML 코드는 온라인 유효성 검사기, 통합 도구 및 자동화 된 프로세스를 통해 깨끗할 수 있습니다. 1) w3cmarkupvalidationservice를 사용하여 온라인으로 HTML 코드를 확인하십시오. 2) 실시간 확인을 위해 VisualStudioCode에 HTMLHINT 확장을 설치하고 구성하십시오. 3) htmltidy를 사용하여 시공 프로세스에서 HTML 파일을 자동으로 확인하고 청소하십시오.

HTML, CSS 및 JavaScript는 최신 웹 페이지를 구축하기위한 핵심 기술입니다. 1. HTML 웹 페이지 구조를 정의합니다. 2. CSS는 웹 페이지의 모양을 담당합니다.

HTML의 기능은 웹 페이지의 구조와 내용을 정의하는 것이며, 그 목적은 정보를 표시하는 표준화 된 방법을 제공하는 것입니다. 1) HTML은 타이틀 및 단락과 같은 태그 및 속성을 통해 웹 페이지의 다양한 부분을 구성합니다. 2) 콘텐츠 및 성능 분리를 지원하고 유지 보수 효율성을 향상시킵니다. 3) HTML은 확장 가능하므로 사용자 정의 태그가 SEO를 향상시킬 수 있습니다.

HTML의 미래 트렌드는 의미론 및 웹 구성 요소이며 CSS의 미래 트렌드는 CSS-In-JS 및 CSShoudini이며, JavaScript의 미래 트렌드는 WebAssembly 및 서버리스입니다. 1. HTML 시맨틱은 접근성과 SEO 효과를 향상시키고 웹 구성 요소는 개발 효율성을 향상 시키지만 브라우저 호환성에주의를 기울여야합니다. 2. CSS-in-JS는 스타일 관리 유연성을 향상 시키지만 파일 크기를 증가시킬 수 있습니다. CSShoudini는 CSS 렌더링의 직접 작동을 허용합니다. 3. Webosembly는 브라우저 애플리케이션 성능을 최적화하지만 가파른 학습 곡선을 가지고 있으며 서버리스는 개발을 단순화하지만 콜드 스타트 문제의 최적화가 필요합니다.

웹 개발에서 HTML, CSS 및 JavaScript의 역할은 다음과 같습니다. 1. HTML은 웹 페이지 구조를 정의하고, 2. CSS는 웹 페이지 스타일을 제어하고 3. JavaScript는 동적 동작을 추가합니다. 그들은 함께 현대 웹 사이트의 프레임 워크, 미학 및 상호 작용을 구축합니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

Dreamweaver Mac版
시각적 웹 개발 도구

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기
