码迷,mamicode.com
首页 > 其他好文 > 详细

XML(二)约束

时间:2015-06-30 18:30:09      阅读:105      评论:0      收藏:0      [点我收藏+]

标签:xml

<?xml version="1.0" encoding="gbk" ?>
<!DOCTYPE 书架 SYSTEM "book.dtd">
<书架>
	<书>
		<书名>JAVA</书名>
		<作者>XXXXXX</作者>
		<售价>23333</售价>
	</书>
	
	<书>
		<书名>ANDROID</书名>
		<作者>XXXXXX</作者>
		<售价>23333</售价>
	</书>
	
	<书>
		<书名>ANDROID</书名>
		<作者>XXXXXX</作者>
		<售价>23333</售价>
	</书>
</书架>


什么是xml约束?

在xml技术里,可以编写一个文档来约束一个xml文档的写法,这称之为xml约束

 

为什么要使用xml约束?

使用xml进行数据交换的双方需要相互遵守的一套规则,否则双方无法进行数据交换


xml约束的作用


约束xml文档的写法
对xml进行校验

 

常见xml约束技术

xml DTD
xml Schema

 

DTD的语法
 1.如和在xml中引入dtd
 1.内部引入
 
 直接在xml文件中写dtd
 
 <!DOCTYPE 根元素名称 [dtd约束] >
 
 2.外部引入
 
  可以将dtd的约束内容写在外置的dtd文件中,文件后缀为.dtd
  文件保存时必须使用utf-8编码保存
  再在xml文件中使用
   <!DOCTYPE 根元素名称 SYSTEM 文件位置 >
  如果写的是SYSTEM 表明当前引入的dtd是存在于硬盘中的
  <!DOCYPE 文档根结点 PUBLIC “DTD名称” “DTD文件的URL”
  如果写的是PUBLIC 表示当前引入的dtd在网络中
    
 
 2.dtd语法
 
 1.元素
 
 对元素的约束
 <!ELEMENT 元素名称 元素约束条件>
 
 约束条件:
  存放类型:ANY/EMPTY
  元素约束:子元素的列表,将可以包含的子元素用小括号括起来
      子元素之间可以使用,进行分隔,表明子元素必须按顺序出现
      还可以使用|进行分隔,表明子元素出现其中之一(只有一个)
      #PCDATA 表明包含标签体
      
  + 表示一次或多次
  * 表示0次或多次
  ? 表示0次或1次
  
  也可以使用小括号进行组的操作
  <!ELEMENT MYFILE ((TITLE*,AUTHOR?,EMAIL)* | COMMENT))

 2.属性
  <!ATTLIST 元素名
   属性名    属性类型    属性约束
   属性名2   属性类型    属性约束
   。。。。
  >
  
  属性类型:
   CDATA:表示属性的值为普通字符串
   ENUMERATED:属性的值是一个枚举列表中的值    种类 (科技类|文学类|工具类|xxx)  #IMPLIED
   ID:表明属性的值在整个文档中都是唯一的 该属性的值只能由 字母下划线开始
   ENTITY:

  属性约束:
   #REQUIRED   ---   表明当前属性是一个必须存在的属性,如果这样的属性不存在则在校验时会报错
   #IMPLIED    ---   表明当前属性是一个可选的属性,可以有,可以没有
   #FIXED ‘固定值’ ---   表明当前属性具有一个固定值,不需要进行赋值,值为固定值,如果指定了其他值,校验报错
   ‘默认值‘    ---   表明当前属性具有默认值,可以改
   
          
  ENTITY(实体)
   <!ENTITY> 就是对一大段内容的引用,简化代码的服用

   参数实体 
    在dtd中引用的实体叫做参数实体
    声明方式:<!ENTITY % 实体名称 实体内容>
    引用方式:%实体名称

    
   
   引用实体
    在xml中使用的实体叫做引用实体
    声明方式:<!ENTITY 实体名称 "实体内容" >
    引用方式:&实体名称;

   

 book.xml

<?xml version="1.0" encoding="gbk" ?>
<!DOCTYPE 书架 SYSTEM "book.dtd">
<书架>
	<书>
		<书名>JAVA</书名>
		<作者>XXXXXX</作者>
		<售价>23333</售价>
	</书>
	
	<书>
		<书名>ANDROID</书名>
		<作者>XXXXXX</作者>
		<售价>23333</售价>
	</书>
	
	<书>
		<书名>ANDROID</书名>
		<作者>XXXXXX</作者>
		<售价>23333</售价>
	</书>
</书架>


 

book.dtd

 

<!ELEMENT 书架 (书+)>
<!ELEMENT 书 (书名,作者,售价)>
<!ELEMENT 书名 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 售价 (#PCDATA)>


 

利用script打开浏览器dtd校验

 

<html>
	<head>
		
	</head>
	
	<body>
		行号:
		<div id="l"></div><br />
		原因:
		<div id="r"></div>
		
		</body>
</html>

<script>
	var xmldoc = new ActiveXObject ("Microsoft.XMLDOM");
	xmldoc.validateOnParse=true;
	xmldoc.load("book2.xml");
	var line = xmldoc.parseError.line;
	var reason = xmldoc.parseError.reason;
	document.getElementById("l").innerHTML=line;
	document.getElementById("r").innerHTML=reason;
	
</script>


 

版权声明:本文为博主原创文章,未经博主允许不得转载。

XML(二)约束

标签:xml

原文地址:http://blog.csdn.net/u013476556/article/details/46697519

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!