XML的dtd约束

 XML约束之DTD的使用


(1)为什么要有约束?
 XML都是用户自定义的标签,若出现小小的错误,软件程序将不能正确地获取文件中的内容而报错。(如:Tomcat)
XML技术中,可以编写一个文档来约束一个XML的书写规范,这个文档称之为约束。
两个概念:格式良好的XML:遵循XML语法的XML。有效的XML:遵循约束文档的XML
总之:约束文档定义了在XML中允许出现的元素名称、属性及元素出现的顺序等等。
(2)XML约束概述
     XML约束概念:在XML技术里,可以编写一个文档来约束一个XML文档的书写规范,这称之为XML约束。
     常用的约束技术:XML DTD 和XML Schema
(3)DTD约束快速入门
    DTD(Document Type Definition),全称为文档类型定义。
   book.xml
[html] view plain copy
<span style="font-size:18px;"><?xml version="1.0" ?>  
<!DOCTYPE书架  SYSTEM "book.dtd">  
<书架>  
    <书>  
        <书名>葵花宝典</书名>  
        <作者>东方不败</作者>  
        <售价>59.00元</售价>  
    </书>  
    <书>  
        <书名>九阳神功</书名>  
        <作者>张无忌</作者>  
        <售价>57.00元</售价>  
    </书>  
</书架>  
</span>  
   book.dtd
[html] view plain copy
<span style="font-size:18px;"><!ELEMENT 书架 (书+)>  
    <!ELEMENT 书 (书名,作者,售价)>  
    <!ELEMENT 书名 (#PCDATA)>  
    <!ELEMENT 作者 (#PCDATA)>  
    <!ELEMENT 售价 (#PCDATA)>  
</span>  
复杂标签:<!ELEMENT 标签名 (子节点)>
简单标签:<!ELEMENT 标签名 (#PCDATA)>
引入DTD:<!DOCTYPE 根节点 SYSTEM  "dtd的地址">


 (4)将DTD与XML文档关联的三种形式
   DTD约束既可以作为一个单独的文件编写,也可以在XML文件内编写。
使用内部DTD 。<!DOCTYPE 根节点  [DTD的代码]>
使用外部DTD。<!DOCTYPE 根节点 "DTD的地址">
使用网络DTD。<!DOCTYPE 根节点 PUBLIC  "DTD的名称"  "DTD的地址">
      常见的使用网络DTD约束有Struts2的框架。
  在XML文件内编写DTD
[html] view plain copy
<span style="font-size:18px;"><?xml version="1.0" encoding="UTF-8" standalone="yes"?>  
<!DOCTYPE 书架 [  
    <!ELEMENT 书架 (书+)>  
    <!ELEMENT 书 (书名,作者,售价)>  
    <!ELEMENT 书名 (#PCDATA)>  
    <!ELEMENT 作者 (#PCDATA)>  
    <!ELEMENT 售价 (#PCDATA)>  
]>  
<书架>  
    <书>  
        <书名>Java就业培训教程</书名>  
        <作者>张孝祥</作者>  
        <售价>39.00元</售价>  
    </书>  
    ...  
</书架>  
</span>  
XML使用DOCTYPE声明语句来指明它所遵循的DTD文档,有两种形式:
当引用的DTD文档在本地时,采用如下方式:
<!DOCTYPE 根元素 SYSTEM “DTD文档路径”>
如:<!DOCTYPE 书架 SYSTEM “book.dtd”>
当引用的DTD文档在公共网络上时,采用如下方式:
<!DOCTYPE 根元素 PUBLIC “DTD名称” “DTD文档的URL”>
如:<!DOCTYPE web-app PUBLIC 
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
DTD约束语法细节


(1)DTD-定义元素
在DTD文档中使用ELEMENT关键字来声明一个XML元素。
语法:<!ELEMENT 元素名称  使用规则>
使用规则:
(#PCDATA)指示元素的主题内容只能是普通的文本。
EMPTY:用于指示元素的主体为空。比如<br/>
ANY:用于指示元素的主题内容为任意类型。
(子元素):指示元素中包含的子元素。
定义子元素及描述它们的关系:
  1) 如果子元素用逗号隔开,必须按照声明顺序去编写XML文档。
     例如:<!ELEMENT FILE(TITLE, AUTHOR, EMAIL)>
  2)如果子元素用"|" 分开,说明任选其一。
     例如:<!ELEMENT FILE(TITLE|AUTHOR|EMAIL)>
  3)用+、*、? 来表示元素出现的次数。
     如果元素后面没有+*?表示必须且只能出现一次。
     +:表示至少出现一次,一次或多次。
     *:表示可有可无,零次、一次或多次。
     ?:表示可以有也可以无,有的话只能出现一次。零次或一次。
    如:<!ELEMENT MYTITLE((TITLE*,AUTHOR?,EMAIL))*|COMMIT> 
(2)元素内容的类型
打开链接下载源码: https://pan.quark.cn/s/e23b4cd62d42 Linux运维工程师在IT行业扮演着核心的角色,他们承担着对基于Linux操作系统的服务器进行维护和管理的职责,以保障系统的稳定性和运行效率。Linux运维职业的学习和发展路径是结构化且周密的,它包含了从入门到精通的多个层次。以下是对这一主题的深入解析: 一、入门知识阶段 在Linux运维的学习初期,首要任务是掌握Linux操作系统的基本理念和常用指令。这涉及到对Linux不同发行版(例如Ubuntu、CentOS、Red Hat等)的认识,熟悉文件系统的构造,熟练运用文件和目录操作(诸如ls、cd、mkdir、rm等),以及掌握vi/vim等文本编辑器的使用方法。除此之外,学习Linux中的用户和权限管理、进程管理、网络设置和监控也是这一阶段需要重点关注的内容。 二、高级技术阶段 在基础知识的积累之后,需要进一步深入理解Linux内核、Shell脚本编程、系统服务和守护进程的管理。这一阶段应该熟练运用grep、awk、sed等数据处理工具,以及crontab定时任务的设定。同时,要学会通过系统日志进行故障排查,比如查看/var/log目录下的各种日志文件。对于网络服务的配置与管理,如HTTP(Apache或Nginx)、FTP、DNS、DHCP等,也具有非常重要的意义。 三、自动化与编程脚本 在当代运维工作中,自动化是提升工作效率的关键要素。学习Python或Perl等编程语言,编写自动化脚本来处理日常任务,例如系统备份、监控告警、数据整理等。了解Ansible、Puppet、Chef等配置管理工具,能够帮助实现更大范围的系统部署和管理。 四、性能调优与监控 掌握系统性能参...
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值