dtd约束

XML文件约束之DTD详解 目录1. 这些都是什么?为什么要学?目的是什么?2.标准的XML格式3.DTD3.1 内部DTD的定义,需要在顶部加入,语法如下:3.1.1 元素定义:3.1.2 属性定义:3.2 外部定义4.总结,思维导图本章来介绍一下,什么是XML,什么是DTD,还有一个跟DTD作用一样的Schema,以及为什么要学习这些东西,学习这两些东西的目的是什么。1. 这些都是什么?为什么要学?目的是什么? XML : 指可扩展标记语言(eXtensible Markup Language), 被设计用来传 阅读详情

dtd快速入门

创建dtd文件对上一篇的XML代码进行约束,代码如下,文件名为Demo1.dtd

1 <!ELEMENT person (name,age)>
2 <!ELEMENT name (#PCDATA)>
3 <!ELEMENT age (#PCDATA)>

 

上面的XML代码修改为

1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE person SYSTEM "Demo1.dtd">  //加入了这句
3 <person>
4     <name>张三</name>
5     <age>23</age>
6     
7 </person>

需要注意的地方:

约束在浏览器中打开不起作用,因为浏览器只负责校验XML语法,不负责校验约束,所以我们需要用到工具,我用的是myeclipse2017。

创建java项目,将xml文件和dtb文件都放到src下即可实现校验

dtd的三种引入方式

(1)引入外部dtd文件(即上面用到的)

<!DOCTYPE 根元素名称 SYSTEM "dtd文件路径">

(2)使用内部的dtd文件

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE person [
 3     <!ELEMENT person (name,age)>
 4     <!ELEMENT name (#PCDATA)>
 5     <!ELEMENT age (#PCDATA)>
 6 ]>
 7 
 8 <person>
 9     <name>张三</name>
10     <age>23</age>    
11 </person>

 

(3)使用外部的dtd文件

<!DOCTYPE 根元素  PUBLIC "dtd文件名称" "网络路径">

使用dtd定义元素

* 语法: <!ELEMENT  元素名  约束>

* 简单元素 :没有子元素的元素

      <!ELEMENT  name  (#PCDATA)>

      ***  (#PCDATA):约束name是字符串

      ***   EMPTY  :  元素为空

         ***  ANY: 任意

* 复杂元素 

<!ELEMENT 元素名称 (子元素名称 1,子元素名称 2,.....)>

当子元素按照由逗号分隔开的序列进行声明时,这些子元素必须按照相同的顺序出现在文档中。在一个完整的声明中,子元素也必须被声明,同时子元素也可拥有子元素。

声明只出现一次的元素

<!ELEMENT 元素名称 (子元素名称)>

声明最少出现一次的元素

<!ELEMENT 元素名称 (子元素名称+)>

声明出现零次或多次的元素

<!ELEMENT 元素名称 (子元素名称*)>

声明出现零次或一次的元素

<!ELEMENT 元素名称 (子元素名称?)>

声明多个元素只能出现其中一个

<!ELEMENT 元素名称 (子元素名称1 | 子元素名称2)>

dtd属性

语法

<!ATTLIST 元素名称 属性名称 属性类型 属性的约束>

示例

<!ATTLIST birthday ID1 CDATA #REQUIRED>

表示的事birthday的ID1这个属性为字符数据,而且属性值是必须出现的

 下面两个表格分别对应了属性类型及约束

实体的定义

语法:

<!ENTITY 实体名称 "实体的值">

示例:

<!ENTITY writer "Bill Gates">

使用实体:

<author>&writer;</author>

注意一般实体定义写在内部dtd里,因为外部dtd在某些浏览器下不支持

外部定义格式为:

<!ENTITY 实体名称 SYSTEM "URI/URL">

案例演练

下面是w3cSchool上的一个实例

电视节目表 DTD

<!DOCTYPE TVSCHEDULE [

<!ELEMENT TVSCHEDULE (CHANNEL+)>
<!ELEMENT CHANNEL (BANNER,DAY+)>
<!ELEMENT BANNER (#PCDATA)>
<!ELEMENT DAY (DATE,(HOLIDAY|PROGRAMSLOT+)+)>
<!ELEMENT HOLIDAY (#PCDATA)>
<!ELEMENT DATE (#PCDATA)>
<!ELEMENT PROGRAMSLOT (TIME,TITLE,DESCRIPTION?)>
<!ELEMENT TIME (#PCDATA)>
<!ELEMENT TITLE (#PCDATA)> 
<!ELEMENT DESCRIPTION (#PCDATA)>

<!ATTLIST TVSCHEDULE NAME CDATA #REQUIRED>
<!ATTLIST CHANNEL CHAN CDATA #REQUIRED>
<!ATTLIST PROGRAMSLOT VTR CDATA #IMPLIED>
<!ATTLIST TITLE RATING CDATA #IMPLIED>
<!ATTLIST TITLE LANGUAGE CDATA #IMPLIED>

]>

当我们可以对照这敲出对应的XML代码,就说明我们基本掌握了

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE TVSCHEDULE [
<!ELEMENT TVSCHEDULE (CHANNEL+)>
<!ELEMENT CHANNEL (BANNER,DAY+)>
<!ELEMENT BANNER (#PCDATA)>
<!ELEMENT DAY (DATE,(HOLIDAY|PROGRAMSLOT+)+)>
<!ELEMENT HOLIDAY (#PCDATA)>
<!ELEMENT DATE (#PCDATA)>
<!ELEMENT PROGRAMSLOT (TIME,TITLE,DESCRIPTION?)>
<!ELEMENT TIME (#PCDATA)>
<!ELEMENT TITLE (#PCDATA)> 
<!ELEMENT DESCRIPTION (#PCDATA)>

<!ATTLIST TVSCHEDULE NAME CDATA #REQUIRED>
<!ATTLIST CHANNEL CHAN CDATA #REQUIRED>
<!ATTLIST PROGRAMSLOT VTR CDATA #IMPLIED>
<!ATTLIST TITLE RATING CDATA #IMPLIED>
<!ATTLIST TITLE LANGUAGE CDATA #IMPLIED>
]>

<TVSCHEDULE NAME="CCTV">
    <CHANNEL CHAN="AAA">
        <BANNER>HHHH</BANNER>
        <DAY>
            <DATE>2018-7-26</DATE>
            <HOLIDAY>556</HOLIDAY>
            <PROGRAMSLOT VTR="saklda">
                <TIME>12-23</TIME>
                <TITLE>hello</TITLE>
            </PROGRAMSLOT>
        </DAY>
    </CHANNEL>
</TVSCHEDULE>
YOLOv8改进策略【Backbone/主干网络】| 2023 U-Net V2 替换骨干网络,加强细节特征的提取和融合 一、本文介绍 本文记录的是基于U-Net V2的YOLOv8目标检测改进方法研究。本文利用U-Net V2替换YOLOv8的骨干网络,UNet V2通过其独特的语义和细节融合模块(SDI),能够为骨干网络提供更丰富的特征表示。并且其中的注意力模块可以使网络聚焦于图像中与任务相关的区域,增强对关键区域特征的提取,进而提高模型精度。本文配置了原论文中pvt_v2_b0、pvt_v2_b1、pvt_v2_b2、pvt_v2_b3、pvt_v2_b4和pvt_v2_b5六种模型,以满足不同的需求。 文章目录一、本文 阅读详情

相关推荐

告别混乱!AutoSar BswM模式管理实战:手把手教你配置Rule与ActionList(附避坑指南)

本文详细解析了AutoSar BswM模式管理的实战配置,重点介绍了Rule与ActionList的高效组合方法,帮助开发者避免常见陷阱。通过具体案例演示了从基础到复杂的配置步骤,包括模式仲裁、逻辑表达式构建及ActionList优化策略,提升汽车电子系统的协调性与可靠性。

weixin_27066963的博客 259

DTD入门基础

,

m0_67771087的博客 989

EastWave应用案例:机箱屏蔽效能仿真

如何使用EastWave对机箱的电磁屏蔽效能进行仿真

2201_76034687的博客 1395

DTD的编写

DTD文档格式 内部的 DOCTYPE 声明格式 外部文档声明 使用外部的dtd文件网络上的dtd文件 DTD 构建模块 元素 元素声明使用下面的语法 元素内容可以是 属性 属性声明格式 属性类型的选项 默认值参数的选项 FIXED语法 列举属性值 实体 一个内部实体声明 一个外部实体声明 DTD文档格式 内部的 DOCTYPE 声明格式: &lt;!DOC

SIMBA1949的博客 1552

39、高频 LLC 谐振转换控制系统动态优化算法分析与研究

本文针对高频下LLC谐振转换器动态性能差的问题,提出一种基于谐振电容器充放电估计动态切换时间的优化控制算法。通过改进状态轨迹控制方法,突破传统算法在谐振频率与开关频率相等条件下的限制,并结合新型采样策略有效抑制电压过冲。算法在MATLAB和SABER中完成仿真验证,并搭建基于STM32F407的原型系统进行测试,结果表明该方法显著缩短动态响应时间,提升系统稳定性。研究为高频、高功率密度开关电源的动态优化提供了可行解决方案。

linux6sysadmin的博客 111

华为OD机试 - 不含101的数(Python/JS/C/C++ 双机位C卷 100分)

本专栏收录于《华为OD机试真题(Python/JS/C/C++)》。刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。小明在学习二进制时,发现了一类不含101的数,也就是:现在给定一个正整数区间,请问这个区间内包含了多少个不含101的数?输入的唯一一行包含两个正整数。输出的唯一一行包含一个整数,表示在区间内一共有几个不含101的数。8 1668 → “1000”

学Java,找哪吒 1250

什么是XML DTD(文档类型定义)

DTD(文档类型定义)是XML文档的结构约束规范,用于定义元素、属性和关系。它通过<!ELEMENT>规定标签内容和嵌套规则(如顺序、数量),通过<!ATTLIST>定义属性类型(ID/CDATA等)和特征(必填/可选)。典型应用包括书籍XML的结构定义,要求book元素必须包含title、author和price。尽管DTD能确保文档格式合规,但存在不支持数据类型、扩展性差等局限,现多被XML Schema取代。DTD适用于简单配置文件的验证场景。

andrew_dear的博客 729

基于 MFC 和 C++ 的语音识别客户端实现方案

语音 SDK:[Microsoft Speech SDK](https://learn.microsoft.com/zh-cn/azure/cognitive-services/speech-service/speech-sdk)(建议使用最新版)1. **Azure 语音服务密钥**:需要在 [Azure 门户](https://portal.azure.com/) 中创建语音资源,获取密钥和区域(如 `eastasia`),替换代码中的占位符。

寒寒豆豆软件公司的博客 155

DTD、XML阐述、XML的两种文档类型约束和DTD的使用

XML(可扩展标记语言)是一种用于存储和传输数据的标记语言,它具有自我描述性并且易于阅读。XML被广泛应用于各种领域,如网页开发、数据交换和配置文件等。XML的基本语法规则包括使用标签、属性和值来描述数据的结构和内容。标签用尖括号包围,属性以键值对的形式出现在标签中,值则位于标签的起始和结束之间。XML 语言没有预定义的标记。上面示例中的标记(如 和 )未在任何 XML 标准中定义。这些标记是由 XML 文档的作者“发明”的。

空空bye. 3907

YOLOv8改进,YOLOv8添加可变性卷积DCNv2

DCNv2对原始的DCNv1进行了改进,可变形卷积网络的卓越性能源于其适应对象几何变化的能力。通过对其自适应行为的检查,虽然对其神经特征的空间支持比常规的ConvNets更接近于对象结构,但这种支持可能远远超出感兴趣区域,导致特征受到不相关图像内容的影响。为了解决这个问题,我们提出了一种可变形卷积网的重新表述,通过提高建模能力和更强的训练,提高了其专注于相关图像区域的能力。通过更全面地集成网络中的可变形卷积,并引入扩展变形建模范围的调制机制,增强了建模能力。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 3606

面经-2023-联发科MTK-数字芯片设计

面经-2023-联发科MTK-数字芯片设计

w0shishabi的博客 2944

DTD文件编写

1、XML的DOCTYPE介绍   &lt;!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"&gt;   &lt;!DOCTYPE beans SYSTEM "http://www.springframework.org/dtd/spri...

iteye_19022的博客 284

基于FPGA的UDP 通信(一)

手头的FPGA开发板上有一个千兆网口,最近准备做一下以太网通信的内容。本文先介绍基本的理论知识。 FPGA芯片型号:xc7a35tfgg484-2 网口芯片:RTL8211 网络接口:RJ45

记录所学,分享知识,结识挚友 8360

xml之dtd约束详解

dtd约束 ELEMENT:定义标签 ATTLIST:定义属性 我们自定义一个dtd约束文件 <!ELEMENT Programmers (Programmer*) > <!-- 定义Programmers标签下有Programmer标签,*是正则规则,代表0次或多次 --> <!ELEMENT Programmer (name,age,code)> <!-- 定义Programmers标签下有name,age,code标.

林高禄 9643

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

DTD约束&schema约束学习

DTD约束 概念 ​ DTD是文档类型定义(Document Type Definition)。DTD 可以定义在 XML 文档中出现的元素、这些元素出现的次序、它们如何相互嵌套以及XML文档结构的其它详细信息。 约束体验 体验效果说明:当编写xml文档时不符合指定dtd约束时,进行提示xml编写错误,如下图: 体验步骤: 步骤1:复制bookshelf.dtd文件 步骤2:bookshelf.dtd文件内容如下 <!ELEMENT 书架 (书+)> <!ELEMENT 书 (书名,作者

weixin_43521028的博客 1231

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

DTD约束

DTD约束 DTD约束的介绍: DTD(Document Type Definition)文档类型定义,用来约束xml文档。规定xml文档中元素的名称,子元素的名称及顺序,元素的属性等等。 (Documnet Type Definition) DTD 是一套关于标记符的语法规则。它是XML1.0版规格得一部分,是XML文件的验证机制,属于XML文件组成的一部分。 DTD 是一种保证XML文档格式正...

Kobe Bryant 682

XML——XML文件约束之DTD详解

本文介绍了XML文件约束的概念,重点介绍了使用DTD约束XML文件,介绍了DTD的引用方式以及定义元素和属性的语法

Gavin 4万+

XML之DTD约束

一 DTD约束的基础知识 1 什么是DTD约束? DTD即是文档类型定义,可定义合法的XML文档构建模块,它使用一系列合法的元素来定义文档的结构。 2 内部的 DOCTYPE 声明 假如 DTD 被包含在您的 XML 源文件中,它应当通过下面的语法包装在一个 DOCTYPE 声明中: &lt;!DOCTYPE 根元素 [元素声明]&gt; 3 外部文档声明 假如 DTD 位于 XML 源文件的外...

Geffin的博客 407

xml之dtd约束

xml之dtd约束 xml约束的技术:主要有dtd约束和schema约束(面试题) 本次为dtd约束. dtd快速入门 dtd文件后缀为 dtd 看xml有多少个元素(标签),有几个元素(标签),就写几个<!ELEMENT>(大写) 看是复杂元素还是简单元素, 复杂元素:拥有子元素 * 格式:<!ELEMENT 元素名称 (子元素)> * 注意:中间必须要用空格 简单元素...

weixin_45311284的博客 268
上一篇: XML入门
下一篇: 《将博客搬至优快云》
独挽离人
博客等级 码龄9年 12粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值