作业:xml练习2-写.xml的外部约束文件(dtd文件)
写外部DTD:
步骤:
1.在srd目录下新建DTD文件,并命名为:scores.dtd
2.在练习1的基础上,剪切练习1的DTD内部声明。粘贴到一个新建的DTD文件中。剪切之后的地方换上:包含外部DTD的声明语句:<!DOCTYPE scores SYSTEM "scores.dtd">,新建的引入外部DTD文件的xml文件如下:
<?xml version="1.0" encoding="UTF-8"?> <!-- 引入外部DTD文件 --> <!DOCTYPE scores SYSTEM "scores.dtd"> <scores><student id="1"><name>王同</name><course>java</course><score>89</score></student><student id="2"><name>李佳</name><course>sql</course><score>58</score></student><student id="3"><name>王二狗</name><course>经济学原理</course><score>88</score></student><student id="4"><name>刘德华</name><course>怎样做一个好演员</course><score>100</score></student> </scores>
3.其中,scores.dtd文件的内容如下:
<?xml version="1.0" encoding="UTF-8"?> <!ELEMENT scores (student+)> <!ELEMENT student (name,course,score)> <!ATTLIST student id CDATA #REQUIRED> <!ELEMENT name (#PCDATA)> <!ELEMENT course (#PCDATA)> <!ELEMENT score (#PCDATA)>
4.一个可能要注意的地方是,当引入外部约束文件DTD文件之后,.xml文件就要包含元素name,course,score 了,如果在.xml文件中删去<score>100</score> 这一行,会报错(必须匹配name,course,score),如果没报错,把文件保存一下就行了。
下面是来自韩顺平老师上课的例子1(xml文件及其对应的约束文件):
1.xml文件:
<?xml version="1.0" encoding="UTF-8"?> <!--文件名:学生信息管理 --> <!--关键字'SYSTEM'代表.DTD文件来源于当前系统,而不是来源于网络 --> <!DOCTYPE 班级 SYSTEM "学生信息管理.dtd"> <班级><学生 地址="香港" 学号="tj1710008" 大哥="tj1710009 tj1710008" 性别="男"><姓名>刘德华</姓名><年龄>23</年龄><简单介绍>学习刻苦!</简单介绍></学生><学生 地址="台湾" 学号="tj1710009" 大哥="tj1710008 tj1710009"性别="女"><姓名>林志玲</姓名><年龄>22</年龄><简单介绍>学习刻苦!认真听讲!</简单介绍></学生> </班级>
2.对应的dtd约束文件:
<?xml version="1.0" encoding="UTF-8"?> <!--文件名:学生信息管理 --> <!ENTITY % myname "姓名"> <!--对于文件中多次出现的长字串,可以定义参数实体去替换 --> <!ELEMENT 班级 (学生+)> <!ELEMENT 学生 (%myname;,年龄,简单介绍)> <!--对于文件中多次出现的长字串,可以定义参数实体去替换 --> <!--"#REQUIRED"代表属性值是"必须"的 --> <!--"地址"这两个字是属性名字,是可以自定义的 --> <!--"ID"代表学号的属性值惟一,不可重复 --> <!--"DREFS"代表大哥的属性值是参考其他属性(学号)的属性值,DREF加个"S"代表可以有多个参考 --> <!--"(男|女)"代表是枚举,性别的属性值只能从括号中的值里面选择--> <!ATTLIST 学生 地址 CDATA #REQUIRED学号 ID #REQUIRED大哥 IDREFS #REQUIRED性别 (男|女) #REQUIRED > <!--(#PCDATA)代表简单介绍可以是任何文本 --> <!ELEMENT %myname; (#PCDATA)> <!--对于文件中多次出现的长字串,可以定义参数实体去替换 --> <!ELEMENT 年龄 (#PCDATA)> <!ELEMENT 简单介绍 (#PCDATA)> <!--引用实体在dtd文件里面定义,在xml文件中使用,最好定义在最后面,目的是给一串字符串起个别名--> <!ENTITY mycopy "我的公司版权"> <!--此时"我的公司版权"这一个长字符串在xml文件里面可以用"mycopy"代替,如果需要引用这个长字串的话-->
例子2:
1.dtd文件:
<!-- the filename is catalog.dtd --> <!-- A Sample Product Catalog DTD --><!-- This sample file is provided by Vervet Logic,for tutorial use with XML Pro. Questions shouldbe addressed to "support@vervet.com" or visit ourweb site at http://www.vervet.com --><!ENTITY AUTHOR "John Doe"> <!ENTITY COMPANY "JD Power Tools, Inc."> <!ENTITY EMAIL "jd@jd-tools.com"><!ELEMENT CATALOG (PRODUCT+)><!ELEMENT PRODUCT (SPECIFICATIONS+, OPTIONS?, PRICE+, NOTES?)> <!ATTLIST PRODUCT NAME CDATA #IMPLIEDCATEGORY (HandTool | Table | Shop-Professional) "HandTool"PARTNUM CDATA #IMPLIEDPLANT (Pittsburgh | Milwaukee | Chicago) "Chicago"INVENTORY (InStock | Backordered | Discontinued) "InStock"><!ELEMENT SPECIFICATIONS (#PCDATA)> <!ATTLIST SPECIFICATIONS WEIGHT CDATA #IMPLIEDPOWER CDATA #IMPLIED><!ELEMENT OPTIONS (#PCDATA)> <!ATTLIST OPTIONS FINISH (Metal | Polished | Matte) "Matte" ADAPTER (Included | Optional | NotApplicable) "Included"CASE (HardShell | Soft | NotApplicable) "HardShell"><!ELEMENT PRICE (#PCDATA)> <!ATTLIST PRICE MSRP CDATA #IMPLIEDWHOLESALE CDATA #IMPLIEDSTREET CDATA #IMPLIEDSHIPPING CDATA #IMPLIED><!ELEMENT NOTES (#PCDATA)>
2.对应的xml文件:
<?xml version="1.0" encoding="UTF-8"?> <!--the filename is 产品.dtd --> <!DOCTYPE CATALOG SYSTEM "catalog.dtd"> <CATALOG><PRODUCT CATEGORY="HandTool" INVENTORY="InStock" NAME="得胜" PARTNUM="abc" PLANT="Chicago"><SPECIFICATIONS WEIGHT="150KG" POWER="3000瓦">这里放说明书。</SPECIFICATIONS><OPTIONS FINISH="Matte" ADAPTER="Included" CASE="HardShell">这里是操作说明。</OPTIONS><PRICE>整机价格:RMB12000</PRICE><NOTES>这里写注意事项!</NOTES></PRODUCT> </CATALOG>
转载于:https://www.cnblogs.com/yibeimingyue/p/9961546.html
作业:xml练习2-写.xml的外部约束文件(dtd文件)相关推荐
- 使用Intellij IDEA创建XML文件, DTD文件和XML Schema文件
优质文章推荐,适合零基础小白XML入门(从是什么到怎么用) 创建XML文件 在我们要使用IDEA创建xml文件的时候,却发现并没有xml文件的这个选项,那我们就来构建一个xml模板 File -> ...
- struts2中struts.xml的http://struts.apache.org/dtds/struts-2.3.dtd文件路径
struts-2.3.35\src\core\src\main\resources\ 转载于:https://www.cnblogs.com/jichen/p/9767671.html
- tinyxml 读取文本节点_【C++】【TinyXml】xml文件的读写功能使用——写xml文件
TinyXml工具是常用比较简单的C++中xml读写的工具 需要加载 #include "TinyXml\tinyxml.h" 在TinyXML中,根据XML的各种元素来定义了一些 ...
- JAVA写XML乱码问题_java 写 xml 中文乱码
今天用java写xml文件,发现写完后xml文件的中文就变成了乱码, 解决办法:把xml文件的头部编码改为utf-8,StreamResult编码方式也改为utf-8. =============部分 ...
- tinyxml语法讲解之写xml
TinyXml 简介 Qt+TinyXML 环境搭建 环境搭建 TinyXML 框架解析 DOM 对象模型 类图关系 常用接口 写 XML TinyXml 简介 TinyXML 是一个开源的解析 XM ...
- SpringBatch 写xml文件(StaxEventItemWriter)用法(十四)
文章目录 一.pom文件引入需要读取xml文件jar包 二.抽取写xml文件公共writer 三.processor 四.配置写xml文件job 五.执行job 前言:在一些业务场景中,可能需要读取x ...
- 【C++】【TinyXml】xml文件的读写功能使用——写xml文件
TinyXml工具是常用比较简单的C++中xml读写的工具 需要加载 #include "TinyXml\tinyxml.h" 在TinyXML中,根据XML的各种元素来定义了一些 ...
- 02_Android写xml文件和读xml文件
新建Android项目 编写AndroidManifest.xml,使本Android项目具有单元测试功能和写外设的权限. <?xml version="1.0" en ...
- python 写xml_使用python 写xml文件
''' 开发一个给大百度的接口,各种要求,写一个xml文件,倒是不是很难 ''' import xml,datetime,codecs import xml.dom.minidom as minido ...
- mysql通用mapper_SpringBoot集成tk.mapper通用mapper,针对特殊业务也可写xml文件sql
首先创建项目一个maven项目引入如下依赖 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache ...
最新文章
- 批量删除注册表特定键值的小技巧
- SVM+HOG:从完全不包含人体的图片中随机剪裁出64*128大小的用于人体检测的负样本
- C语言学习之1到10的奇数相乘1到10的偶数相乘
- redhat linux加密卷
- WINCE中设置FTP用户密码
- 【树莓派学习笔记】五、处理、自动重命名并另存为图片
- eslint关闭===替换==;eslint关闭全等于校验;eslint关闭==校验
- php学籍信息管理系统心得_php实现学生管理系统
- 八、IO优化(7)减少IO竞争
- php使用redis作为消息队列
- 毕业设计——基于SSM的JAVA图书管理系统(有图书管理前台+后台)
- 数据库练习题归纳整理
- 第08篇:Mybatis事务处理
- linux安装lsi raid卡驱动下载,【LSIRAID卡驱动下载】LSIRAID卡官方驱动程序下载
- Delphi对象克隆技术
- 【bat】 创建一个文件的快捷方式
- 逆商助你回顾2019年迎面2020年
- python入门 数据类型(七种数据类型,序列,元素)
- 广州车展直击:现代汽车携豪华阵容共建未来汽车生态圈
- Dubbo结合Gateway实现微服务网关