XML,DTD基础学习
XML,DTD基础学习 本篇博客因为项目需要而转道学习XML,因此找到圣思园张龙老师的XML视频,据此做的学习笔记。估计以后会用到XML而且,这也相当于一种语言吧。 1.XML的全称:eXtensibleMarkupLanguage,是一种元标记语言 2.XML的用处 1.用于数据交换 2.用于电子商务 3.是一种可扩展的开放标记语言 3.XML的核心技术 1.文档描述,验证,约束技术DTD,schema 2.文档转换技术XLN 3.数据查询技术Xpath 4.链接技术XLink/Xpointer 5.编程接口DOM/SAX 4.DocumentTypeDefinition(DTD,文档类型定义) 5.DTD用来验证XML是否有效,相当于一种语法。 6.XML描述的是文档的结构,内容,和意义,不描述元素的页面格式化 7.XML中的元素都是成对出现的,有开始就有结束,<id></id>,XML中的元素要保持正确的嵌套关系,先开始先结束。 8.每个XML文档有且只有一个根元素(rootElement),根元素在所有子元素之前开始,在所有子元素结束之后结束 9.在HTML中的标记就是所谓的“标签”(tag) 10.XML与HTML的比较 1.HTML没有表达内容的含义,并且只能使用预订的标记,HTML关心的是外观。 2.HTML结构层次简单。 3.HTML无法实现数据交换。 4.链接机制不完善 5.不可重用 6.在网上无法找到想要的信息片段。 1.XML是使信息自描述的新语言。 具有信息共享,数据传递,数据重用,分离数据和显示。 具有可扩展性 文档具有某种含义。 容易阅读,是一种树形结构 11.XML的优点 1.提供有意义的搜索(数据可以被XML唯一的标示) 2开发灵活的web应用软件(配置文件,webservice的数据交互) 3.不同来源的数据集成。(web服务,web集成) 4.多种应用的数据可以被XML清晰的描述。(内容管理,系统配置) 5.使用XML可以实现异构语言,异构平台之间的交互 三..XML的基本语法 1.XML的文档结构 2.XML文档专用标记 3.元素和属性 4.字符和实体引用 1.XMl只有1.0的版本 2.XML处理指令以<?开始以?>结束 3.standalone="yes"表示是否需要DTD检验语法语义的正确性。 4.语法要求<?处理指令必须顶格写,否则不同的浏览器会不支持。而且问号前面和后面都不能有空格,否则浏览器不能解析XML。 5.XML有两个特性version和standalone.可以使用单引号或者双引号包裹其值 <studentgender="male"> <id>100</id> <name>lisi</name> <address>beijing</address> </student> Student是元素,gender是其属性,male是属性值。Student可以有多个属性,属性之间使用空格隔开。属性名=”属性值,属性值不能包括<,>,& 6.可以在指令声明里添加一个encoding=”utf-8”,指明编码格式,默认为utf-8 指令标准写法:<?xmlversion="1.0"encoding="utf-8"standalong="yes"?> 当encoding值为iso-8859-1时不支持中文,GBK也有限制,推荐使用utf-8. 7.一般由用户自定义标记,所以标记应该具有某种含义,并且具有某种格式和样式。可以采用css对XML的标记加载样式。 使用下面的语句加载样式: 可以通过样式将XML的内容和展现相互分离。 8.在XML中写注释<!--内容-->,注释不允许嵌套。注释内容中不允许有-- 9.元素之间的关系:子元素/父元素祖先/后代 元素内容的类型:嵌套元素,字符数据,实体引用CDATA节,处理指令,注释 10.在同一个元素上相同的属性只能出现一次。 11.实体 作用:避免重复输入----相当于宏,变量 XML中预定义实体 自定义实体语法: <!DOCTYPE根元素[<!ENTITY实体名“实体内容”]>
引用已定义的实体: &实体名 12.CDATA节 13.用于把整段文本解释为纯字符数据而不是标记的情况,包含大量<,&或者字符,CADATA节中的所有字符都会被当做元素字符数据的常量部分,而不是XML标记。 14.语法<![CDATA[............]] > 可以输入任意字符,除]]>外,不能嵌套 15.格式正规的XML文档 语法规范: 1.必须有XML声明语句 <?xmlversion="1.0"encoding="utf-8"standalong="yes"?> 2.必须有且只有一个根元素 3.标记大小写敏感 4.属性值用引号 5.标记成对出现<id/>也可以,不过不是正规的 6.空标记关闭 7.元素正确嵌套 元素语法: 1.名称中可以包含字母,数字或者其他字符 2.名称不能以数字开头 3.不能以XML/xml/Xml.....开头 4.名称中不能包含空格 5.名称中不能包含冒号(:冒号留给命名空间使用) 16.有效的(valid)XML文档,首先XML文档是格式正规的XML文档,然后有满足DTD的要求,这样的XML文档成为有效的XML文档。 四、什么是DTD 1.文档类型定义------Documenttypedefinition DTD用来描述文档的结构,一个DTD文档 包含: 1.元素(ELEMNET)的定义规则 2.元素之间的关系规则 3.属性(ATTLIST)的定义规则 4.可是用的实体(ENTITY)或者符号(NOTATION)规则 2.DTD文档与XML文档实例的关系 1.类与对象 2.数据库表结构与数据记录 3.DTD作用 1.有了DTD每个XMl文件可以携带一个自身格式的描述 2.有了DTD,不同组织的人可以使用一个通用的DTD来交换数据 3.应用程序可以使用一个标准的DTD来校验从外界获得的XML文档是否有效 4.可以使用DTD校验自己的XML数据 4.DTD的声明和使用 内部DTD文件<!DOCTYPE根元素[]> 外部DTD文档<!DOCTYPE根元素SYSTEM“DTD文件路径”> 内外部DTD文档的结合<!DOTYPESYSTEM“DTD文件路径”[定义内容]> 5.#PCDATA(ParsedCharacterdata)可解析的字符串 6.元素的定义 1.语法 <!ELEMENT(关键字)NAME(元素名称)CONTENT(元素类型)> 元素类型中的取值: 1.EMPTY:该元素不能包含子元素和文本,可以有属性(空元素) 2.ANY:该元素可以包含任何在DTD定义的元素内容(将根元素设置为ANY类型后,元素出现的次数和顺序不受限制) 3.#PCDATA:该元素可以包含任何字符数据,但是不能在其中包含任何子元素。 4.纯元素类型:只包含子元素,并且这些子元素外没有文本 5.混合类型:包含子元素和文本类型的混合体 7.属性的定义 1.语法 <!ATTLIST元素名称属性名称类型属性特点> 类型:CDATAIDIDFREF/IDREFSNMTOKEN/NMTOKENS EnumeratedENTITY/ENTITIESNOTATIONNOTATIONS 属性特点:#REQUIRED#IMPLED#FIXEDvaluedefaultvalue 属性值可以是任意字符(包括数字和中文) 注意: #PCDATA与CDATA:CDATA用于定义属性,#PCDATA是用于定义元素的。 NMTOKEN:是CDATA的一个子集,表示属性值必须是英文字母,数字句号,破折号,下划线或冒号,属性值,不能含有空格。 NMTOKENS与NMTOKEN类似,包含多个由空格分隔的字符。 ID:表明该属性的取值必须是唯一的。 IDREF:属性的值指向文档中的其他地方声明的ID类型的值。 IDREFS同IDREF(只能有一个),但是可以具有由空格分开的多个引用。 Enumerated:事先定义好的一些值,属性的遏制必须在所列出的值的范围内。相当于枚举类型 <!ATTLISTperson婚姻状态(single|married|divorced|widowed)#IMPLIED> <!ATTLISTperson性别(男|女)#REQUIRED> 属性的特点: #REQUIRED:元素的所有实例都必须有该属性的值(NOTNULL) 语法:<!ATTLIST元素名属性名属性类型#REQUIRED> DTD实例: <!ATTLISTpersonnumberCDATA#REQUIRED> XML实例: #IMPLIED:元素的是里可以忽略该属性(NULL),可有可无 语法:<!ATTLIST元素名属性名属性类型#IMPLIED> DTD实例:<!ATTLISTcontactfaxCDATA#IMPLIED> XML实例:<contactfax=”38549358-243249”> #FIXEDvalue:元素实例中该属性的值必须是指定的固定值。 语法L<!ATTLIST元素名属性名类型#FIXED“value”> DTD实例: <!ATTLISTsendercompanyCDATA#FIXED“Microsoft”> <sendercompany=”Microsoft”> Defaultvalue:为属性提供一个默认的值 语法:<!ATTLIST元素名属性名类型Defaultvalue> DTD实例:<!ATTLISThellopayment_typeCDATA“check”> XML实例:<hellopayment_type=”check”> 定义实体:内部实体 语法: <!ENTITY实体名“实体值”> DTD实例: <!ENTITYwriter“DongaldDuck”> <!ENTITYcopywriht“CopyrihtW3Cschools”> XML实例:<author>&writer;?wriht</author> 外部实体:(使用非常少,了解) 语法:<!ENTITY实体名SYSTEM“URI/URL”> DTD实例: <!ENTITYwriterSYSTEM“http://wwww3schools.com.entities/entities.xml”> <ENTITYcopyrightSYSTEM“http://wwww3schools.com.entities/entities.dtd”> XML实例: <author>&writer;?wright</author> 实体类型: 普通实体:在DTD中定义,在XML里使用,使用格式:&address; 外部实体:定义方式:<!ENTITYaddressSYSTEM“http:www.shengsiyuan.com/xml.xml”>表示使用http:www.shengsiyuan.com/xml.xml网址的内容来替换掉address,而不是使用http:www.shengsiyuan.com/xml.xml字符来替换掉address。 参数实体:在DTD中定义,在DTD里使用,在定义的时候使用%,使用的时候:也需要使用%,%address; 外部参数实体:同参数实体,不过加了一个%在address前面,然后使用的时候加一个%。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |