初识XML

来源:互联网 发布:wp config.php 修改 编辑:程序博客网 时间:2024/05/28 05:15

实体引用

在 XML 中,一些字符拥有特殊的意义。

如果你把字符 "<" 放在 XML 元素中,会发生错误,这是因为解析器会把它当作新元素的开始。

这样会产生 XML 错误:

<message>if salary < 1000 then</message>

为了避免这个错误,请用实体引用来代替 "<" 字符:

<message>if salary &lt; 1000 then</message> 

在 XML 中,有 5 个预定义的实体引用:

&lt;<小于&gt;>大于&amp;&和号&apos;'单引号&quot;"引号

注释:在 XML 中,只有字符 "<" 和 "&" 确实是非法的。大于号是合法的,但是用实体引用来代替它是一个好习惯。

 

XML 中的注释

在 XML 中编写注释的语法与 HTML 的语法很相似:

<!-- This is a comment --> 

 

避免 XML 属性?

因使用属性而引起的一些问题:

  • 属性无法包含多重的值(元素可以)
  • 属性无法描述树结构(元素可以)
  • 属性不易扩展(为未来的变化)
  • 属性难以阅读和维护

拥有正确语法的 XML 被称为“形式良好”的 XML。

通过 DTD 验证的 XML 是“合法”的 XML。

形式良好的 XML 文档

“形式良好”或“结构良好”的 XML 文档拥有正确的语法。

“形式良好”(Well Formed)的 XML 文档会遵守前几章介绍过的 XML 语法规则:

  • XML 文档必须有根元素
  • XML 文档必须有关闭标签
  • XML 标签对大小写敏感
  • XML 元素必须被正确的嵌套
  • XML 属性必须加引号

使用 XSLT 显示 XML

XSLT 是首选的 XML 样式表语言。

XSLT (eXtensible Stylesheet Language Transformations) 远比 CSS 更加完善。

使用 XSLT 的方法之一是在浏览器显示 XML 文件之前,先把它转换为 HTML

 

解析 XML

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

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

 

注释:Internet Explorer 使用 loadXML() 方法来解析 XML 字符串,而其他浏览器使用DOMParser 对象。

注释:loadXML() 方法用于加载字符串(文本),load() 用于加载文件。

 

XML 文档中的每个成分都是一个节点。

DOM (Document Object Model,文档对象模型)定义了访问和操作文档的标准方法。

XML DOM

XML DOM (XML Document Object Model) 定义了访问和操作 XML 文档的标准方法。

DOM 把 XML 文档作为树结构来查看。能够通过 DOM 树来访问所有元素。可以修改或删除它们的内容,并创建新的元素。元素,它们的文本,以及它们的属性,都被认为是节点。

在下面的例子中,我们使用 DOM 引用从 <to> 元素中获取文本:

xmlDoc.getElementsByTagName("to")[0].childNodes[0].nodeValue
  • xmlDoc -由解析器创建的 XML 文档
  • getElementsByTagName("to")[0] - 第一个 <to> 元素
  • childNodes[0] - <to> 元素的第一个子元素(文本节点)
  • nodeValue - 节点的值(文本本身)

note:只有一个 <from> 标签,但是仍然需要规定数组的下标 [0],这是因为 getElementsByTagName() 方法会返回包含所有 <from> 节点的数组。

HTML DOM

HTML DOM (HTML Document Object Model) 定义了访问和操作 HTML 文档的标准方法。

可以通过 HTML DOM 访问所有 HTML 元素。

在下面的例子中,我们使用 DOM 引用来改变 id="to" 的 HTML 元素的文本:

document.getElementById("to").innerHTML=
  • document - HTML 文档
  • getElementById("to") - 其中的 id="to" 的 HTML 元素
  • innerHTML - HTML 元素的内部文本

XML 命名空间(XML Namespaces)

XML 命名空间提供避免元素命名冲突的方法。

XML Namespace (xmlns) 属性

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

xmlns:namespace-prefix="namespaceURI"

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

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

 

<h:table xmlns:h="http://www.w3.org/TR/html4/">   <h:tr>   <h:td>Apples</h:td>   <h:td>Bananas</h:td>   </h:tr></h:table>

此 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>

与仅仅使用前缀不同,我们为 <table> 标签添加了一个 xmlns 属性,这样就为前缀赋予了一个与某个命名空间相关联的限定名称

 

XML CDATA

所有 XML 文档中的文本均会被解析器解析。

只有 CDATA 区段(CDATA section)中的文本会被解析器忽略。

CDATA

