浅谈xml

       在很早以前就听说xml,有“金饭碗”之称,自从从事软件这行以来也前前后后接触了这个东西,最近闲来无事,本人又从新查阅了其相关资料,特此整理于此,也好自己以后回头查阅。

      1。初提xml,我们也许会马上想到我们最早接触的一个东东html,所以我们首先要对两者区别先有个认识吧,      

XML 不是 HTML 的替代。

XML 和 HTML 为不同的目的而设计:

XML 被设计为传输和存储数据,其焦点是数据的内容

HTML 被设计用来显示数据,其焦点是数据的外观

HTML 旨在显示信息,而 XML 旨在传输信息。

还有一点,html是别人定义好的标签,你必须要按照其规定来编写,而xml却可以定义其他新标签,简单来说,ximl可以开发出像html这样的标签出来。

      2。xml的优点或者说作用

(1)XML 把数据从 HTML 分离:这点没什么说的,我们可以用xml存储数据,而用html来显示数据,这样我们后期的维护难度就大大降低了。

(2)XML 简化数据共享,简化数据传输:我们上面已经看到了xml重要是用来存储数据的,那我们也许会说存储的工具多了,如记事本,写字板,数据库等都可以啊,但xml强大的一点体现出来的,如果是在两个异构系统内实现数据的传输和共享的话,像什么记事本就无能为力吧,但xml可以做到,也就是说xml可以实现跨系统(异构)的数据共享。通过 XML,可以在不兼容的系统之间轻松地交换数据

(3)XML 使您的数据更有用:XML 独立于硬件、软件以及应用程序,XML 使您的数据更可用,也更有用。

通过 XML,您的数据可供各种阅读设备使用(手持的计算机、语音设备、新闻阅读器等),还可以供盲人或其他残障人士使用。

(4)哈哈,还有一点是它可以用来开发出新的internet的语言。

     3。xml的语法规则

(1)所有 XML 元素都须有关闭标签:也就是说标签必须有开始,有结束,这点相对html来说严格多了。

(2)XML 标签对大小写敏感,如XML 标签对大小写敏感。在 XML 中,标签 <Letter> 与标签 <letter> 是不同的。但html确实允许的

(3)XML 必须正确地嵌套:如下写法是错误的,<b><i>This text is bold and italic</b></i>,同样html中不会出现什么明显错误。

(4)XML 文档必须有根元素,而且只能有一个跟元素。

(5)XML 的属性值须加引号,单引号和双引号都可以。

注意:在 XML 中,空格会被保留,这点也和html不用。

XML 命名规则

XML 元素必须遵循以下命名规则:

  • 名称可以含字母、数字以及其他的字符
  • 名称不能以数字或者标点符号开始
  • 名称不能以字符 “xml”(或者 XML、Xml)开始
  • 名称不能包含空格

   一个完好或者正确的xml,重要包含两个方面:

1。首先保证xml是正确,即格式是合格的,结构是良好的或者说形式是良好的。

2。必须是有效的,即是符合dtd或者schema要求的。

 

前面我们已经提到了xml重要是用来存储数据,定义保存结构,但我们仍然可以使用样式来休息xml文件,也就是说我们可以使用css来修饰xml,当然,我们通常使用的是xslt(XML 样式表语言),这也是官方推荐的一种方式。

 

   关于xml的解析

所有现代浏览器都有读取和操作 XML 的内建 XML 解析器。

解析器把 XML 载入内存,然后把它转换为可通过 JavaScript 访问的 XML DOM 对象

如:var xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.load("note.xml");

解释:
  1. 上面代码的第一个行创建一个空的微软 XML 文档对象。
  2. 第二行关闭异步加载,这样确保在文档完全加载之前解析器不会继续脚本的执行。
  3. 第三行告知解析器加载名为 "note.xml" 的 XML 文档。

注意:微软的 XML 解析器与其他浏览器中的解析器之间,存在一些差异。微软的解析器支持 XML 文件和 XML 字符串(文本)的加载,而其他浏览器使用单独的解析器。不过,所有的解析器都包含遍历 XML 树、访问插入及删除节点(元素)及其属性的函数

接下来看一个更完整的例子:

<html>
<body>
<h1>W3School.com.cn Internal Note</h1>
<p><b>To:</b> <span id="to"></span><br />
<b>From:</b> <span id="from"></span><br />
<b>Message:</b> <span id="message"></span>

<script type="text/javascript">
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.open("GET","note.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;

document.getElementById("to").innerHTML=
xmlDoc.getElementsByTagName("to")[0].childNodes[0].nodeValue;

document.getElementById("from").innerHTML=
xmlDoc.getElementsByTagName("from")[0].childNodes[0].nodeValue;

document.getElementById("message").innerHTML=
xmlDoc.getElementsByTagName("body")[0].childNodes[0].nodeValue;
</script>

</body>
</html>
继续了解XML 命名空间:

在 XML 中,元素名称是由开发者定义的,当两个不同的文档使用相同的元素名时,就会发生命名冲突。

标示命名空间的地址不会被解析器用于查找信息。其惟一的作用是赋予命名空间一个惟一的名称。不过,很多公司常常会作为指针来使用命名空间指向实际存在的网页,这个网页包含关于命名空间的信息。

如:<f:table xmlns:f="http://www.w3school.com.cn/furniture">
   <f:name>African Coffee Table</f:name>
   <f:width>80</f:width>
   <f:length>120</f:length>
</f:table>

XML Namespace (xmlns) 属性

XML 命名空间属性被放置于元素的开始标签之中,并使用以下的语法:

xmlns:namespace-prefix="namespaceURI"

当命名空间被定义在元素的开始标签中时,所有带有相同前缀的子元素都会与同一个命名空间相关联。

关于xml的基础就到这里,接下来,总结dtd吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值