当前位置: 首页 > 图文教程 > 网络编程 > JSP > XSLT合并模板简述

JSP
Servlet及JSP中的多线程同步问题
使用Ant和Tomcat创建Web应用
如何直接在浏览器内运行SQL命令
Servlet、Jsp中的多国语言显示
html与jsp开发分离技术
通过Jsp发送动态图像
Servlets和JSP Pages最佳实践
学习在JSP中使用JavaBeans
JSP显示内容缓存技巧
应用JDOM处理数据库到XML转换的JSP实现
JSP中tomcat的SQL Server2000数据库连接池的配置
用JSTL实现JSP应用程序快速开发
浅谈4种类型的JDBC驱动程序
怎样设置 JSP 的虚拟目录
Java 中对文件的读写操作之比较
javamail在jsp中调用
jsp中任意文字转Unicode的通用模块
JSP与SQL SERVER的留言本
jspSmartUpload上传下载全攻略
Tomcat5.x中的虚拟主机配置方法

JSP 中的 XSLT合并模板简述


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-03   浏览: 68 ::
收藏到网摘: n/a

XSLT合并模板简述
日期:10/24/2004 9:22:23 AM
l    XSLT复用使用模板有两种方式
1.    包含复用
2.    导入复用
l    在这之前,我们必须熟悉以下的概念
1.    模板的优先级
由于XSLT有复用模板的功能,,当有模板产生冲突,就需要根据模板的优先级来选择应用哪一个模板.XSLT处理器总是优先选择模板优先级较高的模板..
2.    那什么是包含复用呢?即一个XSLT文件包含来自另一个XSLT文件中的模板.,
在XSLT文件中,使用<xsl:include href=”被包含文件”/>来使用包含复用
在包含复用里,当被包含文件与包含文件产生模板冲突时,XSLT将发出错误信号并停止或选择XSLT文档中最后定义的那个模板.
3.    什么又是导入复用?即一个XSLT文件导入另一个XSLT文件中的模板,
在XSLT文件中,使用<xsl:import href=”被导入的文件”/>来使用导入复用.
在导入复用里,当被导入文件与导入文件中产生模板冲突时,被导入文件中的模板的优先级低于导入文件中的模板的优先级,所以会优先选用导入文件中的模板.
l    下面,我举出几个例子.
1    包含复用例子(无模板冲突)
(在压缩包中的文件includeImport.xml, includeNo1.xslt, includeNo2.xslt)
includeImport.xml 源代码
<?xml version="1.0" encoding="gb2312"?>
<!-- //包含复用(无模板冲突时) -->
<?xml-stylesheet type="text/xsl" href="includeNo1.xslt"?>
<includeImport>
    <include name="include">INCLUDE</include>
    <import name="import">IMPORT</import>
</includeImport>
ncludeNo1.xslt 源代码
<?xml version="1.0" encoding="gb2312"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output  version="1.0" method="html" encoding="gb2312"/>
 <xsl:include href="includeNo2.xslt"/>   <!--     -->
       <xsl:template match="/">
                  <xsl:apply-templates select="includeImport/include "/>
                  <xsl:apply-templates select="includeImport/import "/>
            </xsl:template>
       <xsl:template match="include">
                    Element Value = <xsl:value-of select="."/>
                    Attribute Value = <xsl:value-of select="./@name"/>
              </xsl:template> 
                 <xsl:import href="importNo2.xslt"/> 
</xsl:stylesheet>
includeNo2.xslt 源代码
<?xml version="1.0" encoding="gb2312"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output  version="1.0" method="html" encoding="gb2312"/>  
  <xsl:template match="import ">
          Element Value = <xsl:value-of select="."/>
          Attribute Value = <xsl:value-of select="./@name"/> 
  </xsl:template> 
  </xsl:stylesheet>
2     包含复用例子(有模板冲突)请注意这里的实难结果
(在压缩包中的文件includeImport.xml, includeYes1.xslt, includeYes2.xslt)
includeImport.xsl 源代码
<?xml version="1.0" encoding="gb2312"?>
<!-- //包含复用(有模板冲突时) -->
<?xml-stylesheet type="text/xsl" href="includeYes1.xslt"?>
<includeImport>
    <include name="include">INCLUDE</include>
    <import name="import">IMPORT</import>
</includeImport>
includeYes1.xslt 源代码
<?xml version="1.0" encoding="gb2312"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output  version="1.0" method="html" encoding="gb2312"/>
       <xsl:template match="/">
                  <xsl:apply-templates select="includeImport/include "/>
        </xsl:template>
       <xsl:template match="include">
         Use Tempale includeYes1.xslt 
                    Element Value = <xsl:value-of select="."/>
                    Attribute Value = <xsl:value-of select="./@name"/>
        </xsl:template> 
          <xsl:include href="includeYes2.xslt"/>   <!--     --> 
</xsl:stylesheet>
includeYes2.xslt 源代码
<?xml version="1.0" encoding="gb2312"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output  version="1.0" method="html" encoding="gb2312"/>  
    <xsl:template match="include">
         Use Tempale includeYes2.xslt 
                    Element Value = <xsl:value-of select="."/>
                    Attribute Value = <xsl:value-of select="./@name"/>
        </xsl:template> 
  </xsl:stylesheet>
3    导入复用例子(无模板冲突)(这个结果总是出错,不知道为什么?)
4    导入复用例子(有模板冲突)请注意导入文件与被导入文件的模板的优先级,差看结果优先选择了哪一个文件的模板 (这个结果总是出错,不知道为什么?)

附件有原代码.
附件:1119012920216XSLT.rar(15K)