XML 入门

XML语法

所有 XML 元素都须有关闭标签

XML 标签对大小写敏感

XML 必须正确地嵌套

XML 文档必须有根元素

  就像HTML一样,HTML必须有<html>根元素。XML也必须有一个根元素,但是这个根元素是自己定义的,而非HTML那样已经定义好的

XML 的属性值须加引号

实体引用

  在 XML 中,一些字符拥有特殊的意义。如果你把字符 "<" 放在 XML 元素中,会发生错误,这是因为解析器会把它当作新元素的开始,这样会产生 XML 错误。

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

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

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

  xml中,5个预定义的实体引用:

  &lt;  <  小于

  &gt;  >  大于

  &amp;  &  和号

  &apos;  ‘  单引号

  &quot;  "  引号

XML 中的注释
  与 HTML 的语法一样

在 XML 中,空格会被保留

  HTML 会把多个连续的空格字符裁减(合并)为一个,在 XML 中,文档中的空格不会被删节

XML 以 LF 存储换行

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

XML元素

XML 元素指的是从(且包括)开始标签直到(且包括)结束标签的部分。元素可包含其他元素、文本或者两者的混合物。元素也可以拥有属性。

<bookstore>
<book category="CHILDREN">
<title>Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="WEB">
<title>Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>

XML 命名规则

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

最佳命名习惯

使名称具有描述性。使用下划线的名称也很不错:<first_name>、<last_name>。

名称应简短和简单,比如:<book_title>,而不是:<the_title_of_the_book>。

避免 "-" 字符。如果您按照这样的方式进行命名:"first-name",一些软件会认为您想要从 first 里边减去 name。

避免 "." 字符。如果您按照这样的方式进行命名:"first.name",一些软件会认为 "name" 是对象 "first" 的属性。

避免 ":" 字符。冒号会被转换为命名空间来使用(稍后介绍)。

XML 文档经常有一个对应的数据库,其中的字段会对应 XML 文档中的元素。有一个实用的经验,即使用数据库的命名规则来命名 XML 文档中的元素。

在 XML 中,éòá 等非英语字母是完全合法的,不过需要留意,您的软件供应商不支持这些字符时可能出现的问题。

XML 元素是可扩展的

  XML 元素是可扩展,以携带更多的信息,如:

<note>
<to>Tove</to>
<from>Jani</from>
<body>Don‘t forget me this weekend!</body>
</note>

让我们设想一下,我们创建了一个应用程序,可将 <to>、<from> 以及 <body> 元素从 XML 文档中提取出来,并产生以下的输出:

MESSAGE
To: Tove
From: Jani

Don‘t forget me this weekend!

想象一下,XML 文档的作者添加的一些额外信息:

<note>
<date>2008-01-10</date>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don‘t forget me this weekend!</body>
</note>

那么这个应用程序会中断或崩溃吗?

不会。这个应用程序仍然可以找到 XML 文档中的 <to>、<from> 以及 <body> 元素,并产生同样的输出。

XML 的优势之一,就是可以在不中断应用程序的情况下进行扩展

XML属性

XML元素具有属性,类似 HTML。

属性(Attribute)提供有关元素的额外信息

HTML例子:

<img src="computer.gif">
<a href="demo.html">

XML例子:

属性通常提供不属于数据组成部分的信息。在下面的实例中,文件类型与数据无关,但是对需要处理这个元素的软件来说却很重要:

<file type="gif">computer.gif</file>

XML 元素 vs. 属性

例子:

<person sex="female">
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>

<person>
<sex>female</sex>
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>

在第一个实例中,sex 是一个属性。在第二个实例中,sex 是一个元素。这两个实例都提供相同的信息。

没有什么规矩可以告诉我们什么时候该使用属性,而什么时候该使用元素。我的经验是在 HTML 中,属性用起来很便利,但是在 XML 中,应该尽量避免使用属性。如果信息感觉起来很像数据,那么请使用元素吧。

尽量描述详细

第一个实例中使用了 date 属性:
<note date="10/01/2008">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don‘t forget me this weekend!</body>
</note>

第二个实例中使用了 date 元素:
<note>
<date>10/01/2008</date>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don‘t forget me this weekend!</body>
</note>

第三个实例中使用了扩展的 date 元素(这个最好):
<note>
<date>
<day>10</day>
<month>01</month>
<year>2008</year>
</date>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don‘t forget me this weekend!</body>
</note>

避免 XML 属性?

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

  属性不能包含多个值(元素可以)

  属性不能包含树结构(元素可以)

  属性不容易扩展(为未来的变化)

属性难以阅读和维护。请尽量使用元素来描述数据。而仅仅使用属性来提供与数据无关的信息

针对元数据的 XML 属性

有时候会向元素分配 ID 引用。这些 ID 索引可用于标识 XML 元素,它起作用的方式与 HTML 中 id 属性是一样的。这个实例向我们演示了这种情况:

<messages>
<note id="501">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don‘t forget me this weekend!</body>
</note>
<note id="502">
<to>Jani</to>
<from>Tove</from>
<heading>Re: Reminder</heading>
<body>I will not</body>
</note>
</messages>

上面的 id 属性仅仅是一个标识符,用于标识不同的便签。它并不是便签数据的组成部分。

在此我们极力向您传递的理念是:元数据(有关数据的数据)应当存储为属性,而数据本身应当存储为元素。

XML验证

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

通过 DTD 验证的XML是"合法"的 XML。

"形式良好"的 XML 文档拥有正确的语法:

  XML 文档必须有一个根元素

  XML元素都必须有一个关闭标签

  XML 标签对大小写敏感

  XML 元素必须被正确的嵌套

  XML 属性值必须加引号

验证 XML 文档

合法的 XML 文档的前提必须是"形式良好"的 XML 文档,这也符合文档类型定义(DTD)的规则:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE note SYSTEM "Note.dtd">
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don‘t forget me this weekend!</body>
</note>

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

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

Schema

W3C 支持一种基于 XML 的 DTD 代替者,它名为 XML Schema:

<xs:element name="note">

<xs:complexType>
<xs:sequence>
<xs:element name="to" type="xs:string"/>
<xs:element name="from" type="xs:string"/>
<xs:element name="heading" type="xs:string"/>
<xs:element name="body" type="xs:string"/>
</xs:sequence>
</xs:complexType>

</xs:element>

XML查看

在所有主流的浏览器中,均能够查看原始的 XML 文件。

不要指望 XML 文件会直接显示为 HTML 页面。

为什么 XML 显示这个样子?

  XML 文档不会携带有关如何显示数据的信息。

  由于 XML 标签由 XML 文档的作者"发明",浏览器无法确定像 <table> 这样一个标签究竟描述一个 HTML 表格还是一个餐桌。

  在没有任何有关如何显示数据的信息的情况下,大多数的浏览器都会仅仅把 XML 文档显示为源代码。

XML CSS

通过使用 CSS(Cascading Style Sheets 层叠样式表),可以添加显示信息到 XML 文档中。

使用 CSS 来格式化 XML 文档是有可能的

未使用CSS的XML:

针对该xml做一个css文件:

加入了CSS样式后的XML的显示:

下面是 XML 文件的一小部分。第二行把 XML 文件链接到 CSS 文件:

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/css" href="cd_catalog.css"?>
<CATALOG>
<CD>
<TITLE>Empire Burlesque</TITLE>
<ARTIST>Bob Dylan</ARTIST>
<COUNTRY>USA</COUNTRY>
<COMPANY>Columbia</COMPANY>
<PRICE>10.90</PRICE>
<YEAR>1985</YEAR>
</CD>
<CD>
<TITLE>Hide your heart</TITLE>
<ARTIST>Bonnie Tyler</ARTIST>
<COUNTRY>UK</COUNTRY>
<COMPANY>CBS Records</COMPANY>
<PRICE>9.90</PRICE>
<YEAR>1988</YEAR>
</CD>
.
.
.
</CATALOG>

虽然说使用 CSS 是可以格式化 XML,但这不是常用的方法。W3C 推荐使用 XSLT

使用 XSLT 显示 XML

通过使用 XSLT,可以把 XML 文档转换成 HTML 格式

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

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

XSLT 是在浏览器显示 XML 文件之前,先把它转换为 HTML

在服务器上通过 XSLT 转换 XML

在上面的实例中,当浏览器读取 XML 文件时,XSLT 转换是由浏览器完成的。

在使用 XSLT 来转换 XML 时,不同的浏览器可能会产生不同结果。为了减少这种问题,可以在服务器上进行 XSLT 转换

时间: 2024-11-07 09:29:40

XML 入门的相关文章

XML学习总结(二)——XML入门

一.XML语法学习 学习XML语法的目的就是编写XML 一个XML文件分为如下几部分内容: 文档声明 元素 属性 注释 CDATA区 .特殊字符 处理指令(processing instruction) 1.1.xml语法——文档声明 在编写XML文档时,需要先使用文档声明,声明XML文档的类型. 最简单的声明语法: <?xml version="1.0" ?> 例如: 1 <?xml version="1.0"?> 2 <softCo

xml入门

