打造基于 XSL 的模板框架
创始人
2024-07-29 10:21:38
0次

xsl是一种标记语言,表示如何将xml文档的内容装换成另一种形式的文档。通过为xml写xsl来使得xml显示成不同的格式。 XSL 之于 XML ,就像 CSS 之于 HTML。它是指可扩展样式表语言 (EXtensible Stylesheet Language)。这是一种用于以可读格式呈现 XML 数据的语言。   

上图是本博客的页面布局图,也是最为普通常见的网页布局,具有代表性,这里就是用 XSL 打造这种布局的模板框架。

上图的特点是 Header、Righter、Footer 三个区域是公共区域,几乎所有页面都包含这三个区域。不同页面只在 Main 区域有差异。那么在制作页面时只要编写 Main 区域,其他区域只要包含三个公共区域就算完成页面了。这是正向思维,因为程序里面经常这么干,需要的时候就加载。正向思维只能解决小区域、临时性的加载或调用,无法形成框架。

框架的作用是使页面继承框架,又能重写扩展。既节省时间重用模块,又能体现灵活性。快乐笛子的博客-专注于XML技术与前端开发刚好与上面的分析相反,这里要用到反向思维。编写的页面是框架的一个区域,当前页面是被主框架调用,而不是主动调用其他区域。按照左图所示,先编写框架,包含 Header、Righter、Footer,Main区域的位置留空,调用一个固定名称的 Template,如 Main(类似于C语言的 main 函数)。

主框架文件名为:mainframe.xsl,主要代码如下:

  1.  
  2.  
  3. 主框架 
  4.  
  5.  
  6.  
  7. Header
 
  •  
  •  
  •  
  •  
  • Righter
  •  
  •  
  • Footer
  •  
  •  
  •  
  •  
  • 再进一步抽象,把 Header、Righter、Footer 以及 title 元素(下面需要用到)保存到另一个公共文件中去:common.xsl: 

    1.    
    2. Header   
    3.    
    4.    
    5. Righter   
    6.    
    7.    
    8. Footer   
    9.    
    10.    
    11. 主框架的标题   
    12.    

    mainframe.xsl 修改为: 

    1.  
    2. ...  
    3.  
    4.  
    5. <xsl:call-template name="pagetitle" /> 
    6.  
    7.  
    8.  
    9.  
    10.  
     
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  • mainframe.xsl 只承担了整体排版,定义全局CSS、Javascript 的功能,与任何子区域都无关。其中 Main 区域调用了一个名为 main 的模板。在 mainframe.xsl 与 common.xsl 文档中都没有定义 main 模板,该模板存在于每个页面中,比如列表页的XSL主要代码如下(文件名为list.xsl):

    1.    
    2.    
    3.    
    4.    
    5. 此处是 Main 区域,列表页   
    6.    
    7.   

    上面有两处地方需要注意,***是必须在 xsl:output 元素之前载入主框架(主框架又载入 common.xsl),其次是此页面默认入口是名为 main 的 template,即不能存在自动匹配的模板( match="/" 从根开始匹配的模板)。list.xsl 中的 main 模板是为主框架准备的。同样,详细页也如此编写,这样就实现了框架继承与区域重用。

    页面的标题(title元素)是在mainframe中定义的,但每个详细页的标题都不同,列表页也不同,这就需要重写title模板覆盖mainframe中的默认值。
    list.xsl 文件如下:

    1.    
    2.    
    3.    
    4.    
    5. 此处是 Main 区域,列表页   
    6.    
    7.    
    8. 列表页的标题   
    9.    
    10.   

    上面的 pagetitle 模板将会覆盖 common.xsl 中的同名模板。列表页的标题与其他未定义 pagetitle 的页面的标题将不再一致。
    注意,必须是使用 xsl:import 元素导进来的模板才可以被覆盖,如果使用 xsl:include ,将产生错误:"不能使用相同导入优先权多次定义命名模板"。

    【编辑推荐】

    1. 详谈XML的应用分类及前景
    2. 给XML初学者
    3. VB.NET实现图象文件和XML文件互换
    4. SQL Server 2000中生成XML的小技巧

    上一篇:五种方法让员工成为数据安全的保护神

    下一篇:深度分析:找到MySQL的优点

    相关内容

    热门资讯

    PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
    网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
    各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
    粉嫩如何诠释霸道 东芝M805... “霸道粉”是个什么玩意东芝M805拿过来的时候,笔者扑哧笑了,不是笑这款笔记本,而是笑这款产品的颜色...
    什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
    如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
    全面诠释网络负载均衡 负载均衡的出现大大缓解了服务器的压力,更是有效的利用了资源,提高了效率。那么我们现在来说一下网络负载...
    如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
    30分钟搞定iOS自定义相机 最近公司的项目中用到了相机,由于不用系统的相机,UI给的相机切图,必须自定义才可以。就花时间简单研究...
    Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...