当前位置:网站首页>DTD建模
DTD建模
2022-07-01 18:44:00 【時宜】
目录
一、什么是XML?
XML,Extensible Markup Language,扩展性标识语言。文件的后缀名为:.xml。就像HTML的作用是显示数据,XML的作用是传输和存储数据。
二、XML的作用?
为了便于不同应用、不同平台之间的数据共享和通信。
具体点的作用为:
(1)可作为一种简单的数据库,存储并检索数据;
(2)传输约定格式的文件;
(3)做软件的配置文件。【配置文件:保存软件设置的文件】
三、标准的XML格式
- 有且只有一个根元素
- XML标签大小写正确区分
- 正确使用结束标签
- 正确嵌套标签
- 使用了合法的标签名
- 定义有效的属性
四、元素定义
在XML加入DTD声明
<!DOCTYPE root[]>
元素的分类
<!ELEMENT element-name EMPTY>//空元素
<!ELEMENT element-name (#PCDATA)>//文本元素
<!ELEMENT element-name (e1,e2)>//混合元素
元素的限制
元素限制的符号
- 与:(,)
- 非:(|)
元素出现的次数
0或1次: ?
0~N次: *
1~N次: +
示例:
建立xml约束,首先得分析xml结构。
1、根标签persons有子标签
2、persons有子标签 混合标签(有子标签)
3、person有子标签:name、age、contact、br、混合标签(有子标签)
4、name,age没有子标签 混合标签(有子标签)
5、contact有子标签 混合标签(有子标签)
6、phone没有子标签,有内容,文本标签7、email没有子标签,有内容,文本标签
8、br既没有子标签也没有文本内容 空标签
代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE persons[
<!ELEMENT persons (person+)>
<!ELEMENT person (name,age,contact,br?)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT contact (phone|email)>
<!ELEMENT phone (#PCDATA)>
<!ELEMENT email (#PCDATA)>
<!ELEMENT br EMPTY>
]>
<persons>
<person>
<name>张小明</name>
<age>10</age>
<contact>
<phone>1234567</phone>
</contact>
<br/>
</person>
<person>
<name>张大明</name>
<age>35</age>
<contact>
<email>[email protected]</email>
</contact>
</person>
</persons>
五、属性定义
语法
<!ATTLIST element-name att_name type desc>
属性类型type
ID
(男|女)
CDATA(文本)
IDREF(引用)
reference
属性描述
#REQUIRED:必填
#IMPLIED:非必填
‘默认值’
注意:只有type为 (男|女)类型时,desc才可以用默认的方式
示例
属性约束
pid 属性类型为ID 必填
sex 属性类型为男女的选择 可设置默认值
qq 属性类型为文本 非必填
parent (引用某个id)属性类型为文本 非必填
代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE persons[
<!ELEMENT persons (person+)>
<!ELEMENT person (name,age,contact,br*)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT contact (phone|email)>
<!ELEMENT phone (#PCDATA)>
<!ELEMENT email (#PCDATA)>
<!ELEMENT br EMPTY>
<!ATTLIST person
pid ID #REQUIRED
sex (男|女) '男'
qq CDATA #IMPLIED
parent IDREF #IMPLIED
>
]>
<persons>
<person pid="p1" sex="男" qq="aaa" parent="p2">
<name>张小明</name>
<age>10</age>
<contact>
<phone>1234567</phone>
</contact>
<br/>
</person>
<person pid="p2">
<name>张大明</name>
<age>35</age>
<contact>
<email>[email protected]</email>
</contact>
</person>
</persons>
当我们不按约束填写时 就会造成报错 如下图
注意:元素名称与属性名称之间要有空格!!!
如果xml文件报错怎么办?
Window ==> Preferences ==>Validation 然后根据如下图所示勾选(默认是全选),最后应用关闭。注意:设置完成后后重启一下eclipse
边栏推荐
- Prices of Apple products rose across the board in Japan, with iphone13 up 19%
- Improve yolov5 with gsconv+slim neck to maximize performance!
- Openai video pre training (VPT): action learning based on watching unmarked online videos
- 太爱速M源码搭建,巅峰小店APP溢价寄卖源码分享
- 【Go ~ 0到1 】 第五天 7月1 类型别名,自定义类型,接口,包与初始化函数
- Chaos engineering platform chaosblade box new heavy release
- Solidity - 算术运算的截断模式(unchecked)与检查模式(checked)- 0.8.0新特性
- Cache problems after app release
- Learning notes - steps of JDBC connection database operation
- Helium transmission line of lake shore cryostat
猜你喜欢
华为游戏初始化init失败,返回错误码907135000
Dom4J解析XML、Xpath检索XML
3. "Create your own NFT collections and publish a Web3 application to show them" cast NFT locally
混沌工程平台 ChaosBlade-Box 新版重磅发布
Lake Shore低温恒温器的氦气传输线
中英说明书丨人可溶性晚期糖基化终末产物受体(sRAGE)Elisa试剂盒
Lumiprobe 活性染料丨吲哚菁绿说明书
Lumiprobe 自由基分析丨H2DCFDA说明书
Viewing the whole ecology of Tiktok from a macro perspective
More information about M91 fast hall measuring instrument
随机推荐
Openai video pre training (VPT): action learning based on watching unmarked online videos
【AGC】如何解决事件分析数据本地和AGC面板中显示不一致的问题?
CDGA|从事通信行业,那你应该考个数据管理证书
MATLAB中subplot函数的使用
C-end dream is difficult to achieve. What does iFLYTEK rely on to support the goal of 1billion users?
linux下清理系统缓存并释放内存
精耕渠道共谋发展 福昕携手伟仕佳杰开展新产品培训大会
云服务器ECS夏日省钱秘籍,这次@老用户快来领走
数商云:从规划到落地,五矿集团如何快速构建数字化发展新格局?
Graduation summary
Solution: you can ping others, but others can't ping me
洞态在某互联⽹⾦融科技企业的最佳落地实践
kubernetes命令入门(namespaces,pods)
PostgreSQL varchar[] 数组类型操作
M91 fast hall measuring instrument - better measurement in a shorter time
毕业总结
How to use the low code platform of the Internet of things for personal settings?
数据仓库(四)之ETL开发
Three ways for redis to realize current limiting
How to realize the bottom layer of read-write lock in go question bank 16