zoukankan      html  css  js  c++  java
  • <转>XSLT教程

    <原文路径:http://c.lstc.edu.cn:8090/kj/Manfeel/w3pop/default-5.asp.htm>

    一、什么是XSLT

    XSLT是一种把XML文件转换成XHTML文档或者其他的XML文档的语言。
    XPath是一种由于操作XML文档的语言。

    • XSLT代表XSL转换(XSL Transformations)
    • XSLT是XSL最重要的部分
    • XSLT可以把XML文档转换成另一个XML文档
    • XSLT通过XPath操作XML文档
    • XSLT是一种W3C参考标准

    XSLT=XSL转换(XSL Transformations):

    XSLT是XSL的最重要的一部分。
    XSLT用于把XML文件转换成另一份XML文件,或者转换成另一种被浏览器所识别的诸如HTML和XHTML类型的文件。通常情况下,XSLT是通过把每个XML元素转换成(X)HTML文件来完成的。
    通过XSLT,你可以从已输出的文件里添加/移除元素和属性。你也可以把元素重新排列和分类,执行测试语句,决定是隐藏还是显示元素,或者实现其它更多的功能。 
    对于描述转换过程,可以形象的描述为:XSLT把XML源树转(XML source-tree)换成XML结果树(XML result-tree)。

    XSLT对于XPath的使用:

    XSLT通过对XPath的使用来找寻XML文档中的信息。XPath用于操作XML文件中的元素和属性。

    如何使它运行?

    在转换过程中,XSLT通过XPath来定义部分应该和一个或更多预定的模板相匹配的源文件。当一个匹配找到后,XSLT将会把相匹配的部分源文件转换成结果文档。

    XSLT是一个网络标准:

    XSLT在1999年11月16日成为W3C参考标准。

    二、浏览器对XSLT的支持

    几乎所有专业浏览器都支持XML和XSLT。

    Mozilla Firefox:

    就如1,0,2版本的火狐是支持XML和XSLTi(以及CSS)。

    Mozilla:

    Mozilla含有XML外部解析器并且支持XML+CSS的显示,Mozilla同时也支持一些命名空间(namespace)。 Mozilla可执行XSLT。

    Netscape:

    Netscape版本8使用Mozilla引擎,因此它和Mozilla一样支持XML/XSLT。

    Opera:

    Opera版本9 ,支持XML和XSLT(以及CSS);Opera版本8只支持XML+CSS。

    Internet Explorer:

    IE6浏览器支持XML,Namespaces,CSS,XSLT和XPath。 IE5.0和The official W3C XSL参考标准并不是一样的。

    三、XSLT 转换

    正确的样式表声明

    将文件以XSL样式表进行声明的根元素(root element)是<xsl:stylesheet> 或<xsl:transform>。
    注意: <xsl:stylesheet> 和<xsl:transform>是完全同义的,任何一个都能被使用。
     声明根据W3C XSLT参考标准的XSL样式表的正确的途径是:
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    or:

    <xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    想要有权使用XSLT元素,我们必须在文件的顶端事先声明XSLT命名空间的属性和特征。 xmlns:xsl="http://www.w3.org/1999/XSL/Transform指出了官方W3C XSLT的命名空间(namespace)。如果你使用了这个命名空间,你也必须注明属性版本(version)=1.0。

    <xsl:template>:

    XSL样式表是由一个或者更多的被称为“模板(templates)”的规则设置(set of rules)组成的。
    当与指定的节点匹配时,每个模板都包含了应用规则。

     XSLT<xsl:template>元素是用于创建模板的。
    Match的属性的作用是使模板和XML与元素相结合。Match属性也可以为整个XML定义模版。Match属性值是一个XPath表达式。

    <xsl:value-of>:

     <xsl:value-of>元素可以用来选取XML元素以及把它添加到已被转换的输出流里中去。

    <xsl:for-each>:

    <xsl:for-each>元素允许在XSLT里使用循环语句。
    <xsl:for-each>元素的作用是:选择任何一个具有指定的节点设置(node-set)的XML元素。
    注意: 选择(select)属性值是一个XPath的表达式值。XPath表达式主要用于类似文件系统的操作,而这个文件系统里是通过在前端添加“/”选择子目录。
    我们也可以从XML文件通过将一个规则添加到<xsl:for-each>元素中的选择属性来过滤结果。
    <xsl:for-each select="catalog/cd[artist='Bob Dylan']">
    正规的过滤操作是:

    • =  (等于)
    • != (不等于)
    • < 小于
    • > 大于

    <xsl:sort>:

     如果要对结果进行分类,可以在XSL文件里的<xsl:for-each>元素中添加一个<xsl:sort>元素。
    注意: 选择(select)属性需要会告诉你哪些XML元素需要进行分类。

    <xsl:if>:

     如果你要对XML文件的内容设置一个条件语句,那需要向XSL文件中添加一个<xsl:if>元素。

    语法

    <xsl:if test="expression"> 
              ...
              ...some output if the expression is true  
              ...
       </xsl:if>

    注意: 所要求的语句(test)属性值包括了要条件表达式。

    <xsl:choose>:

    <xsl:choose>元素通过<xsl:when>和<xsl:otherwise>一起配合是用来表达多种条件语句。

    语法

    <xsl:choose>
        
    <xsl:when test="expression">
          .....some output 
        
    </xsl:when>
        
    <xsl:otherwise>
         .... some output .
        
    </xsl:otherwise>
    </xsl:choose>
     

    <xsl:apply-templates>:

    <xsl:apply-templates>元素是把模板应用到当前元素或当前元素的子节点上。
    可以使用选择属性来详细说明处理子节点的顺序。

    四、在客户端转换

     这个的源代码需要在客户端把XML文件转换成XHTML。

    <html>
    <body>
    <script type="text/javascript">
    // Load XML 
    var xml = new ActiveXObject("Microsoft.XMLDOM")
    xml.async 
    = false
    xml.load(
    "cdcatalog.xml")
    // Load XSL
    var xsl = new ActiveXObject("Microsoft.XMLDOM")
    xsl.async 
    = false
    xsl.load(
    "cdcatalog.xsl")
    // Transform
    document.write(xml.transformNode(xsl))
    </script>
    </body>
    </html>

    五、在服务器端转换

     因为不是所有的浏览器都支持XSLT,所以人们提出了一个在服务器端把XML转换成XHTML的解决方案。
    下面的(ASP)源代码要在服务器端把XML文件转换成XHTML。

    <%
    'Load XML
    set xml = Server.CreateObject("Microsoft.XMLDOM")
    xml.async 
    = false
    xml.load(Server.MapPath(
    "cdcatalog.xml"))

    'Load XSL
    set xsl = Server.CreateObject("Microsoft.XMLDOM")
    xsl.async 
    = false
    xsl.load(Server.MapPath(
    "cdcatalog.xsl"))

    'Transform file
    Response.Write(xml.transformNode(xsl))
    %
    >
  • 相关阅读:
    how to write a paper
    attention mechanism思考
    OSX-KVM 安装备忘指南: 在KVM虚拟机中运行macOSX Big Sur / Catalina
    Unity CacheServer6.x版本 安装配置说明
    Linux常用命令2
    Ubuntu 18.04 + apache2.4 配置https证书(SSL)笔记
    Linux常用命令随笔
    软件测试-8 集成测试
    软件测试-7 在实际测试时的一些想法
    软件测试-6 白盒测试
  • 原文地址:https://www.cnblogs.com/luoxiao/p/879305.html
Copyright © 2011-2022 走看看