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

相关文章
|
7月前
|
前端开发 算法 API
构建高性能图像处理Web应用:Next.js与TailwindCSS实践
本文分享了构建在线图像黑白转换工具的技术实践,涵盖技术栈选择、架构设计与性能优化。项目采用Next.js提供优秀的SSR性能和SEO支持,TailwindCSS加速UI开发,WebAssembly实现高性能图像处理算法。通过渐进式处理、WebWorker隔离及内存管理等策略,解决大图像处理性能瓶颈,并确保跨浏览器兼容性和移动设备优化。实际应用案例展示了其即时处理、高质量输出和客户端隐私保护等特点。未来计划引入WebGPU加速、AI增强等功能,进一步提升用户体验。此技术栈为Web图像处理应用提供了高效可行的解决方案。
|
6月前
|
缓存 前端开发 应用服务中间件
Web端实时通信技术SSE在携程机票业务中的实践应用
本文介绍了携程机票前端基于Server-Sent Events(SSE)实现服务端推送的企业级全链路通用技术解决方案。文章深入探讨了 SSE 技术在应用过程中包括方案对比、技术选型、链路层优化以及实际效果等多维度的技术细节,为类似使用场景提供普适性参考和借鉴。该方案设计目标是实现通用性,适用于各种网络架构和业务场景。
214 1
|
7月前
|
缓存 前端开发 应用服务中间件
Web端实时通信技术SSE在携程机票业务中的实践应用
本文介绍了携程机票前端基于Server-Sent Events(SSE)实现服务端推送的企业级全链路通用技术解决方案。文章深入探讨了 SSE 技术在应用过程中包括方案对比、技术选型、链路层优化以及实际效果等多维度的技术细节,为类似使用场景提供普适性参考和借鉴。
296 7
|
10月前
|
中间件 关系型数据库 数据库
docker快速部署OS web中间件 数据库 编程应用
通过Docker,可以轻松地部署操作系统、Web中间件、数据库和编程应用。本文详细介绍了使用Docker部署这些组件的基本步骤和命令,展示了如何通过Docker Compose编排多容器应用。希望本文能帮助开发者更高效地使用Docker进行应用部署和管理。
328 19
|
10月前
|
前端开发
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
304 1
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
|
11月前
|
Web App开发 编解码 vr&ar
使用Web浏览器访问UE应用的最佳实践
在3D/XR应用开发中,尤其是基于UE(虚幻引擎)开发的高精度场景,传统终端因硬件局限难以流畅运行高帧率、复杂效果的三维应用。实时云渲染技术,将渲染任务转移至云端服务器,降低终端硬件要求,确保用户获得流畅体验。具备弹性扩展、优化传输协议、跨平台支持和安全性等优势,适用于多种终端和场景,特别集成像素流送技术,帮助UE开发者实现低代码上云操作,简化部署流程,保留UE引擎的强大开发能力,确保画面精美且终端轻量化。
504 17
使用Web浏览器访问UE应用的最佳实践
|
Kubernetes 安全 Devops
有效抵御网络应用及API威胁,聊聊F5 BIG-IP Next Web应用防火墙
有效抵御网络应用及API威胁,聊聊F5 BIG-IP Next Web应用防火墙
298 10
有效抵御网络应用及API威胁,聊聊F5 BIG-IP Next Web应用防火墙
|
弹性计算 Java 关系型数据库
Web应用上云经典架构实践教学
Web应用上云经典架构实践教学
288 2
Web应用上云经典架构实践教学
|
弹性计算 Java 数据库
Web应用上云经典架构实战
本课程详细介绍了Web应用上云的经典架构实战,涵盖前期准备、配置ALB、创建服务器组和监听、验证ECS公网能力、环境配置(JDK、Maven、Node、Git)、下载并运行若依框架、操作第二台ECS以及验证高可用性。通过具体步骤和命令,帮助学员快速掌握云上部署的全流程。
324 1
|
前端开发 JavaScript UED
在数字化时代,Web 应用性能优化尤为重要。本文探讨了CSS与HTML在提升Web性能中的关键作用及未来趋势
在数字化时代,Web 应用性能优化尤为重要。本文探讨了CSS与HTML在提升Web性能中的关键作用及未来趋势,包括样式表优化、DOM操作减少、图像优化等技术,并分析了电商网站的具体案例,强调了技术演进对Web性能的深远影响。
199 5