现在的位置: 首页 > 综合 > 正文

学习xml的好文章

2013年10月10日 ⁄ 综合 ⁄ 共 12919字 ⁄ 字号 评论关闭

http://www.w3school.com.cn/x.asp

XML 简介

XML 被设计用来传输和存储数据。

HTML 被设计用来显示数据。

应该掌握的基础知识:

在您继续学习之前,需要对以下知识有基本的了解:

  • HTML / XHTML

  • JavaScript

如果您希望首先学习这些项目,请在我们的首页 访问这些教程。

什么是 XML?

  • XML 指可扩展标记语言(EXtensibleMarkupLanguage

  • XML 是一种标记语言,很类似HTML

  • XML 的设计宗旨是传输数据,而非显示数据

  • XML 标签没有被预定义。您需要自行定义标签

  • XML 被设计为具有自我描述性

  • XML W3C
    的推荐标准

XML HTML的主要差异

XML 不是 HTML
的替代。

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

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

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

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

没有任何行为的XML

XML 是不作为的。

也许这有点难以理解,但是 XML不会做任何事情。XML被设计用来结构化、存储以及传输信息。

下面是 John
写给
George 的便签,存储为 XML

<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>

上面的这条便签具有自我描述性。它拥有标题以及留言,同时包含了发送者和接受者的信息。

但是,这个 XML文档仍然没有做任何事情。它仅仅是包装在XML标签中的纯粹的信息。我们需要编写软件或者程序,才能传送、接收和显示出这个文档。

XML 仅仅是纯文本

XML 没什么特别的。它仅仅是纯文本而已。有能力处理纯文本的软件都可以处理XML

不过,能够读懂 XML的应用程序可以有针对性地处理XML的标签。标签的功能性意义依赖于应用程序的特性。

通过 XML您可以发明自己的标签

上例中的标签没有在任何 XML标准中定义过(比如<to><from>)。这些标签是由文档的创作者发明的。

这是因为 XML
没有预定义的标签。

HTML
中使用的标签(以及
HTML 的结构)是预定义的。HTML文档只使用在HTML标准中定义过的标签(比如<p>
<h1>
等等)。

XML 允许创作者定义自己的标签和自己的文档结构。

XML 不是对 HTML的替代

XML 是对 HTML的补充

XML 不会替代 HTML,理解这一点很重要。在大多数web应用程序中,XML用于传输数据,而HTML用于格式化并显示数据。

XML
最好的描述是:

XML 是独立于软件和硬件的信息传输工具。

XML W3C
的推荐标准

可扩展标记语言 (XML)
1998 2
10 日成为 W3C
的推荐标准。

如需有关 W3C XML活动的更多信息,请访问我们的W3C教程

XML 无所不在

当我们看到 XML标准突飞猛进的开发进度,以及大批的软件开发商采用这个标准的日新月异的速度时,真的是不禁感叹这真是令人叹为观止。

目前,XML
Web 中起到的作用不会亚于一直作为Web
基石的
HTML

XML 无所不在。XML是各种应用程序之间进行数据传输的最常用的工具,并且在信息存储和描述领域变得越来越流行。

ML 应用于web开发的许多方面,常用于简化数据的存储和共享。

XML 把数据从 HTML分离

如果你需要在 HTML文档中显示动态数据,那么每当数据改变时将花费大量的时间来编辑HTML

通过 XML,数据能够存储在独立的XML文件中。这样你就可以专注于使用HTML进行布局和显示,并确保修改底层数据不再需要对HTML
进行任何的改变。

通过使用几行 JavaScript,你就可以读取一个外部XML文件,然后更新HTML中的数据内容。

提示:您将在稍后的章节学习更多这方面的内容。

XML 简化数据共享

在真实的世界中,计算机系统和数据使用不兼容的格式来存储数据。

XML 数据以纯文本格式进行存储,因此提供了一种独立于软件和硬件的数据存储方法。

这让创建不同应用程序可以共享的数据变得更加容易。

XML 简化数据传输

通过 XML,可以在不兼容的系统之间轻松地交换数据。

对开发人员来说,其中一项最费时的挑战一直是在因特网上的不兼容系统之间交换数据。

由于可以通过各种不兼容的应用程序来读取数据,以XML
交换数据降低了这种复杂性。

XML 简化平台的变更

升级到新的系统(硬件或软件平台),总是非常费时的。必须转换大量的数据,不兼容的数据经常会丢失。

XML 数据以文本格式存储。这使得XML
在不损失数据的情况下,更容易扩展或升级到新的操作系统、新应用程序或新的浏览器。

XML 使您的数据更有用

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

不同的应用程序都能够访问您的数据,不仅仅在HTML
页中,也可以从
XML数据源中进行访问。

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

XML 用于创建新的Internet语言

很多新的 Internet
语言是通过
XML 创建的:

其中的例子包括:

  • XHTML - 最新的HTML版本

  • WSDL - 用于描述可用的web service

  • WAP WML -用于手持设备的标记语言

  • RSS - 用于RSS feed的语言

  • RDF OWL -用于描述资源和本体

  • SMIL - 用于描述针针对 web的多媒体

假如开发人员都是理性的

假如他们都是理性的,就让未来的应用程序使用XML来交换数据吧。

未来也许会出现某种字处理软件、电子表格程序以及数据库,它们可以使用纯文本格式读取彼此的数据,而不需要使用任何的转换程序。

我们现在能做的只有祈祷微软公司和所有其他的软件开发商在这一方面取得一致了。

XML 文档形成了一种树结构,它从“根部”开始,然后扩展到“枝叶”。

一个 XML
文档实例

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
声明。它定义
XML 的版本 (1.0)
和所使用的编码
(ISO-8859-1 = Latin-1/西欧字符集)

下一行描述文档的根元素(像在说:“本文档是一个便签”):

<note>

接下来 4
行描述根的
4 子元素to,from, heading以及body):

