【Java】Java核心 73:XML (中)

news/2024/10/29 0:30:24/

文章目录

      • 5 XML的组成:字符区(了解)
      • **6** **DTD约束(能够看懂即可)**
        • **1** **什么是DTD**
        • **2** **DTD约束的实现和语法规则(看懂dtd约束,书写符合规范的xml文件)**


在这里插入图片描述

5 XML的组成:字符区(了解)

当大量的转义字符出现在xml文档中时,会使XML文档的可读性大幅度降低。这时如果使用CDATA段就会好一些。

CDATA (Character Data)字符数据区,格式如下:

<![CDATA[文本数据   < >  & ; " "
]]>
  1. CDATA 指的是不应由 XML 解析器进行解析的文本数据(Unparsed Character Data)
  2. CDATA 部分由 <![CDATA[开始,由 ]]> 结束;

例如:

<![CDATA[if salary < 1000 then
]]

快捷模板:CD 回车

在这里插入图片描述

注意:

​ CDATA 部分不能包含字符串 “]]>”。也不允许嵌套的 CDATA 部分。

​ 标记 CDATA 部分结尾的 “]]>” 不能包含空格或折行。

小结:

  • 字符区的特点:
    • 原样显示(书写的内容不会被xml解析器解析)

6 DTD约束(能够看懂即可)

1 什么是DTD

DTD(Document Type Definition),文档类型定义,用来约束XML文档。规定XML文档中元素的名称,子元素的名称及顺序,元素的属性等。

2 DTD约束的实现和语法规则(看懂dtd约束,书写符合规范的xml文件)

开发中,我们不会自己编写DTD约束文档,通常情况我们都是通过框架提供的DTD约束文档,编写对应的XML文档。

需求:接下来我们创建一个dtd约束文档,然后按照约束文档书写符合规范的xml文件。

我们先新建一个books.xml文件。

第一步:在项目下面创建一个dtd的文件夹,然后选中文件夹,鼠标右击,新创键一个books.xml文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oTtoRvkX-1687767096552)(imgs\8.bmp)]

第二步:我们先书写books.xml文件中的内容:

<?xml version="1.0" encoding="UTF-8"?>
<books><book><name>面试宝典</name><author>锁哥</author><price>78.8</price></book><book><name>java从入门到精通</name><author>黑旋风</author><price>88.8</price></book>
</books>

经过上述四步我们就将books.xml文件书写完毕,接下来我们开始书写DTD约束。

关于DTD约束我们能够看懂即可。如下所示就是上述books.xml文件引入了DTD约束。

简单的DTD约束就写好了,如下所示:

我们直接将如下约束复制到我们上述书写好的books.xml文件中即可,能够读懂即可。

<?xml version="1.0" encoding="UTF-8"?>
<!-- 1.在xml内部定义dtd约束的声明 : <!DOCTYPE 根元素 [元素声明]>2.xml的元素(标签)的声明: <!ELEMENT 元素名称 (元素内容)><!ELEMENT books (book)> 表示books标签下是book标签<!ELEMENT book (name,author,price)> 表示的是book标签下出现的name,author,price子标签<!ELEMENT name (#PCDATA)> 表示name标签中出现的内容是文本--><!DOCTYPE books [<!--约束根标签 book* 表示books标签下可以有多个book子标签* + ? 和正则表达式中表示的意思是一样的* :  0 1 n+ : 1 n? :  0 1--><!ELEMENT books (book*)><!--约束book标签--><!ELEMENT book (name,author,price)><!--约束name,author,price标签 但是这三个标签下就是文本了#PCDATA 表示标签下内容是文本--><!ELEMENT name (#PCDATA)><!ELEMENT author (#PCDATA)><!ELEMENT price (#PCDATA)>]>
<books><book><name>面试宝典</name><author>锁哥</author><price>78.8</price></book><book><name>java从入门到精通</name><author>黑旋风</author><price>88.8</price></book>
</books>

说明:

1)xml中出现的标签,也叫做元素。那么我们书写的约束可以规范xml中到底能出现哪些标签。除此之外都不能出现。

所以xml中出现的标签都需要我们开发者在dtd约束中声明一下。只有声明了这个标签,xml中才能出现这个标签。如果约束中没有声明,那么xml中就不能出现。

所以,xml中出现的标签需要使用如下的语法(也就是xml中元素的声明语法)。

在xml内部定义dtd约束的声明 :

 <!DOCTYPE 根元素 [元素声明]>

xml的元素(标签)的声明:

<!ELEMENT 元素名称 (元素内容)>

元素名:自定义。

元素内容包括:符号、数据类型和标签。

常见符号:? * + () |

常见数据类型:#PCDATA 表示内容是文本,不能是子标签。

标签:就是正常子标签。

2)由于 <!ELEMENT book (name,author,price)> 顺序是name,author,price,所以下面的顺序也得是:

<book><name>面试宝典</name><author>锁哥</author><price>78.8</price>
</book>

