xml约束

来源:互联网 发布:遗传算法的基本步骤 编辑:程序博客网 时间:2024/05/01 20:56

 

XML文档的分类
格式不良好(malformed)的xml文档:完全

没有遵守xml文的基本规范的xml文档。
格式良好(well-formed)的但无效的xml文

档: 遵守xml文的基本规范,但没有使用

dtd或schema定义语义约束的xml文档。
有效(valid)的xml文档:遵守xml文的基

本规范,并使用dtd或schema定义语义约束

,而且也完全遵守了dtd或schema定义语

义约束的xml文档。


XML约束概述
什么是XML约束
在XML技术里,可以编写一个文档来约束

一个XML文档的书写规范,这称之为XML约

束。
为什么需要XML约束
常用的约束技术
XML DTD
XML Schema

例子:
文件清单:book.xml
<?xml version="1.0" ?>
<!DOCTYPE 书架 SYSTEM "book.dtd">
<书架>
 <书>
  <书名>Java就业培训教

程</书名>
  <作者>redarmy</作者>
  <售价>39.00元</售价>
 </书>
 <书>
  <书名>JavaScript网页

开发</书名>
  <作者>redarmy</作者>
  <售价>28.00元</售价>
 </书>
</书架>
文件清单:book.dtd
 
<!ELEMENT 书架 (书+)>
 <!ELEMENT 书 (书名,作者,售价)>
 <!ELEMENT 书名 (#PCDATA)>
 <!ELEMENT 作者 (#PCDATA)>
 <!ELEMENT 售价 (#PCDATA)>

 

XML文件使用 DOCTYPE 声明语句来指明它所遵循的DTD文件,DOCTYPE声明语句有两种形式:

当引用的文件在本地时,采用如下方式:
  <!DOCTYPE 文档根结点 SYSTEM "DTD文件的URL">
 例如: <!DOCTYPE 书架 SYSTEM “book.dtd”>。在xml文件中手写一下。

当引用的文件是一个公共的文件时,采用如下方式: 
  <!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">

food.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE food [
<!ELEMENT food (group+)>
<!ELEMENT group ((apple*,banana*,peach+)|pear|orange+|WM)>
<!ELEMENT apple (#PCDATA)>
<!ELEMENT banana (#PCDATA)>
<!ELEMENT peach (#PCDATA)>
<!ELEMENT pear (#PCDATA)>
<!ATTLIST apple
   name CDATA #REQUIRED
   weight CDATA #IMPLIED
   color CDATA #FIXED "cc"
   size CDATA "aa">
<!ATTLIST banana count (1个|2个|3个|多个) "多个">
<!ATTLIST banana 编号 ID #REQUIRED>
<!ATTLIST peach banana编号 IDREF #REQUIRED>
<!ATTLIST orange id NMTOKENS #IMPLIED>
<!NOTATION mp SYSTEM "movPayer.exe">
<!NOTATION gif SYSTEM "Image/gif">
<!ATTLIST orange tupian NOTATION (mp|gif) #REQUIRED>
<!ENTITY owner "wangyan">
<!ATTLIST apple own ENTITY #IMPLIED>
<!ENTITY % group_name "bianhao|weight|color|size">
<!ELEMENT WM (%group_name;)>
]>

 <!-- + 代表一次或多次         ? 代表0次或1次    ×代表0次或多次 -->
 <!-- | 代表多个中选一个 “或”  ,代表必须按照顺序      空格 代表任意顺序、个数 -->
 <!-- PCDATA parsed character data  代表元素中嵌套的内容为普通的文本字符串 -->
 <!--
  DTD文档定义属性类型,共10个值: 1、CDATA 2、ENUMERATED(枚举类型) 3、ID 4、IDREF IDREFS
  5、NMTOKEN NMTOKENS (name token) 6、NOTATION (为我们保存图像、声音、影像等等像这些数据)
  (<!NOTATION 符号名 SYSTEM "MIME类型"> <!NOTATION 符号名 SYSTEM "URL路径名"> )
  7、ENTITY (两种:引用实体和参数实体 引用实体:主要在xml文档中被引用 定义引用实体: <!ENTITY 实体名称 "实体内容">
  <!ENTITY 实体名称 SYSTEM "外部xml文档的url"> 引用实体的方法: &实体名称; 参数实体:主要被dtd文件自身使用
  定义参数实体: <!ENTITY % 实体名称 "实体内容"> 引用参数实体的方法: %实体名称; ) ENTITYS
 -->
<food>
 <group>
  <WM>
   <color>red</color>
  </WM>
 </group>
 
 <group>
  <orange id="Zhangsan lisi wangwu" tupian="mp"></orange>
  <orange id="zhangsan lisi" tupian="gif"></orange>
 </group>
 <group>
  <pear>pear1</pear>
 </group>
 <group>
  <apple name="aa" own="&owner;">apple</apple>
  <apple name="ccccc" own="&owner;">&owner;
  </apple>
  <apple name="cccc" color="cc">aaaa</apple>
  <apple name="cccc" color="cc">aaaa</apple>
  <apple name="cccc" color="cc" size="aaaaa">ccc</apple>
  <banana count="2个" 编号="a1">banana</banana>
  <banana count="2个" 编号="b">banana</banana>
  <peach banana编号="a1">peach</peach>
 </group>
</food>

 

 


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 华为手机看不见截屏怎么办 支付宝密码错误被锁定怎么办 实名身份证的微信限额怎么办 工行网银登陆密码忘了怎么办 美亚买的东西坏了怎么办 海带宝转运到香港怎么办 海带宝转运仓库入库错误怎么办 三星s7edge密码忘了怎么办 ie网页被拦截了怎么办 手机打开百度网页弹出广告怎么办 网站策略服务已被禁用怎么办 谷歌浏览器打不开网页怎么办 mac用户名密码忘记了怎么办 苹果7网速太慢怎么办 ps中图片选不中怎么办 加装硬盘不显示怎么办 win10网络无权限访问怎么办 电脑装机时c盘隐藏怎么办 word不允许修改锁定了是怎么办 word文档只读不能编辑怎么办 word无法读取文档时怎么办 ps超出2g存不了怎么办 qq帐号不记得了怎么办 苹果手机wifi密码输错怎么办 qq搜索关键字屏蔽了怎么办 手机数据被屏蔽了怎么办 ea账号安全问题答案忘了怎么办 电脑用户账户密码忘记了怎么办 公司名字审核通过剩下怎么办 抖音一直在审核怎么办 平板电脑显示ipad已停用怎么办 违章车型与实际车型不符怎么办 网购与实物不符怎么办 内网ip地址丢失怎么办 转账户名写错了怎么办 工资卡开户写错公司名称怎么办 商标跟别人重了怎么办 不受信任的应用打不开怎么办 oppo手机安全证书过期怎么办 网站安全证书有问题怎么办 公章圆圈摔坏了怎么办