精华内容
下载资源
问答
  • XSLT

    千次阅读 2016-05-31 19:30:18
    XSLT 一、XSLT语言 它起始于 XSL,结束于 XSLT、XPath 以及 XSL-FO。 1、起始于 XSL  XSL 指扩展样式表语言(EXtensible Stylesheet Language)。万维网联盟 (W3C) 开始发展 XSL 的原因是:存在着对于基于 XML 的...

    XSLT

    一、XSLT语言

    它起始于 XSL,结束于 XSLT、XPath 以及 XSL-FO。

    1、起始于 XSL

        XSL 指扩展样式表语言(EXtensible Stylesheet Language)。万维网联盟 (W3C) 开始发展 XSL 的原因是:存在着对于基于 XML 的样式表语言的需求。

    2、CSS = HTML 样式表

        HTML 使用预先定义的标签,标签的意义很容易被理解。HTML 元素中的 <table> 元素定义表格 - 并且浏览器清楚如何显示它。向 HTML 元素添加样式是很容易的。通过 CSS,很容易告知浏览器用特定的字体或颜色显示一个元素。

    3、XSL = XML 样式表

        XML 不使用预先定义的标签(我们可以使用任何喜欢的标签名),并且这些标签的意义并不都那么容易被理解。<table> 元素意味着一个 HTML 表格,一件家具,或是别的什么东西 - 浏览器不清楚如何显示它。XSL 可描述如何来显示 XML 文档。

    4、XSL - 不仅仅是样式表语言

    XSL 包括三部分:

       XSLT

          一种用于转换 XML 文档的语言。

       XPath

          一种用于在 XML 文档中导航的语言。

       XSL-FO

          一种用于格式化 XML 文档的语言。

     

    二、XSLT简介

        XSLT 是一种用于将 XML 文档转换为 XHTML 文档或其他 XML 文档的语言。XPath 是一种用于在 XML 文档中进行导航的语言。

        XSLT 指 XSL 转换(XSL Transformations)。

        XSLT 是 XSL 中最重要的部分。

        XSLT 可将一种 XML 文档转换为另外一种 XML 文档。

        XSLT 使用 XPath 在 XML 文档中进行导航。

    XPath 是一个 W3C 标准。

     

    三、XSLT转换

       实例研究:如何使用 XSLT 将 XML 转换为 XHTML

    1、正确的样式表声明

          把文档声明为 XSL 样式表的根元素是 <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">

    或者:

    <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 命名空间。如果您使用此命名空间,就必须包含属性 version="1.0"。

    2、创建 XSL 样式表

      创建一个带有转换模板的 XSL 样式表("cdcatalog.xsl"):

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
      <html>
      <body>
        <h2>My CD Collection</h2>
        <table border="1">
        <tr bgcolor="#9acd32">
          <th align="left">Title</th>
          <th align="left">Artist</th>
        </tr>
        <xsl:for-each select="catalog/cd">
        <tr>
          <td><xsl:value-of select="title"/></td>
          <td><xsl:value-of select="artist"/></td>
        </tr>
        </xsl:for-each>
        </table>
      </body>
      </html>
    </xsl:template>
    </xsl:stylesheet>

    由于 XSL 样式表本身也是一个 XML 文档,因此它总是由 XML 声明起始:

    <?xml version="1.0" encoding="ISO-8859-1"?>

    下一个元素,<xsl:stylesheet>,定义此文档是一个 XSLT 样式表文档(连同版本号和 XSLT 命名空间属性)。

    <xsl:template> 元素定义了一个模板。而 match="/" 属性则把此模板与 XML 源文档的根相联系。

    <xsl:template> 元素内部的内容定义了写到输出结果的 HTML 代码。

    最后两行定义了模板的结尾,及样式表的结尾。

    3、把 XSL 样式表链接到 XML 文档

       向 XML 文档("cdcatalog.xml")添加 XSL 样式表引用:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <?xml-stylesheet type="text/xsl" href="cdcatalog.xsl"?>
    <catalog>
      <cd>
        <title>Empire Burlesque</title>
        <artist>Bob Dylan</artist>
        <country>USA</country>
        <company>Columbia</company>
        <price>10.90</price>
        <year>1985</year>
      </cd>
    .....
    </catalog> 


    四、<template>

    XSL 样式表由一个或多套被称为模板(template)的规则组成。每个模板含有当某个指定的节点被匹配时所应用的规则。

    <xsl:template> 元素用于构建模板。match 属性用于关联 XML 元素和模板。match 属性也可用来为整个文档定义模板。match 属性的值是 XPath 表达式(举例,match="/" 定义整个文档)。

     

    五、<xsl:value-of>

         <xsl:value-of> 元素用于提取某个选定节点的值,并把值添加到转换的输出流中:

          <td><xsl:value-of select="catalog/cd/title"/></td>

          <td><xsl:value-of select="catalog/cd/artist"/></td>

    注释:select 属性的值是一个 XPath 表达式。此表达式的工作方式类似于定位某个文件系统,在其中正斜杠可选择子目录。

     

    六、<xsl:for-each>

    1、<xsl:for-each> 元素

      <xsl:for-each> 元素允许您在 XSLT 中进行循环。

      <xsl:for-each> 元素可用于选取指定的节点集中的每个 XML 元素。

    <xsl:for-each select="catalog/cd">
          <tr>
            <td><xsl:value-of select="title"/></td>
            <td><xsl:value-of select="artist"/></td>
          </tr>
       </xsl:for-each>

    2、结果过滤

        通过在 <xsl:for-each> 元素中添加一个选择属性的判别式,我们也可以过滤从 XML 文件输出的结果。

    <xsl:for-each select="catalog/cd[artist='Bob Dylan']">

    合法的过滤运算符:

    =  (等于)

    != (不等于)

    < (小于)

    > (大于)

    <xsl:for-each select="catalog/cd[artist='Bob Dylan']">
       <tr>
          <td><xsl:value-of select="title"/></td>
          <td><xsl:value-of select="artist"/></td>
       </tr>
    </xsl:for-each>

     

    七、<xsl:sort>

    <xsl:sort> 元素用于对结果进行排序。

    如需对结果进行排序,只要简单地在 XSL 文件中的 <xsl:for-each> 元素内部添加一个 <xsl:sort> 元素:

    <xsl:for-each select="catalog/cd">
          <xsl:sort select="artist"/>
          <tr>
            <td><xsl:value-of select="title"/></td>
            <td><xsl:value-of select="artist"/></td>
          </tr>
     </xsl:for-each>

     

    八、<xsl:if>

    <xsl:if> 元素用于放置针对 XML 文件内容的条件测试。

    1、<xsl:if> 元素

        如需放置针对 XML 文件内容的条件测试,请向 XSL 文档添加 <xsl:if> 元素。

    语法

    <xsl:if test="expression">

      ...

      ...如果条件成立则输出...

      ...

    </xsl:if>

    2、在何处放置 <xsl:if> 元素

    如需添加有条件的测试,请在 XSL 文件中的 <xsl:for-each> 元素内部添加 <xsl:if> 元素:

    <xsl:for-each select="catalog/cd">
          <xsl:if test="price > 10">
            <tr>
              <td><xsl:value-of select="title"/></td>
              <td><xsl:value-of select="artist"/></td>
            </tr>
          </xsl:if>
    </xsl:for-each>

    注释:必选的 test 属性的值包含了需要求值的表达式。上面的代码仅仅会输出价格高于 10 的 CD 的 title 和 artist 元素。

     

    九、<xsl:choose>

        XSLT <xsl:choose> 元素用于结合 <xsl:when> 和 <xsl:otherwise> 来表达多重条件测试。

    1、<xsl:choose> 元素

    语法

    <xsl:choose>

      <xsl:when test="expression">

        ... 输出 ...

      </xsl:when>

      <xsl:otherwise>

        ... 输出 ....

      </xsl:otherwise>

    </xsl:choose>

    2、在何处放置选择条件

         要插入针对 XML 文件的多重条件测试,请向 XSL 文件添加 <xsl:choose>、<xsl:when> 以及 <xsl:otherwise>:

     

    <xsl:for-each select="catalog/cd">
          <tr>
            <td><xsl:value-of select="title"/></td>
           <xsl:choose>
              <xsl:when test="price > 10">
                <td bgcolor="#ff00ff">
                <xsl:value-of select="artist"/></td>
              </xsl:when>
              <xsl:otherwise>
                <td><xsl:value-of select="artist"/></td>
              </xsl:otherwise>
            </xsl:choose>
          </tr>
          </xsl:for-each>

    上面的代码会在 CD 的价格高于 10 时向 "Artist" 列添加粉色的背景颜色。

    <xsl:for-each select="catalog/cd">
          <tr>
            <td><xsl:value-of select="title"/></td>
           <xsl:choose>
              <xsl:when test="price > 10">
                <td bgcolor="#ff00ff">
                <xsl:value-of select="artist"/></td>
              </xsl:when>
              <xsl:when test="price > 9">
                <td bgcolor="#cccccc">
                <xsl:value-of select="artist"/></td>
              </xsl:when>
              <xsl:otherwise>
                <td><xsl:value-of select="artist"/></td>
              </xsl:otherwise>
            </xsl:choose>
          </tr>
      </xsl:for-each>

       上面的代码会在 CD 的价格高于 10 时向 "Artist" 列添加粉色的背景颜色,并在 CD 的价格高于 9 且低于等于 10 时向 "Artist" 列添加灰色的背景颜色。

     

    十、<xsl:apply-templates>

         <xsl:apply-templates> 元素可把一个模板应用于当前的元素或者当前元素的子节点。假如我们向 <xsl:apply-templates> 元素添加一个 select 属性,此元素就会仅仅处理与属性值匹配的子元素。我们可以使用 select 属性来规定子节点被处理的顺序。

    请看下面的 XSL 样式表:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     
    <xsl:template match="/">
    <html>
    <body>
    <h2>My CD Collection</h2>
    <xsl:apply-templates/>
    </body>
    </html>
    </xsl:template>
     
    <xsl:template match="cd">
    <p>
    <xsl:apply-templates select="title"/>
    <xsl:apply-templates select="artist"/>
    </p>
    </xsl:template>
     
    <xsl:template match="title">
    Title: <span style="color:#ff0000"><xsl:value-of select="."/></span>
    <br />
    </xsl:template>
     
    <xsl:template match="artist">
    Artist: <span style="color:#00ff00"><xsl:value-of select="."/></span>
    <br />
    </xsl:template>
    </xsl:stylesheet>

    注意:<xsl:apply-templates select="information/student"/> 告诉处理器处理根元素information下的student子元素,处理器就会调用与student元素匹配的模板<xsl:template match="student">。

     

    十一、XSLT - 客户端

       如果您的浏览器支持 XSLT,那么在浏览器中它可被用来将文档转换为 XHTML。

    1、JavaScript 解决方案

        在前面的章节,我们已向您讲解如何使用 XSLT 将某个 XML 文档转换为 XHTML。我们是通过以下途径完成这个工作的:向 XML 文件添加 XSL 样式表,并通过浏览器完成转换。即使这种方法的效果很好,在 XML 文件中包含样式表引用也不总是令人满意的(例如,在无法识别XSLT的浏览器这种方法就无法奏效)。

       更通用的方法是使用 JavaScript 来完成转换。通过使用 JavaScript,我们可以:

          (1)、进行浏览器确认测试

          (2)、根据浏览器和使用者的需求来使用不同的样式表

        这就是 XSLT 的魅力所在!XSLT 的设计目的之一就是使一种格式到另一种格式的转换成为可能,同时支持不同类型的浏览器以及不同的用户需求。

    浏览器端的 XSLT 转换一定会成为未来浏览器所执行的主要任务之一,同时我们也会看到其在特定的浏览器市场的增长(盲文、网络打印机,听觉设备,等等)。

    2、在浏览器中把 XML 转换为 XHTML

    这是用于在客户端把 XML 文件转换为 XHTML 的源代码:

    <html>
    <body>
    <script type="text/javascript">
     
    // Load XML 限于IE浏览器
    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>

        第一段代码创建了微软的 XML 解析器的一个实例,然后把 XML 文件载入了内存。第二段代码创建了解析器的另一个实例,然后把这个 XSL 文件载入了内存。最后一行代码使用 XSL 文档转换了 XML 文档,并在浏览器中把结果作为 XHTML 显示出来。任务完成!

    十二、XSLT - 在服务器上

       由于并非所有的浏览器都支持 XSLT,另一种解决方案是在服务器上完成 XML 至 XHTML 的转化。

    1、跨浏览器解决方案

        在前面的章节,我们讲解过如何在浏览器中使用 XSLT 来完成 XML 到 XHTML 的转化。我们创建了一段使用 XML 解析器来进行转化的 JavaScript。JavaScript 解决方案无法工作于没有 XML 解析器的浏览器。为了让 XML 数据适用于任何类型的浏览器,我们必须在服务器上对 XML 文档进行转换,然后将其作为 XHMTL 发送到浏览器。

    这是 XSLT 的另一个优点。XSLT 的设计目标之一是使数据在服务器上从一种格式转换到另一种格式成为可能,并向所有类型的浏览器返回可读的数据。

    2、在服务器把 XML 转换为 XHTML

    这是在服务器上把 XML 文件转换为 XHTML 的源代码:

    <%
    //Load XML ASP程序
    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))
    %>



    展开全文
  • xslt

    2012-10-23 17:31:47
    /// /// XML--》Stream-->jsonXMLReader-->XElement-->xslt /// 由XML文档通过xslt模板转换成另外的xml文档 /// /// public XDocument Test() { Stream stream = nu
            /// <summary>
            /// XML--》Stream-->jsonXMLReader-->XElement-->xslt
            /// 由XML文档通过xslt模板转换成另外的xml文档
            /// </summary>
            /// <returns></returns>
            public XDocument Test()
            {
                Stream stream = null; //这个调用接口得到的流
                var jsonXmlReader = System.Runtime.Serialization.Json.JsonReaderWriterFactory.CreateJsonReader
                    (stream, System.Xml.XmlDictionaryReaderQuotas.Max);
    
                XElement books = XElement.Load(jsonXmlReader);
    
                XDocument output = new XDocument();
    
                using (XmlWriter writer = output.CreateWriter())
                {
                    XslCompiledTransform xslTransform = new XslCompiledTransform();
    
                    xslTransform.Load("");//xslt 模板文件的位置 
                    xslTransform.Transform(books.CreateReader(), writer);
    
                }
                return output;
            }
    

    展开全文
  • XSLT

    2007-01-23 06:22:00
    1. 什么是XSLT 大家可能听说过XSL(eXtensible Stylesheet Language),XSL和我们这里说的XSLT从狭义上理解是一样的,而按照W3C的标准,XSLT的说法更严格些,因此我们在文章中统一使用XSLT的称法。XSLT的英文标准...
      
    1. 什么是XSLT 
    
      大家可能听说过XSL(eXtensible Stylesheet Language),XSL和我们这里说的XSLT从狭义上理解是一样的,而按照W3C的标准,XSLT的说法更严格些,因此我们在文章中统一使用XSLT的称法。XSLT的英文标准名称为eXtensible Stylesheet Language Transformation。根据W3C的规范说明书( http://www.w3.org/TR/xslt),最早设计XSLT的用意是帮助XML文档(document)转换为其它文档。但是随着发展,XSLT已不仅仅用于将XML转换为HTML或其它文本格式,更全面的定义应该是:  XSLT是一种用来转换XML文档结构的语言。 
       
       2. 为什么要用XSLT 
      我们已经知道,XML是一种电脑程序间交换原始数据的简单而标准的方法。它的成功并不在于它容易被人们书写和阅读,更重要的是,它从根本上解决了应用系统间的信息交换。因为XML满足了两个基本的需求: 
      (1).将数据和表达形式分离。就象天气预报的信息可以显示在不同的设备上,电视,手机或者其它。 
      (2).在不同的应用之间传输数据。电子商务数据交换的与日俱增使得这种需求越来越紧迫。 
      为了使数据便于人们的阅读理解,我们需要将信息显示出来或者打印出来,例如将数据变成一个HTML文件,一个PDF文件,甚至是一段声音;同样,为了使数据适合不同的应用程序,我们必须有能够将一种数据格式转换为另一种数据格式,比如需求格式可能是一个文本文件,一个SQL语句,一个HTTP信息,一定顺序的数据调用等。而XSLT就是我们用来实现这种转换功能的语言。将XML转换为HTML,是目前XSLT最主要的功能。 

       3. XSLT的历史 
      想很多其他XML家族成员一样,XSLT是由W3C起草和制定的。它的主要发展历程如下: 
      .1995年由James Clark提议; 
      .1997年8月正式提案为XSL; 
      .1998年5月由Norman Walsh完成需求概要; 
      .1998年8月18日XSL草案发布; 
      .1999年11月16日正式发布XSL 1.0推荐版本。 
      目前,XSLT仍然在快速的发展中,XSLT1.1的草案已经可以在W3C网站( http://www.w3.org/TR/xslt11)上看到。 
       
       4. 什么是XPath 
      XPath是XSLT的重要组成部分,我们将在第四章讲解它的详细语法。那么XPath是什么呢?我们首先来了解一下XSL系列的"家族"关系。如下图: 
          
      XSL在转换XML文档时分为明显的两个过程,第一转换文档结构;其次将文档格式化输出。这两步可以分离开来并单独处理,因此XSL在发展过程中逐渐分裂为XSLT(结构转换)和XSL-FO(formatting objects)(格式化输出)两种分支语言,其中XSL-FO的作用就类似CSS在HTML中的作用。而我们这里重点讨论的是第一步的转换过程,也就是XSLT。 
      另外,在学习XML时我们已经知道XML是一个完整的树结构文档。在转换XML文档时可能需要处理其中的一部分(节点)数据,那么如何查找和定位XML文档中的信息呢,XPath就是一种专门用来在XML文档中查找信息的语言。XPath隶属XSLT,因此我们通常会将XSLT语法和XPath语法混在一起说。 
      用一种比较好理解的解释:如果将XML文档看作一个数据库,XPath就是SQL查询语言;如果将XML文档看成DOS目录结构,XPath就是cd,dir等目录操作命令的集合。
       
       5. XSLT和CSS的比较 
      CSS同样可以格式化XML文档,那么有了CSS为什么还需要XSLT呢?因为CSS虽然能够很好的控制输出的样式,比如色彩,字体,大小等,但是它有严重的局限性,就是: 
      (1) CSS不能重新排序文档中的元素; 
      (2) CSS不能判断和控制哪个元素被显示,哪个不被显示; 
      (3) CSS不能统计计算元素中的数据; 
      换句话说,CSS只适合用于输出比较固定的最终文档。CSS的优点是简洁,消耗系统资源少;而XSLT虽然功能强大,但因为要重新索引XML结构树,所以消耗内存比较多。 
      因此,我们常常将它们结合起来使用,比如在服务器端用XSLT处理文档,在客户端用CSS来控制显示。可以减少响应时间。 
       
       6. XSLT和IE5 
      在XSLT草案发布不久,微软就在IE4中提供了支持XSL功能的预览版本,到IE5.0发布时,正式全面支持XSLT,可是由于IE5发布的比XSLT1.0标准时间早,因此在IE5.0中支持的XSTL功能和XSLT 1.0略有不同。(呵呵~~XML推行的主要原因之一就是解决HTML过分依赖浏览器的问题,现在微软又想标新立异?)。好在微软的IE5.5中执行的标准已经和W3C的XSLT1.0基本相近。但令人头疼的是IE5.0已经发行了几百万套,您使用的XSLT很可能不能被客户的浏览器正确执行。目前XSLT 1.1仍在发展中,W3C及有关组织也在和微软协商争取获得统一。呵呵~~故事还远远没有结束噢。 
      注意:本文中提到的语法都是根据XSLT 1.0的标准来讲的,没有任何微软的"方言"。 
    展开全文
  • Xslt

    2018-07-10 23:37:00
    不过,通过ajaxslt,我们可以利用XSLT模版对XML文件进行处理,然后输出一个用户界面,当然我们不必了解ajaxslt是怎样处理XML和XSLT的,只要熟悉XSLT和XPath的原理就可以很轻松地处理XML文件了。 8.一个xslt可以...

    XSLT的英文标准名称为eXtensible Stylesheet Language Transformation。根据W3C的规范说明书(http://www.w3.org/TR/xslt),最早设计XSLT的用意是帮助XML文档(document)转换为其它文档。但是随着发展,XSLT已不仅仅用于将XML转换为HTML或其它文本格式,更全面的定义应该是:XSLT是一种用来转换XML文档结构的语言。 
                为了使数据便于人们的阅读理解,我们需要将信息显示出来或者打印出来,例如将数据变成一个HTML文件,一个PDF文件,甚至是一段声音;同样,为了使数据适合不同的应用程序,我们必须有能够将一种数据格式转换为另一种数据格式,比如需求格式可能是一个文本文件,一个SQL语句,一个HTTP信息,一定顺序的数据调用等。而XSLT就是我们用来实现这种转换功能的语言。将XML转换为HTML,是目前XSLT最主要的功能。

    1.XSLT stylesheets can automate the conversion of the same input into multiple output formats.

    2.XSLT一个很大的优势就是可以在任何地方随时在XML数据全局范围内抓取需要的任何数据,不受XML数据结构影响。
    3.将数据和表达形式分离。就象天气预报的信息可以显示在不同的设备上,电视,手机或者其它。这样给你一个XML,一个DTD,就可以开发XSLT,而不用关心后台数据如何实现。比如如果有一天突然觉得要换界面了,那么重新做一个xsl就好了,后台的程序和xml的结构完全不需要修改,如果你用传统的方法,由于数据和显示耦合的太紧密,所有的页面都将重写...

    4.将XSLT转化在客戶端运行可以大大减少服务器压力,服务器只需要将XML数据发送到客戶端,XSLT已經保存在本地,从而减小网络流量.

    5.可以很好的避免安全性問題,以XSLT转化得到的页面通过查看源代码得到的只有XML数据。

    6.能够很好的适应需求的快速变化,不用修改逻辑代码,不用编译,甚至可以直接在线修改,就可以解决比较一般的需求变化。

    7.另外,是因为它专门用来处理xml,它处理xml比DOM方便多了,对于目前盛行的Ajax应用来说,尤其有其发挥空间,比较典型的可以参考AJAXSLT 
    ajaxslt是一个针对Ajax在取得XML资料格式后,利用Javascript动态加入XSL-T(XML Stylesheet Language - Transformation)与及XPath的运用所开发的一套元件。一般上,XMLHttpRequest在传回XML字串后,我们必须花另一个功夫将这些XML数据转换成能够显示的用户界面,这是非常繁琐的工作,而且程序码的重用是一个恶梦。不过,通过ajaxslt,我们可以利用XSLT模版对XML文件进行处理,然后输出一个用户界面,当然我们不必了解ajaxslt是怎样处理XML和XSLT的,只要熟悉XSLT和XPath的原理就可以很轻松地处理XML文件了。

    8.一个xslt可以生成N种版面布局,但html就只能通过script来实现.

    以下例子:xml转换成HTML

    如下是要转换的xml文件howto.xml示例:

    <?xml version="1.0"?>
    <howto>
      <topic>
          <title>Java</title>
          <url>http://outofmemory.cn/code-snippet/tagged/java</url>
      </topic>
        <topic>
          <title>Python</title>
          <url>http://outofmemory.cn/code-snippet/tagged/python</url>
      </topic>
          <topic>
            <title>Javascript</title>
            <url>http://outofmemory.cn/code-snippet/tagged/javascript</url>
      </topic>
          <topic>
            <title>VBScript</title>
            <url>http://outofmemory.cn/code-snippet/tagged/VBScript</url>
      </topic>
    </howto>

    示例xslt文件[howto.xsl]

    <?xml version="1.0"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    version="1.0">
    <xsl:template match="/">
    <html>
    <head><title>Real's HowTo</title></head>
    <body>
    <table border="1">
    <tr>
    <th>Title</th>
    <th>URL</th>
    </tr>
    <xsl:for-each select="howto/topic">
    <tr>
    <td><xsl:value-of select="title"/></td>
    <td><xsl:value-of select="url"/></td>
    </tr>
    </xsl:for-each>
    </table>
    </body></html>
    </xsl:template>
    </xsl:stylesheet>

    做转换的java代码:

    import javax.xml.transform.*;
    import java.net.*;
    import java.io.*;
    
    public class HowToXSLT {
    public static void main(String[] args) {
      try {
    
        TransformerFactory tFactory = TransformerFactory.newInstance();
    
        Transformer transformer =
          tFactory.newTransformer
             (new javax.xml.transform.stream.StreamSource
                ("src/howto.xsl"));
    
        transformer.transform
          (new javax.xml.transform.stream.StreamSource
                ("src/howto.xml"),
           new javax.xml.transform.stream.StreamResult
                ( new FileOutputStream("src/howto.html")));
        }
      catch (Exception e) {
        e.printStackTrace( );
        }
      }
    }

    转载于:https://my.oschina.net/u/3700425/blog/1843943

    展开全文
  • 该工具生成XSLT样式表的文档,使您可以浏览Web浏览器中的代码。 支持导入/包含树中不同样式表中的模板的互连。
  • xslt-demo xslt-demo XSL的一些基本示例。
  • 编程-xslt 编程 XSLT、分形、算法
  • XSLT是XSL的一部份,它是XML的一种应用,指定将一篇XML文档转换成另一种XML文档的规则。XSLT文档即是一篇XML文档,也是一个样式表,里面包含一系列的模板。XSLT处理器对输入XML文档中的元素和样式表中的模板进行比较...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 49,968
精华内容 19,987
关键字:

xslt