XML学习笔记

来源:互联网 发布:数据库系统分为 编辑:程序博客网 时间:2024/06/07 02:47

XML学习笔记

XML(EXtensible Markup Language)可扩展标记语言

如下的一个XML文档实例

<?xml version="1.0" encoding="ISO-8859-1"?><note><to>George</to><from>John</from><heading>Reminder</heading><body>Don't forget the meeting!</body></note>

第一行定义 XML 的版本 (1.0) 和所使用的编码

XML语法规则
1.XML文档必须有根元素

<root>  <child>    <subchild>.....</subchild>  </child></root>

2.XML的属性必须加引号

实体引用
如下的<会产生XML错误

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

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

实体引用 字符 含义 &lt; < 小于 &gt; > 大于 &amp; & 和号 &apos; ‘ 单引号 &quot; “ 引号

XML中的注释

<!-- This is a comment --> 

在 XML 中,空格会被保留
HTML 会把多个连续的空格字符裁减(合并)为一个:

HTML:   Hello           my name is David.输出: Hello my name is David.

在 XML 中,文档中的空格不会被删节。

XML 以 LF 存储换行

在 Windows 应用程序中,换行通常以一对字符来存储:回车符 (CR) 和换行符 (LF)。这对字符与打字机设置新行的动作有相似之处。在 Unix 应用程序中,新行以 LF 字符存储。而 Macintosh 应用程序使用 CR 来存储新行。

XML 验证

拥有正确语法的 XML 被称为“形式良好”的 XML。
通过 DTD 验证的 XML 是“合法”的 XML。

验证 XML 文档

合法的 XML 文档是“形式良好”的 XML 文档,同样遵守文档类型定义 (DTD) 的语法规则:

<?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE note SYSTEM "Note.dtd"><note><to>George</to><from>John</from><heading>Reminder</heading><body>Don't forget the meeting!</body></note>  

在上例中,DOCTYPE 声明是对外部 DTD 文件的引用。下面的段落展示了这个文件的内容。

DTD 的作用是定义 XML 文档的结构。它使用一系列合法的元素来定义文档结构:

<!DOCTYPE note [  <!ELEMENT note (to,from,heading,body)>  <!ELEMENT to      (#PCDATA)>  <!ELEMENT from    (#PCDATA)>  <!ELEMENT heading (#PCDATA)>  <!ELEMENT body    (#PCDATA)>]> 

DTD

参考DTD 教程
DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块。
它使用一系列的合法元素来定义文档结构。
DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用。

1.内部的 DOCTYPE 声明
格式为<!DOCTYPE 根元素 [元素声明]>

如:

<?xml version="1.0"?><!DOCTYPE note [  <!ELEMENT note (to,from,heading,body)>  <!ELEMENT to      (#PCDATA)>  <!ELEMENT from    (#PCDATA)>  <!ELEMENT heading (#PCDATA)>  <!ELEMENT body    (#PCDATA)>]><note>  <to>George</to>  <from>John</from>  <heading>Reminder</heading>  <body>Don't forget the meeting!</body></note>

2.外部文档声明

格式为<!DOCTYPE 根元素 SYSTEM "文件名">
如:

<?xml version="1.0"?><!DOCTYPE note SYSTEM "note.dtd"><note><to>George</to><from>John</from><heading>Reminder</heading><body>Don't forget the meeting!</body></note> 

这是包含 DTD 的 "note.dtd" 文件:

<!ELEMENT note (to,from,heading,body)><!ELEMENT to (#PCDATA)><!ELEMENT from (#PCDATA)><!ELEMENT heading (#PCDATA)><!ELEMENT body (#PCDATA)>

PCDATA
PCDATA 的意思是被解析的字符数据(parsed character data)。
可把字符数据想象为 XML 元素的开始标签与结束标签之间的文本。
PCDATA 是会被解析器解析的文本。这些文本将被解析器检查实体以及标记。
文本中的标签会被当作标记来处理,而实体会被展开。
不过,被解析的字符数据不应当包含任何 &< 或者 > 字符;需要使用 &amp;&lt; 以及 &gt; 实体来分别替换它们。

如:<name><first>Bill</first><last>Gates</last></name>
而解析器会把它分解为像这样的子元素:

<name>   <first>Bill</first>   <last>Gates</last></name

CDATA
CDATA 的意思是字符数据(character data)。

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 部分结尾的 “]]>” 不能包含空格或折行。

XML Schema

参考Schema 教程
W3C 支持一种基于 XML 的 DTD 代替者,它名为 XML Schema
XML Schema 是基于 XML 的 DTD 替代者。
XML Schema 描述 XML 文档的结构。
XML Schema 语言也称作 XML Schema 定义(XML Schema Definition,XSD)。

对DTD的引用

<?xml version="1.0"?><!DOCTYPE note SYSTEM "http://www.w3school.com.cn/dtd/note.dtd"><note><to>George</to><from>John</from><heading>Reminder</heading><body>Don't forget the meeting!</body></note>

对 XML Schema 的引用

<?xml version="1.0"?><notexmlns="http://www.w3school.com.cn"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.w3school.com.cn note.xsd"><to>George</to><from>John</from><heading>Reminder</heading><body>Don't forget the meeting!</body></note>

XMLHttpRequest 对象

XMLHttpRequest 对象用于在后台与服务器交换数据。
创建 XMLHttpRequest 对象的语法:

xmlhttp=new XMLHttpRequest();

老版本的 Internet Explorer (IE5 和 IE6)使用 ActiveX 对象:

xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

高级

XML 命名空间(XML Namespaces)

XML 命名空间提供避免元素命名冲突的方法。
1.使用前缀来避免命名冲突

<h:table>   <h:tr>   <h:td>Apples</h:td>   <h:td>Bananas</h:td>   </h:tr></h:table>

2.使用命名空间(Namespaces)

<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 命名空间属性被放置于元素的开始标签之中,并使用以下的语法:

xmlns:namespace-prefix="namespaceURI"

默认的命名空间(Default Namespaces)

xmlns="namespaceURI"

如:

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