XML 语法以及DTD语法
XML XML(ExtensibleMarkupLanguage),翻译过来就是可扩展标记语言 XML是W3C组织发布的,目前遵循的是W3C发布的XML1.0 1.其中XML文件用于作为配置文件 2.用于保存有关的数据 在一个软件系统中,系统启动的模块,可以通过XML文件来实现 XML语言出现的根本的目标在于描述途中有关系的数据 其中XML开始出现的原因主要是为了取代HTML这们语言, 其中HTML文件主要是主要的特点是: 1.严谨性差 2.编码的时候不严谨 一个XML文件分为一下几个部分 1.文档的声明 2.元素 3.属性 4.注释 5.CDATA区,特殊字符 6.处理指令(progressinstruction) 文档的声明 最简单的文档声明 <?xmlversion=”1.0”?> 其中注意格式,其中问号前面还有一个空格 用encoding来确定编码 <?xmlversion=”1.0”encoding=”gb2312”> 其中一定要注意到乱码的问题 例如: 当文件数据的编码是 <?xmlversion-=”1.0”encoding=”UTF-8”?> 数据的编码是UTF-8但是数据的保存是按照gb2312,这样在硬盘上存储的数据是并不是按照UTF-8而是按照gb2312,这样保存的数据并不是,我们想要的数据了 在通过浏览器,解码的时候是按照XML文旦中的encoding编码所以会变成乱码 其中我们在变成的时候一般用的是 <?xmlversion=”1.0”encoding=”gb2312”?> 解决这种乱码的方法有两种 1.保存的时候,是按照UTF-8 2.将encoding方法改成gb2312 我们一般使用的Eclipse进行开发,通过这个工具类开发,帮我们隐藏了许多的问题 使用standalone属性说明数据的文档是独立的 <?xmlversion=”1.0”encoding=”gb2312”standalone=”yes”?> 但是这个一般是没有用的 <?xmlversion=”1.0”encoding=”gb2312”standalone=”no”?> 在IE中任然是可以打开的。 如果没有文档声明,那么这种XML文档称为格式不良好的文档声明 元素 XML文档中的元素就是标签 标签有开始和结束标签 例如 包含了标签体 <yellowcong>我是黑马</yellowcong> 不包含标签体 <yellowcong/> 标签可以嵌套多个标签,但是不可以交叉嵌套的问题 格式良好的标签必须有一个根标签,其他的标签都是子标签和根标签 对于XML标签中出现的所有的空格和换行都会当做标签的类容进行处理的 下面的标签的类容是不一样的 <yellow>我是神</yellow> <yellow> 我是神 </yellow> 由于在XML文件中换行和空格的良好的习惯就需要改变了。 这个对于XML中是很重的,如果你们掌握的不好,就可能出现问题 命名规范 1.区分大小写 2.不能以数字和“_”下划线开头 3.不能以XML开头 4.不能包含空额 5.文件中不能有冒号 XML的属性 一个标签中可以多个属性,每个属性都有自己的取值和名称 XML文件的属性想HTML中,也是需要用“”来括起来 <yellowcongname=”heima”></yellowcong> 还有一种方法,其中的元素可以使用标签的方法来定义 <yellowcong> <name>heima</name> </yellowcong> 注释 其中XML的注释和HTML的注释是类似的 <!--注释的类容--> 重点 1.XML的注释不可以将注释写在声明的前面 2.XML中的注释不可以嵌套 CDATA 在编译XML文件中,如果有些类容,不想XML系统解析,而是当成原始类容来处理 这时我们可以使用CDATA来处理 语法: <![CDATA[ <!--不处理的类容--> ]]> 转义字符 && >< <> “(双引号)" ‘(单引号)' 其中注意的是数据其中后面的“;”是一定要写的,对于这个对于人,来说区别不大,但是对于计算机来说,区别是很大的,应为电脑没有处理数据 对于数据,如果给人看,那么,就是用转义字符,如果给程序看,就不使用转义字符 处理指令(processinginstrustion简称PI) 例如在XML文档中使用xml-stylesheet指令,通过xml解析,会调用css文件,来显示数据 <?xml-stylesheettyple=”text/css”href=”1.css”?> 其中指令以<?开头,并以?>是常见的指令的一种处理,其中开头的声明,就是一句指令 例子: 建立一个xml文件 <?xmlversion="1.0"encoding="gb2312"?> <?xml-stylesheettype="text/css"href="day05.css"?> <xml-body> <!--其中有些要点,请大家注意一下,对于一些编程的词,一定不要写错了,刚刚我就把hret给写错了,搞了半天--> <yellowcongid="a1">我是黑马程序员</yellowcong> </xml-body> 然后建立css文件 #a1{ font-size:150px; color:red; }
DTD: 对XML进行约束的 一:元素的声明: 在DTD中,XML元素通过元素声明来进行声明。元素声明使用下面的语法: <!ELEMENT元素名称类别> 1任意类型的元素 带有任何内容(字符串、子元素、空元素)的元素,通过类别关键词ANY声明的元素,可包含任何可解析数据的组合: <!ELEMENT元素名称ANY> 如:<!ELEMENT书籍列表ANY> 注意:应尽量避免使用ANY定义。 2空元素 空元素通过类别关键词EMPTY进行声明: <!ELEMENT元素名称EMPTY> 如:<!ELEMENT书籍列表EMPTY> 3字符串值的元素 通过圆括号中的#PCDATA进行声明: <!ELEMENT元素名称(#PCDATA)> 如: <?xmlversion="1.0"encoding="UTF-8"standalone="yes"?> <!DOCTYPE书籍列表[ <!ELEMENT书籍列表(#PCDATA)> ]> <书籍列表>描述</书籍列表> 4包含子元素 带有一个或多个子元素通过圆括号中的子元素名进行声明: 定义要求顺序的子元素: <!ELEMENT元素名称(子元素名称1,子元素名称2,……)> 例如: <!ELEMENT计算机书籍(书名,作者,价格,简介)> 定义互斥的子元素: <!ELEMENT元素名称(子元素名称1|子元素名称2|……)> 例如: <!ELEMENT计算机书籍(书名|作者|价格|简介)> 5混合元素 混合元素的语法格式如下: <!ELEMENT父元素名称(#PCDATA|子元素名)*> 如: <!ELEMENT计算机书籍(#PCDATA|书名|作者|价格|简介)*> 二:属性 在DTD中,属性通过ATTLIST声明来进行声明。 属性声明使用下列语法: <!ATTLIST元素名属性名属性类型元素对属性的要求默认值)> 其中,默认值可有可无,要求可有可无 如: DTD实例: <!ATTLIST作者地址CDATA#REQUIRED)> 或 <!ATTLIST作者地址CDATA#FIXED"广州")> XML实例: <作者地址="广州">李刚</作者> 以下是属性类型的选项: 类型属性值描述 CDATA值为字符数据(characterdata) 如:<!ATTLIST作者地址CDATA#REQUIRED)> (en1|en2|..)Enumerated:此值是枚举列表中的一个值 如:<!ATTLIST肉类型(鸡肉|牛肉|猪肉|鱼肉)"猪肉")> ID值为唯一的id 如:<!ATTLIST计算机书籍ISBNID#REQUIRED)> IDREF值为另外一个元素的id 如:<!ATTLIST计算机书籍ISBNIDREF#REQUIRED)> IDREFS值为其他id的列表,多个引用之间以空格隔开 ENTITY值是一个实体 ENTITYS值是一个实体列表,多个实体之间以空格隔开 NMTOKEN值为合法的XML名称,表示属性值只能有字母、数字、下划线、英文点(.)、英文冒号(:)、英文中划线(-)等符号组成 NMTOKENS值为合法的XML名称的列表,表示属性值由多个NMTOKEN组成,多个NMTOKEN之间以空格隔开 NOTATION此值是符号的名称(过期了,尽量避免使用) 默认值参数可使用下列值: 值解释 #REQUIRED属性值是必需的 #IMPLIED属性值可有可无 #FIXEDvalue属性值是固定的 三:实体 实体引用就是用一个字符串代替另一个字符串。 实体可在内部或外部进行声明。 实体声明 语法: <!ENTITY实体名"实体值"> 在XML文档中使用实体引用的语法: &实体名; 注意:在内部DTD和外部DTD都可以如此定义,但都是应用在XML文档中。 例子: DTD例子: <!ENTITYspring"Spring2.0宝典"> XML例子: <书名>&spring;</书名> 应用在外部DTD中的实体声明 语法: <!ENTITY%实体名"实体值"> 在DTD中使用实体引用的语法: %实体名;
例子: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <!-- 内部DTD,指定了文档根元素:书籍列表 --> <!DOCTYPE 书籍列表[ <!ELEMENT 书籍列表 (计算机书籍)*> <!ELEMENT 计算机书籍 (书名,作者,价格,简介)> <!ELEMENT 书名 (#PCDATA)> <!ELEMENT 作者 (#PCDATA)> <!ELEMENT 价格 (#PCDATA)> <!ELEMENT 简介 (#PCDATA)> ]> <!-- XML文档部分 --> <书籍列表> <计算机书籍> <书名>XML宝典</书名> <作者>刘洪</作者> <价格>79.00</价格> <简介>该书详细介绍了XML的基础知识</简介> </计算机书籍> </书籍列表> 总结:定义的有三种: ELEMENT::标签 ATTLIST:属性 ENTITY:实例 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |