DTD的概念及编写

简介: DTD的概念及编写

1.什么是DTD?


文档类型定义(约束)


2.什么是XML?


HTML:超文本标记语言   a/b/c/z

XML:可扩展标记语言  


3.XML的两种文档约束:


DTD:Schema


4.XML格式要求(合法XML)


1)有且只有一个根节点;

2)由开始标签和结束标签组成;

3)XML标签区分大小写;

4)正确嵌套标签;


5.使用DTD


5.1 在XML中加入DTD申明

1)内部申明:

2)外部申明:

5.2 元素定义语法(DTD对元素的限制)

基本语法:

元素分类:EMPTY     空元素

                (#PCDATA)  文本元素

                (e1,e2)    混合元素


元素限制:,(顺序)、|(或,多选一)、?(0或1次),*(1*0=0,0次或多次), +(1+0=1,1次或多次)

5.3 属性定义语法(DTD对属性的限制)

基本语法:

 

属性类型:ID/CDATA/ENUM (男|女)


设置说明:#REQUIRED(必须)/#IMPLIED(可选)


5.4 特殊符号转义

&(逻辑与)      -->  &

>(大于)     -->  >

<(小于)     -->  <

‘(单引号)     -->  '

“(双引号)     -->  "


person.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!-- 
1.DTD申明
1)内部申明:<!DOCTYPE 根节点[]>
2)外部申明:<!DOCTYPE 根节点 SYSTEM "DTD外部文件路径">
2.元素定义
1)语法:(!ELEMENT 元素名称 元素类型)
2)类型:
2.1)空元素:EMPTY
2.2)文本元素:(#PCDATA)
2.3)混合元素:(e1,e2,e3,...)
3)限制:
3.1),代表:元素出现的顺序
3.2)|代表:多选一
3.3)?代表:元素出现0次或1次(可有可无)
3.4)*代表:元素出现0次或n次
3.5)+代表:元素必须出现1次或n次
3.属性定义 attribute list
1)语法:<!ATTLIST 元素名称 属性名称 设置说明>
2)类型:
2.1)ID:唯一,不能以/或者数字开头
2.2)CATA:文本
2.3)枚举:多选一,例如:(男或女)
3)设置说明:
3.1)必须: #REQUIRED
3.2)可选:#IMPLIED
4.特殊字符转义
 -->
<!-- <!DOCTYPE persons[
  <!ELEMENT persons (person*)>
  <!ELEMENT person (name,age,contact,br?)>
  <!ELEMENT name (#PCDATA)>
  <!ELEMENT age (#PCDATA)>
  <!ELEMENT contact (phone|mail)>
  <!ELEMENT phone (#PCDATA)>
  <!ELEMENT mail (#PCDATA)>
  <!ELEMENT br EMPTY>
  <!ATTLIST person
  pid ID #REQUIRED
  paddr CDATA #IMPLIED
  psex(男|女|妖)
  >
]> -->
<!DOCTYPE config SYSTEM "person.dtd">
<persons>
  <person pid="p01" paddr="123" psex="男">
  <name>张三</name>
  <age>22</age>
  <contact>
    <phone>15882821111</phone>
  </contact>
  <br/>
  </person>
  <person pid="p02">
  <name>李四</name>
  <age>23</age>
  <contact>
    <mail>123@qq.com</mail>
  </contact>
  </person>
</persons>

person.dtd

<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT persons (person*)>
  <!ELEMENT person (name,age,contact,br?)>
  <!ELEMENT name (#PCDATA)>
  <!ELEMENT age (#PCDATA)>
  <!ELEMENT contact (phone|mail)>
  <!ELEMENT phone (#PCDATA)>
  <!ELEMENT mail (#PCDATA)>
  <!ELEMENT br EMPTY>
  <!ATTLIST person
  pid ID #REQUIRED
  paddr CDATA #IMPLIED
  psex(男|女|妖)
  >
相关文章
|
20天前
|
数据采集 人工智能 供应链
2025年适合汽车行业与互联网企业的BI产品选型指南
2025年,数字化转型加速,BI工具成企业决策核心。本文对比瓴羊Quick BI、Power BI、Tableau、永洪科技、Domo五大主流产品,从能力、行业适配、案例等维度解析,重点推荐阿里云旗下瓴羊Quick BI,其在汽车与互联网行业表现突出,兼具AI分析、高性能计算与信创合规优势,助力企业实现数据价值最大化。
|
24天前
|
JavaScript 小程序 Android开发
UniApp移动端开发 vs 原生开发:全面对比分析
本文全面对比UniApp与原生开发在语言、性能、成本、生态等方面的差异,深入解析两者技术原理与优化策略,结合启动速度、渲染性能、包大小等数据,提供适用场景推荐与混合开发方案,助力团队根据项目需求做出科学选型。
194 0
|
7月前
|
网络协议 网络安全 网络虚拟化
路由器详细讲解
路由器是连接不同网络并转发数据包的关键设备,工作在OSI模型第三层(网络层)。它通过路由表选择最佳路径,支持数据转发、NAT转换、防火墙保护等功能。路由器分为家用、商用和工业级,各有针对性的性能与功能。其配置包括硬件连接、登录管理界面及网络、无线、安全等设置,选购时需关注处理能力、无线速率、端口速率和功能需求等关键指标。
1069 22
|
2月前
|
Kubernetes 调度 微服务
无需接入执行器,0代码改造实现微服务任务调度
本文提出了一种基于云原生的任务调度新方案,不需要依赖SDK,不依赖语言,实现定时调度和分布式跑批
188 1
|
7月前
|
人工智能 自然语言处理 数据可视化
阿里云 Bolt.diy:一键开启全能开发,简单强大零门槛
Bolt.diy是Bolt.new的开源版本,通过自然语言交互简化开发流程,支持全栈开发与二次开发。依托多模态智能调度引擎和主流大模型,实现任务智能匹配、模块化部署及私有模型集成,大幅提升开发效率。平台提供代码自动生成、实时诊断优化与可视化工具,降低开发门槛。体验中发现其简单易用,但存在偶发卡顿问题。总体而言,Bolt.diy是一款高效实用的开发工具,适合新手与企业使用。
357 7
|
安全 网络协议 应用服务中间件
AJP Connector:深入解析及在Apache HTTP Server中的应用
【9月更文挑战第6天】在Java Web应用开发中,Tomcat作为广泛使用的Servlet容器,经常与Apache HTTP Server结合使用,以提供高效、稳定的Web服务。而AJP Connector(Apache JServ Protocol Connector)作为连接Tomcat和Apache HTTP Server的重要桥梁,扮演着至关重要的角色
495 2
|
人工智能 自然语言处理 文字识别
魔搭社区每周速递(8.18-8.24)
176个模型、35个数据集、85个创新应用、5篇应用文章
|
存储 JSON 安全
从入门到精通:Python中的OAuth与JWT,打造无懈可击的认证体系🔒
【8月更文挑战第4天】构建现代Web和移动应用时,用户认证与授权至关重要。Python集成OAuth和JWT技术,能轻松实现安全认证。本文从OAuth基础入手,介绍如何使用`requests-oauthlib`库简化流程,再到JWT进阶应用,利用`PyJWT`库生成及验证令牌。最后,探讨如何结合两者,创建无缝认证体验。通过代码示例,由浅入深地引导读者掌握构建坚固应用认证体系的方法。
401 2
|
12月前
|
人工智能 Serverless API
《多模态数据信息提取》解决方案评测体验
《多模态数据信息提取》解决方案,主要是通过先进的人工智能技术,能够识别和解析各种格式的文件,包括文本、图像、音频和视频,从而提取出有价值的信息,大幅提升数据处理效率。
430 7