术语 CDATA 指的是不应由 XML 解析器进行解析的文本数据(Unparsed Character Data)。

在 XML 元素中,"<" 和 "&" 是非法的。

"<" 会产生错误,因为解析器会把该字符解释为新元素的开始。

"&" 也会产生错误,因为解析器会把该字符解释为字符实体的开始。

某些文本,比如 JavaScript 代码,包含大量 "<" 或 "&" 字符。为了避免错误,可以将脚本代码定义为 CDATA

CDATA 部分中的所有内容都会被解析器忽略。

CDATA 部分由 "<![CDATA[" 开始,由 "]]>" 结束:

<script><![CDATA[function matchwo(a,b){if (a < b && a < 0) then  {  return 1;  }else  {  return 0;  }}]]></script>

在上面的例子中,解析器会忽略 CDATA 部分中的所有内容。

关于 CDATA 部分的注释:

CDATA 部分不能包含字符串 "]]>"。也不允许嵌套的 CDATA 部分。

标记 CDATA 部分结尾的 "]]>" 不能包含空格或折行。

 

从数据库获取 XML

XML 可在不安装任何 XML 软件的情况下从数据库生成。

如需从服务器生成 XML 数据库响应,只需简单地编写以下代码,并把它在服务器上保存为 ASP 文件:

<%response.ContentType = "text/xml"set conn=Server.CreateObject("ADODB.Connection") conn.provider="Microsoft.Jet.OLEDB.4.0;"conn.open server.mappath("/db/database.mdb")sql="select FirstName,LastName from Persons"set rs=Conn.Execute(sql)rs.MoveFirst()response.write("<?xml version='1.0' encoding='ISO-8859-1'?>")response.write("<Customers>")while (not rs.EOF)  response.write("<Person>")  response.write("<FirstName>" & rs("FirstName") & "</FirstName>")  response.write("<LastName>" & rs("LastName") & "</LastName>")  response.write("</Person>")  rs.MoveNext()wendrs.close()conn.close()response.write("</Customers>")%>

 

 XML编辑器

 XML 是非常重要的技术,并且开发项目正在使用这些基于 XML 的技术:

  • 用 XML Schema 定义 XML 的结构和数据类型
  • 用 XSLT 来转换 XML 数据
  • 用 SOAP 来交换应用程序之间的 XML 数据
  • 用 WSDL 来描述网络服务
  • 用 RDF 来描述网络资源
  • 用 XPath 和 XQuery 来访问 XML 数据
  • 用 SMIL 来定义图形

专业的 XML 编辑器会帮助您编写无错的 XML 文档,根据某种 DTD 或者 schema 来验证 XML,以及强制您创建合法的 XML 结构。

XML 编辑器应该具有如下能力:

  • 为开始标签自动添加结束标签
  • 强制您编写合法的 XML
  • 根据某种 DTD 来验证 XML
  • 根据某种 Schema 来验证 XML
  • 对您的 XML 语法进行代码的颜色化

 

总结:

XML 概要

本教程已经向您讲解了如何使用 XML 来描述数据。

您已经理解,XML 应当用来从 HTML 那里分离数据。

XML 可被用来交换、共享以及存储数据。

 

下一步的学习内容应该是 XML DOM 和 XSLT

如果需要学习有关 XML 验证的知识,下一步的学习内容是 DTD 和 XML Schema。

XML DOM

XML DOM 定义了一种访问和操作 XML 文档的标准方法。

XML DOM 独立于语言和平台,可被任何编程语言使用,比如 Java、JavaScript 以及 VBScript。

如果您希望学习有关 DOM 的知识,请访问我们的 XML DOM 教程。

XSLT

XSLT 是一种针对 XML 文件的样式表语言。

通过 XSLT,您可以把 XML 文档转换为其他格式,比如 XHTML。

如果您需要学习有关 XSLT 的知识,请访问我们的 XSLT 教程。

DTD 和 XML Schema

DTD 的作用是定义在 XML 文档中什么元素、属性以及实体是合法的。

通过 DTD,您的每个 XML 文件均可携带有关其自身格式的描述。

DTD 可用于验证您接收到的以及您自己的数据的有效性。

如果需要学习有关 DTD 的知识,请访问我们的 DTD 教程。

XML Schema 将取代 DTD。

XML Schema 是一种基于 XML 的 DTD 替代物。

与 DTD 不同,XML Schema 已经开始支持数据类型,同时 XML Schema 使用 XML 语法。

如果希望学习有关 XML Schema 的知识,请访问  XML Schema 教程。

 

 

 

 

 

 

0 0
原创粉丝点击