《重构HTML:改善Web应用的设计(修订版)》——2.7 XSLT

本节书摘来自异步社区《重构HTML:改善Web应用的设计(修订版)》一书中的第2章,第2.7节,作者: 【美】Elliotte Rusty Harold 更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.7 XSLT

在HTML转换为良构的XHTML后,XSLT(Extensible Stylesheet Language Transformations,可扩展样式表语言转换)是众多可运行在HTML文档上的XML工具之一。实际上,它是我最中意的工具之一,也是解决各种任务要做的第一件事。例如,我用它自动生成很多内容,比如通过HTML页面的零星整理生成RSS和Atom feed。为了能在文档上使用XSLT实际上也是重构文档为良构的XHTML的最大理由之一。XSLT可以查到文档需要修复的问题,并能自动化一些修复工作。

用XSLT来重构XHTML通常不需太多的改动。因此,大部分重构样式表是以代码清单2-9中的标识转换开始的。

代码清单2-9 XSLT中的标识转换

<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
 version='1.0'>
 xmlns:html='http://www.w3.org/1999/xhtml'
 xmlns='http://www.w3.org/1999/xhtml'
 exclude-result-prefixes='html'>

 <xsl:template match="@*|node()">
  <xsl:copy>
   <xsl:apply-templates select="@*|node()"/>
  </xsl:copy>
 </xsl:template>

</xsl:stylesheet>

虽然这只不过是将整个文档从输入复制到输出,但之后你就可以按照需求用一些额外的规则修改这个基本的样式表。例如,假如要把废弃的元素转换为元素,你可以添加如下规则:

<xsl:template match='html:i'>
 <em>
   <xsl:apply-templates select="@*|node()"/>
 </em>
</xsl:template>

需要注意的是,在match属性中XPath表达式必须使用命名空间前缀,尽管需要匹配的元素使用的是默认的命名空间。在转换XHTML文档时,这是一个常见的疑问。在XPath表达式中使用XHTML命名空间时,记住你必须总要赋予它一个前缀。

注解

介绍XSLT的好文章在书中或网上都可以找到。首先推荐我写的两篇。The XML 1.1 Bible(Wiley,2003)第15章包括了XSLT的深度介绍,它也可在www.cafeconleche.org/books/bible3/chapters/ch15.html上找到。Elliotte Harold和W. Scott Means著的XML in a Nutshell,3rd Edition(O’Reilly,2004)提供更为详细的介绍。最后,如果想了解得更深入,我推荐Michael Kay 的XSLT: Programmer’s Reference(Wrox,2001)和XSLT 2.0: Programmer’s Reference(Wrox,2004)。

上一篇:IDC Directions 2017:值得期待的智能数据中心技术


下一篇:PowerDesigner的样式设置