<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>

最后一行定义根元素的结尾:

</note>

从本例可以设想,该 XML
文档包含了
John George
的一张便签。

XML 具有出色的自我描述性,你同意吗?

XML 文档形成一种树结构

XML 文档必须包含根元素。该元素是所有其他元素的父元素。

XML 文档中的元素形成了一棵文档树。这棵树从根部开始,并扩展到树的最底端。

所有元素均可拥有子元素:

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

父、子以及同胞等术语用于描述元素之间的关系。父元素拥有子元素。相同层级上的子元素成为同胞(兄弟或姐妹)。

所有元素均可拥有文本内容和属性(类似HTML
中)。

实例

上图表示下面的 XML
中的一本书:

<bookstore>
<book category="COOKING">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="CHILDREN">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="WEB">
<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>

例子中的根元素是 <bookstore>。文档中的所有<book>元素都被包含在<bookstore>中。

<book> 元素有 4个子元素:<title><author><year><price>

XML 的语法规则很简单,且很有逻辑。这些规则很容易学习,也很容易使用。

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

HTML,经常会看到没有关闭标签的元素:

<p>This is a paragraph
<p>This is another paragraph

XML
中,省略关闭标签是非法的。所有元素都必须有关闭标签:

<p>This is a paragraph</p>
<p>This is another paragraph</p>

注释:您也许已经注意到 XML声明没有关闭标签。这不是错误。声明不属于XML本身的组成部分。它不是XML元素,也不需要关闭标签。

XML 标签对大小写敏感

XML 元素使用 XML
标签进行定义。

XML 标签对大小写敏感。在 XML中,标签<Letter>与标签<letter>
是不同的。

必须使用相同的大小写来编写打开标签和关闭标签:

<Message>这是错误的。</message>
<message>这是正确的。</message>

注释:打开标签和关闭标签通常被称为开始标签和结束标签。不论您喜欢哪种术语,它们的概念都是相同的。

XML 必须正确地嵌套

HTML
中,常会看到没有正确嵌套的元素:

<b><i>This text is bold and italic</b></i>

XML
中,所有元素都必须彼此正确地嵌套:

<b><i>This text is bold and italic</i></b>

在上例中,正确嵌套的意思是:由于<i>
元素是在
<b>元素内打开的,那么它必须在 <b>元素内关闭。

XML 文档必须有根元素

XML 文档必须有一个元素是所有其他元素的父元素。该元素称为根元素

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

