📄 xsl~1l.htm
字号:
<html>
<head>
<title>理解XSL</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style type="text/css">
<!--
H1 { font-size: 12.5pt }
P
{
FONT-FAMILY: "宋体";
FONT-SIZE: 9pt
}
H3
{
FONT-FAMILY: "宋体";
FONT-SIZE: 11.5pt
}
a:link { color: blue; text-decoration: none}
a:visited { color: purple; text-decoration: none}
a:hover { color: #CC0033; text-decoration: underline}
-->
</style>
<link rel="stylesheet" href="../../Global.css" tppabs="http://www.xml.org.cn:8188/Global.css"></head>
<body bgcolor="#FFFFFF">
<table width="85%" border="0" align="center">
<tr>
<td height="28" rowspan="2"> </td>
<td height="14">
<div align="center">
<p>[<a href="../../default.asp" tppabs="http://www.xml.org.cn:8188/default.asp" target="_parent">返回首页</a>] [<a href="../resource.htm" tppabs="http://www.xml.org.cn:8188/resource/resource.htm" target="_parent">返回资源</a>]
</p>
<h2> <a name="top"></a><font color="#3366FF">理解XSL</font></h2>
</div>
</td>
<td height="28" rowspan="2"> </td>
</tr>
<tr>
<td height="23">
<div align="center">
<p><b>作者:<a href="mailto:jay@wired.com">Jay Greenspan</a> 编者:<a href="mailto:sunyzx@tangram.com.cn">孙一中</a></b></p>
</div>
</td>
</tr>
<tr>
<td colspan="3">
<h3><font color="#FF0000">第一节</font> <a href="#1">理解XSL</a> <font color="#FF0000"><br>
第二节</font> <a href="#2">攀登结果树</a> <font color="#FF0000"><br>
第三节</font> <a href="#3">一个XSL样式表</a> <font color="#FF0000"><br>
第四节</font> <a href="#4">选择XSL</a><br>
<font color="#FF0000">第五节</font> <a href="#5">从规范到实现</a><br>
<font face="黑体"></font> </h3>
<h3><b>第一节:理解XSL <a name="1"></a></b></h3>
<p><span class="normal105">有一天晚上我做了一个梦。这个梦真吓人。但如我告诉我的释梦师的,如果你没有读过写使用XML和我妈妈的菜谱赚钱的计划,这个梦就没什么意义。</span></p>
<p><span class="normal105">不管怎么说,这个梦......</span></p>
<p><span class="normal105">那是在公元2001年,我用我妈妈的菜谱建立了一个网站,而且行得不错。网站的节读数很高,得到的反馈也很多。后来就到了电话,是Michael
Ovitz打来的。他告诉我他回来做生意,想把这些菜谱作为事业的起点。他认为其潜力不仅仅在于它一份菜谱,而是Sally Field领衔出演的一系列关于与恐怖份做斗争的身怀绝艺的技艺精湛的厨师的电影。他所要的是一250个菜谱的标题和它们组成成分的清单。而且他希望在15分内得到它们。我狂喜,我颤栗,然后我意识到我用的是HTML。</span></p>
<p><span class="normal105">我从尖叫中醒来 - 冷汗顺着我的脸往下淌。</span></p>
<p><span class="normal105">为什么是个噩梦呢?梦中的是发生在将来,一个XML和它的同伴XSL(扩展样式表 - eXtensible
Stylesheet Languange)被广泛使用的时代。即使这样,我用HTML建立我的整个菜谱网站,不是XML。而且,HTML就是HTML
- 我没有办法从中通过拷贝粘贴提取想要的信息。CSS此时也毫无用处。但是如果我在梦用了XSL,我就会很快产生那份清单,然后快乐地从别人的天和努力中榨取利益。</span></p>
<p><span class="normal105">然而现在,XSL的允诺只是一个梦。关键在于从W3C的第一份草稿到发布第一份推荐稿至少要八个月(或至少一年)的时间。在完成之前,其规范可能要做根本性的改变。</span></p>
<p><span class="normal105">尽管这样,微软还是正在打算在其IE 5的第二个beta版中支持XSL现有草稿的功能。坦率地说,我不知道为什么它会在这上面耗费资源。因为这件事对每个人来说,谁都不愿意花费时间在学习一种在其实现之前就过时的语言。</span></p>
<p><span class="normal105">虽然如此,但理解XSL的要点还是很重要的 - 它会使Web开发者的生活更容易些。如果对XSL一无所知,对被经常吹捧的XML的一些优点的理解就会有困难。</span></p>
<p><span class="normal105">那么就让我们看看其中的一些基本概念 - 不太可能改变的东西。</span></p>
<h4><u><a href="#top"><<Top</a></u><br>
<br>
</h4>
<h3><b><a name="2"></a>第二节:攀登结果树</b></h3>
<p><span class="normal105">你从本文中学到的最重要的一点是XSL不仅仅是应用样式。当使用XML处理器时,XSL源文档中的信息将被评价、重新安排,然后重新组装。我们最终得到的不只是XML数据的可爱的版本
- 而是可以被容易地添加、修改和重新排序的灵活的源信息。这个最终产品叫做结果树(Result Tree)。</span></p>
<p><span class="normal105">这通过一系列测试产生。下面是一个简单的例子:</span></p>
<pre>
<span class="normal105"><xsl:template match="recipe_name">
<P>
<xsl:process-children/>
</P>
</xsl:template>
</span></pre>
<p><span class="normal105">最先要解释的是以"/" 结束的标记符是空的。即此种类型的标记符的起始和结束标记符之前什么也不发生。在HTML中类似的例子是<img>标记符。因为一个图像所需的所有信息都包含在一个标记符中,所以就没有必要存在结束标记符</img>。组织良好的XML文档可以接受空标记符,同时XSL样式表必须是组织良好的XML。</span></p>
<p><span class="normal105">让我们再回到例子,它告诉XSL处理器如果发现一套<recipe_name>标记符,就应该分离出内容然后用<p>和</p>包围起来。或者,如果你想炫耀你的XSL的知识,你可以说“添加到结果树中。”</span></p>
<p><span class="normal105">这是一个相当简单的测试,而且很典型。XML元素的内容被表现信息所包围。</span></p>
<p><span class="normal105">现在让我们看看书写菜谱的XSL样式表的完整例子。</span></p>
<p><span class="normal105">在我讲述更多的XSL标记之前,我要解释一个可能被问到的问题。谁都知道在HTML中<p>本身就足够了,那么我为什么要使用结束的</p>标记符呢?</span></p>
<p><span class="normal105">有人能回答吗?答案是:没有对应的结束标记符,那部分就不是组织良好的XML,于是会产生一个致命的错误。</span></p>
<h4><u><a href="#top"><<Top</a></u></h4>
<h3><br>
<b><a name="3"></a>第三节:一个XSL样式表</b> </h3>
<p><span class="normal105">下面是一个完整的样式表。</span></p>
<pre>
<span class="normal105"><xsl:stylesheet>
<xsl:template match = "/">
<HTML>
<BODY>
<xsl:process-children/>
</BODY>
</HTML>
</xsl:template>
<xsl:template match = "author">
<H1>
<xsl:process-children/>'s fabulous
</H1>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -