如何定义xml里元素
使用XML多年了,但是一直没有关注过XML是如何定义的,今天看到了就补充一下XML的定义。
什么是DTD
Document Type Definition(文档类型定义),一句话总结DTD:是通过自己的语法来定义XML中有怎么样的结构、有哪些元素的定义文档的文件。
如何将自定义DTD写入XML
在XML中第二行中就是XML的定义,如下所示:
mapper为根节点元素名称,PUBLIC后第一个字符串为dtd名称,后为dtd路径。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "dtdtest" "dtdtest.dtd">
如何将自己编写DTD嵌入eclipse,用于提示和校验
eclipse中引入自己的DTD:
window->preference->搜索XML->XML Catalog->add->
(key为PUBLIC后第一个字符串为dtd名称,locatiob为dtd路径即可)
DTD语法简介
<?xml version="1.0" encoding="UTF-8" ?>
<!-- 定义mapper子节点只能为 select 或者update 可以有零个或多个 -->
<!ELEMENT mapper (select* | update*)>
<!-- 定义mapper属性1为namespace为字符类型,非必须的 -->
<!-- 定义mapper属性2为collection为字符类型,是必须的 -->
<!-- 定义mapper属性3为item为字符类型,是必须的 -->
<!-- 定义mapper属性4为type为枚举类型,是必须的(好像没作用)-->
<!ATTLIST mapper
namespace CDATA #IMPLIED
collection CDATA #REQUIRED
item CDATA #FIXED "item"
type (type1 |type2 |type3) #REQUIRED
>
<!-- 以上结构看明白就行,后续dtd只是为了dtd文件的完整性 -->
<!ATTLIST foreach
collection CDATA #REQUIRED
item CDATA #IMPLIED
index CDATA #IMPLIED
>
<!ATTLIST choose
collection CDATA #REQUIRED
item CDATA #IMPLIED
index CDATA #IMPLIED
>
<!ELEMENT select (foreach | choose)*>
<!ATTLIST select
id CDATA #REQUIRED
parameterMap CDATA #IMPLIED
resultSetType (FORWARD_ONLY) #IMPLIED
>
<!ELEMENT update (foreach | choose)*>
<!ATTLIST update
id CDATA #REQUIRED
parameterMap CDATA #IMPLIED
resultSetType (FORWARD_ONLY) #IMPLIED
>
注意事项
每次修改dtd文件后需要将文件重新嵌入eclipse中,最好不同路径下复制一份,两份来回切换。
否则dtd文件容易不生效
搬砖多年终不得要领,遂载源码看之望得真经。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?