XML 的属性值须加引号

HTML
类似,
XML也可拥有属性(名称/值的对)。

XML
中,
XML的属性值须加引号。请研究下面的两个XML
文档。第一个是错误的,第二个是正确的:

<note date=08/08/2008>
<to>George</to>
<from>John</from>
</note>
<note date="08/08/2008">
<to>George</to>
<from>John</from>
</note>

在第一个文档中的错误是,note元素中的date属性没有加引号。

实体引用

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
中,空格会被保留

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
元素?

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>

在上例中,<bookstore>
<book> 都拥有元素内容,因为它们包含了其他元素。<author>只有文本内容,因为它仅包含文本。

在上例中,只有 <book>元素拥有属性(category="CHILDREN")

XML 命名规则

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

  • 名称可以含字母、数字以及其他的字符

  • 名称不能以数字或者标点符号开始

  • 名称不能以字符“xml”(或者XMLXml)开始

  • 名称不能包含空格

可使用任何名称,没有保留的字词。

最佳命名习惯

使名称具有描述性。使用下划线的名称也很不错。

名称应当比较简短,比如:<book_title>,而不是:<the_title_of_the_book>

避免 "-"字符。如果您按照这样的方式进行命名:"first-name",一些软件会认为你需要提取第一个单词。

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

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

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

非英语的字母比如 éòá也是合法的XML元素名,不过需要留意当软件开发商不支持这些字符时可能出现的问题。

XML 元素是可扩展的

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

请看下面这个 XML
例子:

<note>
<to>George</to>
<from>John</from>
<body>Don't forget the meeting!</body>
</note>

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

MESSAGE

To: George
From: John
Don't forget the meeting!

想象一下,之后这个XML文档作XML元素可以在开始标签中包含属性,类似HTML

属性 (Attribute)提供关于元素的额外(附加)信息。

XML 属性

HTML,你会回忆起这个:<imgsrc="computer.gif">"src"属性提供有关<img>元素的额外信息。

HTML
中(以及在
XML 中),属性提供有关元素的额外信息:

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

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

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

XML 属性必须加引号

属性值必须被引号包围,不过单引号和双引号均可使用。比如一个人的性别,person标签可以这样写:

<person sex="female">

或者这样也可以:

<person sex='female'>

注释:如果属性值本身包含双引号,那么有必要使用单引号包围它,就像这个例子:

<gangster name='George "Shotgun" Ziegler'>

或者可以使用实体引用:

<gangster name="George &quot;Shotgun&quot; Ziegler">

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中,您应该尽量避免使用属性。如果信息感觉起来很像数据,那么请使用子元素吧。

我最喜欢的方式

下面的三个 XML
文档包含完全相同的信息:

第一个例子中使用了 date属性:

<note date="08/08/2008">
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>

第二个例子中使用了 date
元素:

<note>
<date>08/08/2008</date>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>

第三个例子中使用了扩展的 date元素(这是我的最爱):

<note>
<date>
<day>08</day>
<month>08</month>
<year>2008</year>
</date>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>

避免 XML
属性?

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

  • 属性无法包含多重的值(元素可以)

  • 属性无法描述树结构(元素可以)

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

  • 属性难以阅读和维护

请尽量使用元素来描述数据。而仅仅使用属性来提供与数据无关的信息。

不要做这样的蠢事(这不是 XML应该被使用的方式):

<note day="08" month="08" year="2008"
to="George" from="John" heading="Reminder"
body="Don't forget the meeting!">
</note>

针对元数据的 XML
属性

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

<messages>
<note id="501">
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
<note id="502">
<to>John</to>
<from>George</from>
<heading>Re: Reminder</heading>
<body>I will not</body>
</note>
</messages>

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

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

者又向这个文档添加了一些额外的信息:

<note>
<date>2008-08-08</date>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>

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

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

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

XML 元素可以在开始标签中包含属性,类似HTML

属性 (Attribute)提供关于元素的额外(附加)信息。

XML 属性

HTML,你会回忆起这个:<imgsrc="computer.gif">"src"属性提供有关<img>元素的额外信息。

HTML
中(以及在
XML 中),属性提供有关元素的额外信息:

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

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

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

XML 属性必须加引号