前后顺序不能换。

接下来对上述代码的标签添加属性,比如给book属性添加一个address地址,表示将书存放到哪里。

添加属性之后的代码如下所示:

<!DOCTYPE books [<!--约束根标签 book* 表示books标签下可以有多个book子标签* + ? 和正则表达式中表示的意思是一样的--><!ELEMENT books (book*)><!--约束book标签--><!ELEMENT book (name,author,price)><!--约束name,author,price标签 但是这三个标签下就是文本了#PCDATA 表示标签下内容是文本--><!ELEMENT name (#PCDATA)><!ELEMENT author (#PCDATA)><!ELEMENT price (#PCDATA)><!ATTLIST book address CDATA "图书馆"id      ID    #REQUIRED>]>
<books><book address="藏经阁" id="a1"><name>面试宝典</name><author>锁哥</author><price>78.8</price></book><book id="a2"><name>java从入门到精通</name><author>黑旋风</author><price>88.8</price></book>
</books>

对上述声明属性进行解释说明:

元素名称: 表示该属性使用在哪个标签上;

属性名称: 表示在标签上添加的属性名字;

属性类型: 添加的属性类型。

属性类型有如下几种:

​ 类型 描述

CDATA 值为字符数据 (character data)

​ (en1|en2|…) 此值是枚举列表中的一个值

ID 值为唯一的 id

默认值: 表示最开始给属性的默认值。

​ 值 解释

​ 值 属性的默认值

#REQUIRED 属性值是必需的

​ #IMPLIED 属性不是必需的

​ #FIXED value 属性值是固定的



在这里插入图片描述


http://www.ppmy.cn/news/597891.html

相关文章

使用自定义 C++ 类扩展 TorchScript

使用自定义 C 类扩展 TorchScript 本教程是自定义运算符教程的后续教程&#xff0c;并介绍了我们为将 C 类同时绑定到 TorchScript 和 Python 而构建的 API。 该 API 与pybind11非常相似&#xff0c;如果您熟悉该系统&#xff0c;则大多数概念都将转移过来。 用 C 实现和绑定…

Qt绘图高级编程-绘制文本

注意&#xff1a;以下代码是在paintEvent函数中使用的&#xff0c;坐标是在文本的左下角。 1、设置字体样式 /*-----------1、设置字体样式-----------*///设置画家写字的字体//字体名&#xff0c; 字体大小&#xff0c;粗体&#xff0c;是否斜体QFont font( "楷体"…

购买诺基亚手机须知

一、米井06井&#xff0c;是查手机的序列号&#xff01; 二、米井0000井&#xff0c;查看手机的版本、出厂日期和手机型号&#xff01; 三、米井92702689井&#xff0c;查看手机的总计时器&#xff0c;要买全新手机的就可以用这个&#xff0c;如果没有用过的就显示000000&#…

手机指令

在手机拨号界面可以指执行的命令&#xff0c;手机指令报备防止遗忘。 调出华为手机的工程菜单&#xff1a; 星#星#2846579#星#星 星#星#2846579159#星#星 通用指令&#xff1a;常用的加粗标记 *#06# 显示IMEI号&#xff1b; *#92702689# 总通话时间 *#7370# 格式化诺基亚手机 *…

android raw照相格式,支持RAW格式 Android 5.0升级拍照

无损格式的优势在于能够存储完全未加工的原始图像信息&#xff0c;最大化还原CMOS所记录的内容&#xff0c;在进行后期调整时尤为有用。比如上图的样张&#xff0c;Nexus 5所拍摄的JPEG样张存在明显的偏黄现象&#xff0c;即便更改白平衡效果也依然有限&#xff1b;但通过RAW&a…

读发布!设计与部署稳定的分布式系统(第2版)笔记13_断路器与舱壁

1. 电路保险丝 1.1. 保险丝通过自身率先失效&#xff0c;控制整体的系统失效方式 1.2. 当遇到电阻时&#xff0c;电流产生的热量与电流强度的平方和电阻的乘积&#xff08;I^2R&#xff09;成正比 1.3. 在房子着火前先行熔断&#xff0c;切断电路并避免火灾 1.4. 民用保险丝…

NOKIA 5320 智能手机 格式化可以修复系统

由于安装的软件过多导致S60系统目录混乱了&#xff0c;所以想将手机系统恢复到出厂设置。 操作步骤&#xff1a; A、通过PC套件备份手机中重要信息&#xff0c;如联系人、短信、照片等。另软格机不会删除可移动内存卡的数据。 B、通过如下方法进行相应的格机操作。 软格机:…

如何Windows Phnoe 7系统的手机格式化

如何对Windows Phnoe 7系统手机格式化 &#xff08;从网上摘抄整理&#xff0c;已经试验成功&#xff0c;特此推荐。&#xff09; Windows Phnoe7硬启&#xff08;格式化&#xff09;的方式跟WM6系统。区别不大&#xff0c;第一种是在手机开机状态下于手机内格式化&#xff08;…