xml学习总结(二)——dtd

2024-03-09 17:38
文章标签 xml 学习 总结 dtd

本文主要是介绍xml学习总结(二)——dtd,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 一、简单的dtd文件
    • 1.代码
    • 2.内容说明
  • 二、定义标签
  • 三、定义标签属性
    • 1.语法
    • 2.属性类型
    • 3.属性约束
  • 四、实体


一、简单的dtd文件

1.代码

dtd文件:

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

xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE person SYSTEM "./demo1.dtd">
<person><name>zhangsan</name><age>18</age>
</person>

2.内容说明

  1. 标签(元素)
    • 复杂元素:有子标签的元素,例如person

      <!ELEMENT 标签名称 (子标签)>
    • 简单元素:无子标签的元素,例如:nameage

      <!ELEMENT 标签名称 约束>
  2. xml中引入dtd文件
    语法:<!DOCTYPE 根标签名称 SYSTEM “dtd文件的路径”>

  1. dtd文件可以写在xml文件内部:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE person [<!ELEMENT person (name,age)><!ELEMENT name (#PCDATA)><!ELEMENT age (#PCDATA)>]>
<person><name>zhangsan</name><age>18</age>
</person>
  1. xml文件中子标签顺序要严格按照dtd中规定的写。
<!ELEMENT person (name,age)> <!-- name标签在age前面 -->

3.将,改为|时,标签只能出现其中一个。

<!ELEMENT person (name|age)> <!-- person的子标签只能存在name或者age -->

二、定义标签

  1. 简单标签:<!ELEMENT name (#PCDATA)>
    • 语法:<!ELEMENT 标签名称 约束>
    • 约束,如下表格:
约束含义
(#PCDATA)<name>内容</name>,内容是字符数据
EMPTY<name></name>,不存在内容
ANY<name>内容</name>,可以存在内容
  1. 复杂标签:<!ELEMENT person (name,age)>
    如上示例,name,age标签均只能出现一次,但子表签出现次数可以设置,如下:
符号次数
?出现零次或一次(<!ELEMENT person (name?,age)>)
+出现一次或多次(<!ELEMENT person (name+,age)>)
*出现零次或多次(<!ELEMENT person (name*,age)>)

三、定义标签属性

1.语法

<!ATTLIST 标签名 属性名 属性类型 约束>

2.属性类型

属性类型含义示例
CDATA属性值为字符串<!ATTLIST name id CDATA 约束>
枚举属性值为枚举范围中的一个<!ATTLIST name id (a|b|c) 约束>
ID属性值只能是字母下划线开头<!ATTLIST name id ID 约束>

3.属性约束

属性约束含义示例
#REQUIRED必须存在属性<!ATTLIST name id 属性类型 #REQUIRED>
#IMPLIED可以存在属性<!ATTLIST name id 属性类型 #IMPLIED>
#FIXED属性值固定,无法更改<!ATTLIST name id 属性类型 #FIXED "AAA">
属性值默认属性值,如果未设置,则使用默认值<!ATTLIST name id 属性类型 "AAA">

四、实体

内部实体

  1. 语法:<!ENTITY 实体名称 "实体的值">
  2. 示例:
<!-- dtd中定义实体 -->
<!DOCTYPE person [<!ELEMENT person (name, age)><!ELEMENT name (#PCDATA)><!ELEMENT age (#PCDATA)><!ENTITY entity "abc">]>
<!-- 在xml中引用实体 -->
<person><name>&entity;</name><age >18</age>
</person>

:实体写在内部dtd中,写在外部可能浏览器获取不到。

这篇关于xml学习总结(二)——dtd的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/791434

相关文章

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

Python利用ElementTree实现快速解析XML文件

《Python利用ElementTree实现快速解析XML文件》ElementTree是Python标准库的一部分,而且是Python标准库中用于解析和操作XML数据的模块,下面小编就来和大家详细讲讲... 目录一、XML文件解析到底有多重要二、ElementTree快速入门1. 加载XML的两种方式2.

Python实现图片分割的多种方法总结

《Python实现图片分割的多种方法总结》图片分割是图像处理中的一个重要任务,它的目标是将图像划分为多个区域或者对象,本文为大家整理了一些常用的分割方法,大家可以根据需求自行选择... 目录1. 基于传统图像处理的分割方法(1) 使用固定阈值分割图片(2) 自适应阈值分割(3) 使用图像边缘检测分割(4)

Windows Docker端口占用错误及解决方案总结

《WindowsDocker端口占用错误及解决方案总结》在Windows环境下使用Docker容器时,端口占用错误是开发和运维中常见且棘手的问题,本文将深入剖析该问题的成因,介绍如何通过查看端口分配... 目录引言Windows docker 端口占用错误及解决方案汇总端口冲突形成原因解析诊断当前端口情况解

Spring 基于XML配置 bean管理 Bean-IOC的方法

《Spring基于XML配置bean管理Bean-IOC的方法》:本文主要介绍Spring基于XML配置bean管理Bean-IOC的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一... 目录一. spring学习的核心内容二. 基于 XML 配置 bean1. 通过类型来获取 bean2. 通过

使用Python将JSON,XML和YAML数据写入Excel文件

《使用Python将JSON,XML和YAML数据写入Excel文件》JSON、XML和YAML作为主流结构化数据格式,因其层次化表达能力和跨平台兼容性,已成为系统间数据交换的通用载体,本文将介绍如何... 目录如何使用python写入数据到Excel工作表用Python导入jsON数据到Excel工作表用

java常见报错及解决方案总结

《java常见报错及解决方案总结》:本文主要介绍Java编程中常见错误类型及示例,包括语法错误、空指针异常、数组下标越界、类型转换异常、文件未找到异常、除以零异常、非法线程操作异常、方法未定义异常... 目录1. 语法错误 (Syntax Errors)示例 1:解决方案:2. 空指针异常 (NullPoi

SpringBoot中配置文件pom.xml的使用详解

《SpringBoot中配置文件pom.xml的使用详解》SpringBoot的pom.xml文件是Maven项目的核心配置文件,用于定义项目的依赖、插件、构建配置等信息,下面小编就来和大家详细介绍一... 目录1. 基本结构2. 关键部分详解2.1 <modelVersion>2.2 项目坐标2.3 <p

Java实现XML与JSON的互相转换详解

《Java实现XML与JSON的互相转换详解》这篇文章主要为大家详细介绍了如何使用Java实现XML与JSON的互相转换,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. XML转jsON1.1 代码目的1.2 代码实现2. JSON转XML3. JSON转XML并输出成指定的

Java反转字符串的五种方法总结

《Java反转字符串的五种方法总结》:本文主要介绍五种在Java中反转字符串的方法,包括使用StringBuilder的reverse()方法、字符数组、自定义StringBuilder方法、直接... 目录前言方法一:使用StringBuilder的reverse()方法方法二:使用字符数组方法三:使用自