《重构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)。

相关文章
|
9天前
|
前端开发 JavaScript 关系型数据库
从前端到后端:构建现代化Web应用的技术探索
在当今互联网时代,Web应用的开发已成为了各行各业不可或缺的一部分。从前端到后端,这篇文章将带你深入探索如何构建现代化的Web应用。我们将介绍多种技术,包括前端开发、后端开发以及各种编程语言(如Java、Python、C、PHP、Go)和数据库,帮助你了解如何利用这些技术构建出高效、安全和可扩展的Web应用。
|
25天前
|
监控 Serverless 测试技术
Serverless 应用引擎常见问题之做的web服务计费如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
327 3
|
2天前
|
缓存 负载均衡 数据库
优化后端性能:提升Web应用响应速度的关键策略
在当今数字化时代,Web应用的性能对于用户体验至关重要。本文探讨了如何通过优化后端架构和技术手段,提升Web应用的响应速度。从数据库优化、缓存机制到异步处理等多个方面进行了深入分析,并提出了一系列实用的优化策略,以帮助开发者更好地应对日益增长的用户访问量和复杂的业务需求。
8 1
|
2天前
|
缓存 监控 数据库
Flask性能优化:打造高性能Web应用
【4月更文挑战第16天】本文介绍了提升Flask应用性能的七大策略:优化代码逻辑,减少数据库查询,使用WSGI服务器(如Gunicorn、uWSGI),启用缓存(如Flask-Caching),优化数据库操作,采用异步处理与并发(如Celery、Sanic),以及持续监控与调优。通过这些手段,开发者能有效优化Flask应用,适应大型或高并发场景,打造高性能的Web服务。
|
3天前
|
前端开发 搜索推荐 数据安全/隐私保护
HTML标签详解 HTML5+CSS3+移动web 前端开发入门笔记(四)
HTML标签详解 HTML5+CSS3+移动web 前端开发入门笔记(四)
13 1
|
3天前
|
PHP
web简易开发——通过php与HTML+css+mysql实现用户的登录,注册
web简易开发——通过php与HTML+css+mysql实现用户的登录,注册
|
3天前
|
数据库 开发者 Python
Python中使用Flask构建简单Web应用的例子
【4月更文挑战第15天】Flask是一个轻量级的Python Web框架,它允许开发者快速搭建Web应用,同时保持代码的简洁和清晰。下面,我们将通过一个简单的例子来展示如何在Python中使用Flask创建一个基本的Web应用。
|
7天前
|
JavaScript 前端开发 API
Vue.js:构建高效且灵活的Web应用的利器
Vue.js:构建高效且灵活的Web应用的利器
|
15天前
|
XML JSON JavaScript
使用JSON和XML:数据交换格式在Java Web开发中的应用
【4月更文挑战第3天】本文比较了JSON和XML在Java Web开发中的应用。JSON是一种轻量级、易读的数据交换格式,适合快速解析和节省空间,常用于API和Web服务。XML则提供更强的灵活性和数据描述能力,适合复杂数据结构。Java有Jackson和Gson等库处理JSON,JAXB和DOM/SAX处理XML。选择格式需根据应用场景和需求。
|
21天前
|
移动开发 监控 数据可视化
组态软件之万维组态介绍(web组态、html组态、vue2/vue3组态)
组态软件之万维组态、web组态、html组态、vue2/vue3组态,组态在工业自动化领域越来越重要,但由于市面上组态软件费用昂贵、集成复杂,使用技术门槛高,万维组态就应运而生;万维组态是一款功能强大的基于Web的可视化组态编辑器,采用标准HTML5技术,使用Vue2和Vue3语言,基于B/S架构进行开发,支持WEB端显示;支持快速集成,集成简单方便;支持在浏览器端完成便捷的人机交互,简单的拖拽即可完成可视化页面的设计;可快速构建和部署可扩展的SCADA、HMI、仪表板或LoT系统;
组态软件之万维组态介绍(web组态、html组态、vue2/vue3组态)