xml学习篇(一)
转自:http://www.cnblogs.com/Jimmy009/archive/2012/06/18/2553722.html
XML简介:
好了可以开始正式的学习了,在以前看一本计算机书籍,一般第一章都是这个语言的简介,觉得那些都是废话。后来才发现,在学习任何一门语言之前,还是有必要简单的介绍一下这门语言的,因为他告诉了我们为什么会有这门语言,并且这门语言存在的意思。如果没有任何意思的语言我想没有任何人会去学习他。
XML中文名称:可扩展标记语言;英文名称:extensible markup language;用于标记电子文件使其具有结构性的标记语言。XML可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。(来自百度百科)
XML与数据库、html区别
XML与Access,Oracle和SQL
Server等数据库不同,数据库提供了更强有力的数据存储和分析能力,例如:数据索引、排序、查找、相关一致性等,XML仅仅是存储数据。事实上XML与其他数据表现形式最大的不同是:他极其简单。这是一个看上去有点琐细的优点,但正是这点使XML与众不同。
XML与HTML的设计区别是:XML是用来存储数据的,其焦点是数据的内容。而HTML 被设计用来显示数据,其焦点是数据的外观。
XML和HTML语法区别:HTML的标记不是所有的都需要成对出现,XML则要求所有的标记必须成对出现;HTML标记不区分大小写,XML则相反。(来自百度百科)
XML正式学习
上面都是比较抽象的概念,但是也是最权威的解释了。但是这里我想用我自己的话讲XML就是一种可以扩看的标记性语言,他和HTML不同的是HTML当中对关键字如html table都已经定死了,我们无法改变其意思,而xml那些关键字都是我们人为的定义在使用。xml其实说白了就是用来保存数据的,比如说你的配置文件数据,还有一写数据非常的少,要是放在数据库觉得浪费,但是又不得不考虑的那些数据放在xml文件中是最好的了。xml语法和html语言很接近,如果我们有一个头,就必须也要有一个界面,如:<div></div>。其次我们的跟元素就只有一个,例如html语言中,我们只有一个跟的<html></html>根元素。下面我们用代码说明我们的一切吧。
Code
写好了代码我们用浏览器查看一下吧,右击你的xml文件打开方式选择IE浏览器。看看效果图吧:

其中最第一行为定义xml的版本及浏览器显示的语言格式。
这是一个对的语言,如果我们把去掉其中的一个界面标志,那就会报错(这里去掉第三个</age>标志),

这里好像ie9 测试不出来,用的是遨游测试的。如果我们不成对的标志写,那就会报错。
学到这里你已经把xml基本的语法学习好了。你已经是初学者了。下面的提上篇。
提升篇
其实xml也可以嵌入css文件的,接下在我将陷入一个css文件,让你的对xml文件有另一番领悟。
代码:
Code
显示效果为:

接着我们在来讲一下dtd的文件。
不知道你们发现没有,网页的前面几行都有这么一行<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
其实这个就是对dtd文件,那dtd文件有什么用处呢?
dtd定义:文档类型定义(DTD)可定义合法的XML文档构建模块。它使用一系列合法的元素来定义文档的结构。DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用。
说白了dtd就是定义你的xml文件中可以有哪些元素,不可以有哪些元素,这些元素可以的值是什么类型的。但是我们直接查看xml文件他并不会报错,需要禁用js创建一个ActiveXObject对象,才可以对其进行校验。
好了我们来开始dtd文档的总结吧。
从代码开始Checkdtd.htm文件(检测xml是否规范)代码:

<html>
<head>
<title>测试dtd文档</title>
<meta http-equiv="content-type" content="text/html;charset=gb2312" />
<script type="text/javascript">
<!--
//创建一个xml解析器
var xmldoc=new ActiveXObject("Microsoft.XMLDOM"); //开启校验功能
xmldoc.validateOnParse=true; //指定对那个xml文件校验
xmldoc.load("myblog.xml"); //显示错误的信息
document.write("错误信息="+xmldoc.parseError.reason+"<br />");
document.write("错误的行号"+xmldoc.parseError.line+"<br />");
-->
</script>
</head> <body>
</body>
</html>

需要检测的xml文件(myblog.xml)

1 <?xml version="1.0" encoding="utf-8"?>
2
3 <!--加载dtd文件-->
4 <!DOCTYPE class SYSTEM "mydtd.dtd">
5 <class>
6 <stu>
7 <name>Jimmy</name>
8 <sex>man</sex>
9 <age>19</age>
10 </stu>
11
12 <stu>
13 <name>Tommy</name>
14 <sex>women</sex>
15 <age>20</age>
16 </stu>
17
18 <stu>
19 <name>Ketty</name>
20 <sex>women</sex>
21 <age>21
22 </stu>
23 </class>

定义规范的dtd文件(mydtd.dtd)
1 <!ELEMENT class (stu+)>
2 <!ELEMENT stu (name,sex,age)>
3 <!ELEMENT name (#PCDATA)>
4 <!ELEMENT sex (#PCDATA)>
5 <!ELEMENT age (#PCDATA)>
我们从htm代码开始讲吧,学过c++、java、.net的人知道New一个类是在创建一个对象,这里第一句话的意思就是创建一个检测xml文件的对象,并命名为xmldoc变量,然后我们开启了检验的功能,在然后我们确定需要校验的xml文件,如果不在同一个目录下可以用相对路径或者绝对路径的方法找到xml文件。如果有错误那我们则把错误找出并现在在页面上。

接着我们看看xml文件吧
别的地方就不讲了,其中有句话是加载dtd的文件:<!DOCTYPE class SYSTEM "mydtd.dtd">
其中定义的格式规范为
<!DCTYPE 根元素名 SYSTEM "写dtd的路径">
<!DCTYPE 根元素名 [dtd元素内容]>
因为我们这里的跟元素是class 且mydtd.dtd和myblog是同一个目录所以最后为<!DOCTYPE class SYSTEM "mydtd.dtd">
最后我们来分析一下mydtd.dtd文件
元素的定义格式为:
<!ELEMENT 元素名称 (元素内容)>
如果是空元素则可以这样定义:
<!ELEMENT 元素名称 EMPTY>
这里我们看到在根元素下面有很多的stu元素,所以<!ELEMENT class (stu+)>
其中+的意思stu这个元素的个数为1到n
如果是*则stu的元素的个数为0到n
其他具体的修饰符这里就不列举了,感兴趣的话去官网查一下。
接着我们看到stu元素下面有name、sex、age 3个元素所以我们定义<!ELEMENT stu (name,sex,age)>
如果你去掉其中一个stu下面的一个age则用Checkdtd.htm会提示错误。这里就不测试了。
最后一句的意思是<!ELEMENT name (#PCDATA)>定义name这个元素的的数据类型可以为字符串。
学习总结,这些是本人对xml的学习的总结,希望对你又帮助 ,如果有什么不对的地方 请指出!
xml学习篇(一)的更多相关文章
- [python xml 学习篇][0]
tree = ET.parse("Result.xml")root = tree.getroot()print type(root)print root.tag # 得到root ...
- xml学习篇(二) ----JSON 和XML对比
在比较JSON和XML之前,我们先来上一堂关于数据格式的简要历史(更准确的说,是关于XML的始祖): 早在1970年,IBM开发了一种叫Generalized Markup Language的标记语言 ...
- Tomcat集群配置学习篇-----分布式应用
Tomcat集群配置学习篇-----分布式应用 现目前基于javaWeb开发的应用系统已经比比皆是,尤其是电子商务网站,要想网站发展壮大,那么必然就得能够承受住庞大的网站访问量:大家知道如果服务器访问 ...
- J2EE学习篇之--Struts1详解
今天来看一下Struts1的相关知识,其实Struts现在是出名的,每个Web开发者都会知道的,也是现在比较流行的框架,下面就来看一下我们为什么要用Struts框架呢? 摘要 1.建立在mvc这种好的 ...
- delphi操作xml学习笔记 之一 入门必读
Delphi 对XML的支持---TXMLDocument类 Delphi7 支持对XML文档的操作,可以通过TXMLDocument类来实现对XML文档的读写.可以利用TXMLDocum ...
- 学习篇之SVG
学习篇之SVG 一.use重用 与 g组合 xmlns变量实际上指示浏览器如何解释称为SVG的XML方言 <g></g> 组合 <use /> 重用 <ell ...
- 转载 Tomcat集群配置学习篇-----分布式应用
Tomcat集群配置学习篇-----分布式应用 现目前基于javaWeb开发的应用系统已经比比皆是,尤其是电子商务网站,要想网站发展壮大,那么必然就得能够承受住庞大的网站访问量:大家知道如果服务器访问 ...
- JavaWeb学习篇之----自定义标签&&JSTL标签库详解
今天来看一下自定义标签的内容,自定义标签是JavaWeb的一部分非常重要的核心功能,我们之前就说过,JSP规范说的很清楚,就是Jsp页面中禁止编写一行Java代码,就是最好不要有Java脚本片段,下面 ...
- js学习篇1--数组
javascript的数组可以包含各种类型的数据. 1. 数组的长度 ,直接用 length 属性; var arr=[1,2,3]; arr.length; js中,直接给数组的length赋值是会 ...
随机推荐
- c语言的数组指针与指针数组
1. 数组指针:指向数组的指针是数组指针 先看下面一段代码: #include <stdio.h> int main(void) { int m[10]; printf("m = ...
- php递归数组中的应用
<?php $arr = array(array(1,2), array(3, 4), array(array(5, 6), array(7, 8)));function t($a){ i ...
- Day20 Django之Model多对多、中间件、缓存、信号和分页
一.Form补充 class IndexForm(forms.Form): # c = [ # (1, 'CEO'), # (2, 'CTO') # ] # 静态字段,属于IndexForm类,即使数 ...
- POJ 2049 Finding Nemo bfs 建图很难。。
Finding Nemo Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 6952 Accepted: 1584 Desc ...
- hadoop的一些重要配置参数
hadoop集群管理内存设置 Mapreduce内存使用设置 hadoop job重要性能参数
- bootstrap datepicker时间插件显示位置不对
bppystrap-datetimepicker.min.js中,修改如下:将原来的 if(!b(this.element)){l=l+document.body.scrollTop}改 ...
- swift中类似宏定义
建一个类 如,在Contans.swift中 import UIKit let kMAIN_SIZE = UIScreen.mainScreen().bounds 在其他地方直接用 比如在 MyTab ...
- 如何通过js使搜索关键词高亮
给你推荐通过jquery来实现高亮关键词.jquery.textSearch-1.0.js代码: (function($){ $.fn.textSearch =function(str,options ...
- Android与服务器端数据交互(http协议整合struts2+android)
在android中有时候我们不需要用到本机的SQLite数据库提供数据,更多的时候是从网络上获取数据,那么Android怎么从服务器端获取数据呢?有很多种,归纳起来有 一:基于Http协议获取数据方法 ...
- Linux iconv使用
iconv [选项]文件 输入/输出格式规范:-f, --from-code=名称 原始文本编码-t, --to-code=名称 输出编码 信息:-l, --list 列举所有已知的字符集 输出控制: ...