打造基于 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的优点

    相关内容

    热门资讯

    如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
    如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
    施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
    Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
    20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
    德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
    为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
    《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...