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

相关文章

C#中读取XML文件的四种常用方法

《C#中读取XML文件的四种常用方法》Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具,下面我们就来看看C#中读取XML文件的方法都有哪些吧... 目录XML简介格式C#读取XML文件方法使用XmlDocument使用XmlTextReader/XmlTextWr

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

Python中连接不同数据库的方法总结

《Python中连接不同数据库的方法总结》在数据驱动的现代应用开发中,Python凭借其丰富的库和强大的生态系统,成为连接各种数据库的理想编程语言,下面我们就来看看如何使用Python实现连接常用的几... 目录一、连接mysql数据库二、连接PostgreSQL数据库三、连接SQLite数据库四、连接Mo

Git提交代码详细流程及问题总结

《Git提交代码详细流程及问题总结》:本文主要介绍Git的三大分区,分别是工作区、暂存区和版本库,并详细描述了提交、推送、拉取代码和合并分支的流程,文中通过代码介绍的非常详解,需要的朋友可以参考下... 目录1.git 三大分区2.Git提交、推送、拉取代码、合并分支详细流程3.问题总结4.git push

Kubernetes常用命令大全近期总结

《Kubernetes常用命令大全近期总结》Kubernetes是用于大规模部署和管理这些容器的开源软件-在希腊语中,这个词还有“舵手”或“飞行员”的意思,使用Kubernetes(有时被称为“... 目录前言Kubernetes 的工作原理为什么要使用 Kubernetes?Kubernetes常用命令总

在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码

《在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码》在MyBatis的XML映射文件中,trim元素用于动态添加SQL语句的一部分,处理前缀、后缀及多余的逗号或连接符,示... 在MyBATis的XML映射文件中,<trim>元素用于动态地添加SQL语句的一部分,例如SET或W

Python xmltodict实现简化XML数据处理

《Pythonxmltodict实现简化XML数据处理》Python社区为提供了xmltodict库,它专为简化XML与Python数据结构的转换而设计,本文主要来为大家介绍一下如何使用xmltod... 目录一、引言二、XMLtodict介绍设计理念适用场景三、功能参数与属性1、parse函数2、unpa

关于Maven中pom.xml文件配置详解

《关于Maven中pom.xml文件配置详解》pom.xml是Maven项目的核心配置文件,它描述了项目的结构、依赖关系、构建配置等信息,通过合理配置pom.xml,可以提高项目的可维护性和构建效率... 目录1. POM文件的基本结构1.1 项目基本信息2. 项目属性2.1 引用属性3. 项目依赖4. 构

Python中实现进度条的多种方法总结

《Python中实现进度条的多种方法总结》在Python编程中,进度条是一个非常有用的功能,它能让用户直观地了解任务的进度,提升用户体验,本文将介绍几种在Python中实现进度条的常用方法,并通过代码... 目录一、简单的打印方式二、使用tqdm库三、使用alive-progress库四、使用progres

使用Python实现批量访问URL并解析XML响应功能

《使用Python实现批量访问URL并解析XML响应功能》在现代Web开发和数据抓取中,批量访问URL并解析响应内容是一个常见的需求,本文将详细介绍如何使用Python实现批量访问URL并解析XML响... 目录引言1. 背景与需求2. 工具方法实现2.1 单URL访问与解析代码实现代码说明2.2 示例调用