XML - DTD

前端之家收集整理的这篇文章主要介绍了XML - DTD前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

DTD简述

全称 Document type Definition 文档类型定义
DTD作用
	DTD是XML的一部分,描述XML文档结构,效验XML文档格式是否正确
DTD文档包含
	元素的定义规则
	元素之间的关系
	属性的定义规则
	可使用的实体或者符号规则
DTD与XML的关系
	DTD是抽象的,XML是具体的
	一个DTD可以生成多个XML,就像一个类可以生成多个对象
DTD局限性
	不能扩展
	@R_301_472@命名空间
	只提供了有限的数据类型,用户无法自定义类型
	不使用XML语法(写XML文档实例的时候用一种语法,写DTD用另一种语法)

CDATA和PCDATA

CDATA
	character data 字符数据
	使用在属性上面,表示属性的值是一般的字符串
PCDATA
	parsed character data 被解析的字符数据
	使用在元素上面,表示元素中间的内容是普通的字符串

声明元素

<!ELEMENT 元素名称 元素类型>
元素类型可取值
	EMPTY:不能包含子元素和文本,但可以有属性(空元素)
		示例:<!ELEMENT people EMPTY>
	ANY:该元素包含DTD中定义的任何元素内容  
		示例:<!ELEMENT book ANY>  
		需要注意的是将根元素设置为ANY类型后,元素出现的次数和顺序不受限制  
	#PCDATA:只能是普通字符串,不能包括子元素  
	   	示例:<!ELEMENT name (#PCDATA)>
	带有子元素(序列)的元素
	    示例:<!ELEMENT book (name,author,price)>

XML引用DTD两种方式

外部引用
	book.dtd
		<?xml version="1.0" encoding="UTF-8"?>
		<!ELEMENT book (name,price)>
		<!ELEMENT name		(#PCDATA)>
		<!ELEMENT author	(#PCDATA)>
		<!ELEMENT price		(#PCDATA)>
	book.xml
		<?xml version="1.0" encoding="UTF-8"?>  
		<!DOCTYPE book SYSTEM "book.dtd">  
		<book>  
		    <name>Java</name>  
		    <author>John</author>  
		    <price>99</price>  
		</book>
内部引用
 	book.xml
 		<?xml version="1.0" encoding="UTF-8"?>  
		<!DOCTYPE book [
			<!ELEMENT book (name,price)>
			<!ELEMENT name		(#PCDATA)>
			<!ELEMENT author	(#PCDATA)>
			<!ELEMENT price		(#PCDATA)>
		]>
		<book>  
		    <name>Java</name>  
		    <author>John</author>  
		    <price>99</price>  
		</book>

DTD修饰符号

()	来用给元素分组 
 	示例:(古龙|金庸),毛毛
|   多个选择一个
  	示例:(古龙|金庸),毛毛,必须按照指定顺序出现
  	示例:(古龙|金庸),毛毛
声明只出现1次的元素:  
    示例:<!ELEMENT book (name)>  
声明出现大于等于1次的元素:  
    示例:<!ELEMENT book (name+)>  
声明出现0或多次的元素:  
    示例:<!ELEMENT book (name*)>  
声明出现0或1次的元素:  
    示例:<!ELEMENT book (name?)> 

DTD属性

<!ATTLIST 元素名称 属性名称 属性类型 属性特点>  
   	示例:<!ATTLIST name width CDATA "20">
属性类型的选项
	CDATA:属性值可以是任何字符(包括数字和中文)
		示例:<!ATTLIST name width CDATA "20">
    NMTOKEN/NMTOKENS都是CDATA的子集  
        NMTOKEN表示属性值不能是含有空格
       		示例:<!ATTLIST name width NMTOKEN #REOUIRED>  
        NMTOKENS表示属性值允许有空格  
			示例:<!ATTLIST name width NMTOKENS #REOUIRED>  
    ID:表示该属性的取值必须是唯一的  
       	示例:<!ELEMENT 公司职员 ANY>  
        	<!ATTLIST 公司职员 编号 ID #REOUIRED 姓名 CDATA #REOUIRED>
			正确  
	         	<公司职员 编号="Z001" 姓名="张三">  
	            <公司职员 编号="Z002" 姓名="张三">  
	      	错误  
	            <公司职员 编号="Z001" 姓名="张三">  
	            <公司职员 编号="Z001" 姓名="张三">
    IDREF/IDREFS  
        IDREF属性的值指向文档中其他地方声明的ID类型的值  
        IDREFS同IDREF,但可以具有由空格分开的多个引用  
    Enumerated:事先定义好的一些值,属性的值必须在所列出的值中一个
		示例:<!ATTLIST name sex (boy|girl) #REOUIRED>
属性特点的选项  
    #required       属性值是必需的  
    #IMPLIED        属性不是必需的  
    #FIXED value    属性值是固定的  
    Default value   属性值的默认值  
    #required  
		示例:<!ATTLIST name width CDATA #required>  
		标签name的width属性必须有  
    #IMPLIED  
		示例:<!ATTLIST name width CDATA #IMPLIED>  
		标签name的width属性有没有都可以  
    #FIXED  
		示例:<!ATTLIST name width CDATA #FIXED "20">  
		标签name的width属性值是固定的20,不等于20就是非法的
案例  
    book.dtd  
        <?xml version="1.0" encoding="UTF-8"?>  
        <!ELEMENT book (name,price)>  
		<!ELEMENT name       (#PCDATA)>  
		<!ATTLIST name id CDATA #required>  
		<!ELEMENT author (#PCDATA)>  
		<!ATTLIST author name CDATA #IMPLIED>   
		<!ELEMENT price      (#PCDATA)>  
		<!ATTLIST price width CDATA #FIXED "20">   
    book.xml          
        <?xml version="1.0" encoding="UTF-8"?>  
        <!DOCTYPE book SYSTEM "book.dtd">  
        <book>  
            <!-- name元素id属性是必须的 -->  
            <name id="name">Java</name>  
            <!-- author元素name属性是可有可无 -->  
            <author name="author">John</author>  
            <!-- price元素width属性的值只能等于20 -->  
            <price width="20">99</price>  
        </book>

DTD实体

实体相当一个变量,引用已经定义好的值
内部语法
	语法
		<!ENTITY 实体名 "实体值">
	DTD示例
		<!ENTITY writer "writerContent">
		<!ENTITY copyright "copyrightContent">
	XML示例
		<author>&writer;©right;</author>
外部声明
	语法
		<!ENTITY 实体名称 SYSTEM "URI/URL">
	DTD示例
		<!ENTITY copyright SYSTEM "http://www.baidu.com">
	XML示例
		<author>©right;</author>
实体类型分类
	普通实体
		使用场合
			用在XML文档中
		内部声明方式
			<!ENTITY 实体名 "实体值">
		外部声明方式
			<!ENTITY 实体名称 SYSTEM "URI/URL">
		引用方法
			&实体名称;
	参数实体
		使用场合
			用在DTD中元素和属性声明中
		内部声明方式
			<!ENTITY %实体名 "实体值">
		外部声明方式
			<!ENTITY %实体名称 SYSTEM "URI/URL">
		引用方法
			%实体名称;

更多内容请查看

点击打开链接

猜你在找的XML相关文章