l常见用途 (1) 数据传送通用格式 比如qq之间的数据传送做案例进行详细讲解,用xml格式来传送数据,具有良好的可读性性,可维护性. (2)配置文件 xml文件做配置文件可以说非常的普遍,比如我们的tomcat服务器的server.xml ,web.xml . 在比如我们的struts中的struts-config.xml文件,和hibernate的hibernate.cfg.xml ..... (3) 充当小型数据库 xml文件做小型数据库,也是不错的选择,我们程序中可能用到一些经常要人工配

sql xml 入门

/*sql xml 入门: 1.xml: 能认识元素.属性和值 2.xpath: 寻址语言,类似windows目录的查找(没用过dir命令的话就去面壁) 语法格式,这些语法可以组合为条件: "."表示自己,".."表示父亲,"/"表示儿子,"//"表示后代, "name"表示按名字查找,"@name"表示按属性查找 "集合[条件]" 表示根据条件取集合的子集,条件可以

Java进阶学习第五天——XML入门

文档版本 开发工具 测试平台 工程名字 日期 作者 备注 V1.0 2016.04.14 lutianfei none onsubmit事件 控制表单提交 需要把onsubmit作用在表单上 <form onsubmit=""> 值的写法:onsubmit="return run()" run()必须要有返回值,必须返回true或者false. 如果返回是true,表单可以提交,如果返回false,表单不能提交.如果没有返回值,默认是表单提交. run(

XML入门知识

什么是XML? 答:指可扩展标记语言(eXtensible Markup Language),被设计用来传输和存储数据:标签没有被预定义.您需要自行定义标签:被设计为具有自我描述性. XML和HTML的区别是什么? 答:前者目的是用来传输和存储数据,其焦点是数据的内容:后者则是用来显示数据,其焦点是数据的外观. XML的用途是什么? 答:XML 应用于 Web 开发的许多方面,常用于简化数据的存储和共享.1.XML把数据从HTML中分离出来,这样能使开发者专注于HTML/CSS的编写:2.XML

XML是什么,它能够做什么?——写给XML入门者

XML就可以扩展标记语言(eXtensible Markup Language).标记是指计算机所能理解的信息符号,通过此种标记,计算机之间能够处理包括各种信息的文章等.怎样定义这些标记,既能够选择国际通用的标记语言,比方HTML,也能够使用象XML这样由相关人士自由决定的标记语言,这就是语言的可扩展性.XML是从SGML中简化改动出来的.它主要用到的有XML.XSL和XPath等. 上面这段是对XML的一个基本定义,一个被广泛接受的说明.简单说,XML就是一种数据的描写叙述语言,尽管它是语言,

xml入门学习

在编写XML文档时,需要先使用文档声明,声明XML的文档类型 <?xml version="1.0" encoding ="GB2312"  ?> //encoding属性说明文档的字符编码 xml以什么编码保存,就要以什么编码打开,否则会乱码 一些xml文件编写的正确与否,直接用IE打开就可以检测(文本保存格式和 文本设置格式必须一样,不然IE会报错) <a> <b>1</b> <c>2</c>

Javaweb入门20160301 ---xml入门

一.xml语法 1.文档声明 用来声明xml的基本属性,用来指挥解析引擎如何去解析当前xml 通常一个xml都要包含并且只能包含一个文档声明 xml的文档必须在整个xml的最前面,在文档声明之前不能有任何内容 <?xml version="1.0" ?>--version是必须存在的属性,表明当前xml所遵循规范的版本,目前位置都写1.0就可以了 <?xml version="1.0" encoding="utf-8" ?>

XML入门说明

一.xml语法 1.文档声明 用来声明xml的基本属性,用来指挥解析引擎如何去解析当前xml 通常一个xml都要包含并且只能包含一个文档声明 xml的文档必须在整个xml的最前面,在文档声明之前不能有任何内容 <?xml version="1.0" ?>--version是必须存在的属性,表明当前xml所遵循规范的版本,目前位置都写1.0就可以了 <?xml version="1.0" encoding="utf-8" ?>

《xml入门经典》学习进程之开篇章

XML是可扩展标记语言,是SGML语言的一个子集. 它是一种元标记语言. 与HTML相比,不仅可以描述文档外观,而且可以描述文档的内容和结构. 它本身就是一种文本格式. 它主要有两种应用:一个是用来表述底层数据,如配置文件:一个是用来为文档添加元数据. 计算机如何存取数据? 计算机中的数据文件分为两大类:二进制文件和文本文件. 二进制文件只能在某些特定的程序中读取和建立,因为它本身就是个比特流,只有创建二进制文件的应用程序才会理解比特流的含义. 例如,Word创建的以.doc为扩展名的文档就是一