打造基于 XSL 的模板框架

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.  
    11.  
    12.  
    13.  
    14.  
    15.  
    16.  
    17.  
    18.  
    19.  
    20.  
    21.  

    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的小技巧

    分享题目:打造基于 XSL 的模板框架
    链接URL:http://www.shufengxianlan.com/qtweb/news28/404078.html

    网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

    广告

    声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

    猜你还喜欢下面的内容

    标签优化知识

    同城分类信息