属性值必须被引号包围,不过单引号和双引号均可使用。比如一个人的性别,person标签可以这样写:

<person sex="female">

或者这样也可以:

<person sex='female'>

注释:如果属性值本身包含双引号,那么有必要使用单引号包围它,就像这个例子:

<gangster name='George "Shotgun" Ziegler'>

或者可以使用实体引用:

<gangster name="George &quot;Shotgun&quot; Ziegler">

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中,您应该尽量避免使用属性。如果信息感觉起来很像数据,那么请使用子元素吧。

我最喜欢的方式

下面的三个 XML
文档包含完全相同的信息:

第一个例子中使用了 date属性:

<note date="08/08/2008">
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>

第二个例子中使用了 date
元素:

<note>
<date>08/08/2008</date>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>

第三个例子中使用了扩展的 date元素(这是我的最爱):

<note>
<date>
<day>08</day>
<month>08</month>
<year>2008</year>
</date>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>

避免 XML
属性?

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

  • 属性无法包含多重的值(元素可以)

  • 属性无法描述树结构(元素可以)

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

  • 属性难以阅读和维护

请尽量使用元素来描述数据。而仅仅使用属性来提供与数据无关的信息。

不要做这样的蠢事(这不是 XML应该被使用的方式):

<note day="08" month="08" year="2008"
to="George" from="John" heading="Reminder"
body="Don't forget the meeting!">
</note>

针对元数据的 XML
属性

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

<messages>
<note id="501">
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
<note id="502">
<to>John</to>
<from>George</from>
<heading>Re: Reminder</heading>
<body>I will not</body>
</note>
</messages>

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

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

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

命名冲突

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

这个 XML 文档携带着某个表格中的信息:

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

这个 XML 文档携带有关桌子的信息(一件家具):

<table>
<name>African Coffee Table</name>
<width>80</width>
<length>120</length>
</table>

假如这两个 XML 文档被一起使用,由于两个文档都包含带有不同内容和定义的 <table> 元素,就会发生命名冲突。

XML 解析器无法确定如何处理这类冲突。

使用前缀来避免命名冲突

此文档带有某个表格中的信息:

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

此 XML 文档携带着有关一件家具的信息:

<f:table>
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>

现在,命名冲突不存在了,这是由于两个文档都使用了不同的名称来命名它们的 <table> 元素 (<h:table> 和 <f:table>)。

通过使用前缀,我们创建了两种不同类型的 <table> 元素。

使用命名空间(Namespaces)

这个 XML 文档携带着某个表格中的信息:

<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 Namespace (xmlns) 属性

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

xmlns:namespace-prefix="namespaceURI"

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

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

请访问 http://www.w3.org/TR/html4/

统一资源标识符(Uniform Resource Identifier (URI))

统一资源标识符是一串可以标识因特网资源的字符。最常用的 URI 是用来标示因特网域名地址的统一资源定位器(URL)。另一个不那么常用的 URI 是统一资源命名(URN)。在我们的例子中,我们仅使用 URL。

默认的命名空间(Default Namespaces)

为元素定义默认的命名空间可以让我们省去在所有的子元素中使用前缀的工作。

请使用下面的语法:

xmlns="namespaceURI"

这个 XML 文档携带着某个表格中的信息:

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

此 XML 文档携带着有关一件家具的信息:

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

命名空间的实际应用

当开始使用 XSL 时,您不久就会看到实际使用中的命名空间。XSL 样式表用于将 XML 文档转换为其他格式,比如 HTML。

如果您仔细观察下面的这个 XSL 文档,就会看到大多数的标签是HTML标签。非 HTML 的标签都有前缀 xsl,并由此命名空间标示:"http://www.w3.org/1999/XSL/Transform":

<?xml version="1.0" encoding="ISO-8859-1"?><xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
><xsl:template match="/">
<html>
<body>
<h2>My CD Collection</h2>
<table border="1">
<tr>
<th align="left">Title</th>
<th align="left">Artist</th>
</tr>
<xsl:for-each select="catalog/cd">
<tr>
<td><xsl:value-of select="title"/></td>
<td><xsl:value-of select="artist"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template></xsl:stylesheet>

抱歉!评论已关闭.