选择显示字体大小

xsl基础教程第三章

    
  客户端xsl
    如果浏览器支持xml,,就可以用xsl在浏览器中将文档转换成html
  
  一个javascript的解决方法
    在前文中,我们解释了如何用xsl将一个文档从xml转换成html。窍门就是向xml文件中增加一个xsl样式表,然后让浏览器来进行转换。即使这种方法能奏效,在xml文件中包含一个样式表引用也并非令人满意的方法,并且在不支持xsl的浏览器上这种方法还不能奏效。
  
    一个更通用的方法应该是用一个javascript来进行从xmlhtml的转换。使用一个javascript,就更有以下可能性:
  
    允许javascript进行浏览器细节测试
  
    根据浏览器和用户需求使用不同的样式表。
  
    这就是xsl的美妙之处。xsl设计目的之一就是使数据从一个格式转换成另一个格式成为可能,从而支持不同的浏览器和不同的用户需求。
  
    客户端xsl转换将成为未来浏览器工作任务的一个主要部分,我们还将看到专业化浏览器市场的成长,比如braille、 发声网络、网络打印机、手持pc、移动电话等。
  
  xml文件和xsl文件
    现在重新来看看前面章节中的xml文档:
  
    <?xml version="1.0"?>
  
    <catalog>
  
     <cd>
  
      <title>empire burlesque</title>
  
      <artist>bob dylan</artist>
  
      <country>usa</country>
  
      <company>columbia</company>
  
      <price>10.90</price>
  
      <year>1985</year>
  
     </cd>
  
    .
  
    .
  
    .
  
    还有附带的xsl样式表:
  
    <?xml version='1.0'?>
  
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/tr/wd-xsl">
  
    <xsl:template match="/">
  
     <html>
  
     <body>
  
      <table border="2" bgcolor="yellow">
  
       <tr>
  
        <th>title</th>
  
        <th>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>
  
    要确保xml文件没有对xsl文件的引用,xsl文件也没有对xml文件的引用。注意:上面的句子说明一个xml文件可以用许多不同的xsl文件进行转换。
  
  在浏览器中将xml转换到html
    以下是在客户机上将xml文件转换成html所需要的源代码,很简单:
  
    <html>
  
    <body>
  
    <script language="javascript">
  
    // load xml
  
    var xml = new activexobject("microsoft.xmldom")
  
    xml.async = false
  
    xml.load("cd_catalog.xml")
  
    // load the xsl
  
    var xsl = new activexobject("microsoft.xmldom")
  
    xsl.async = false
  
    xsl.load("cd_catalog.xsl")
  
    // transform
  
    document.write(xml.transformnode(xsl))
  
    </script>
  
    </body>
  
    </html>
  
  如果使用的是inte.net explorer 5.0 或更高版本,请点击这里查看结果。
    代码的第一块创建了microsoft xml 解析器(xmldom)的一个例示,并将xml文档加载到内存中。代码的第二块创建解析器的另一个例示,并将xsl文档加载到内存中。代码的最后一行用xsl文档转换xml文档,将结果写入html 文档中。
  
  服务器端xsl
    由于不是所有的浏览器都支持xml和xsl,因此就有了一个在服务器上将xml转换成html的方法。
  
  一个跨浏览器的解决方法
    在前面的章节中,我们解释了如何用xsl在浏览器中将xml文档转换成html,窍门就是让javascript使用一个xml解析器来进行转换。但是当浏览器不支持xml解析器时,这种方法是不奏效的。要使xml数据对所有浏览器都可用,我们就必须在服务器上转换xml文档,并将它作为纯html发送到浏览器。
  
    这是xsl的另一个美妙之处。xsl的设计目的之一是使得在服务器上将数据从一种格式转换成另一种格式成为可能,并将可读数据返回到所有未来的浏览器中。
  
    在服务器上进行xsl转换正在成为未来inte.net信息服务器工作任务的一个主要部分,同时我们将看到专用浏览器市场的发展,如:braille、有声网络、网络打印机、手持pc、移动电话等。
  
  xml文件和xsl文件
    现在来重新看看前面章节中的xml文档:
  
    <?xml version="1.0"?>
  
    <catalog>
  
     <cd>
  
      <title>empire burlesque</title>
  
      <artist>bob dylan</artist>
  
      <country>usa</country>
  
      <company>columbia</company>
  
      <price>10.90</price>
  
      <year>1985</year>
  
     </cd>
  
    .
  
    .
  
    .
  
  如果使用的是inte.net explorer 5.0或更高版本,可以点击这里查看xml文件。
    再看看伴随的xsl样式表:
  
    <?xml version='1.0'?>
  
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/tr/wd-xsl">
  
    <xsl:template match="/">
  
     <html>
  
     <body>
  
      <table border="2" bgcolor="yellow">
  
       <tr>
  
        <th>title</th>
  
        <th>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>
  
  如果使用的是inte.net explorer 5.0或更高版本,可以点击这里查看xsl文件。
    以上xsl文档的语法在前面章节中已经解释过了,因此这里不再做解释。但是要确保xml文件没有对xsl文件的引用,xsl文件也没有对xml文件的引用。同时请注意:上面的句子表明一个服务器上的xml文件可以用许多不同的xsl文件进行转换。
  
  在服务器端将xml转换成html
    以下是在服务器上转换xml文件所需要的简单源代码:
  
    <%
  
    'load the xml
  
    set xml = server.createobject("microsoft.xmldom")
  
    xml.async = false
  
    xml.load(server.mappath("cd_catalog.xml"))
  
    'load the xsl
  
    set xsl = server.createobject("microsoft.xmldom")
  
    xsl.async = false
  
    xsl.load(server.mappath("cd_catalog.xsl"))
  
    'transform the file
  
    response.write(xml.transformnode(xsl))
  
    %>
  
    代码的第一块创建microsoft xml解析器(xmldom)的一个例示,并将xml文件装载到内存中。代码的第二块创建解析器的另一个例示,并将xsl文档装载到内存。代码的最后一行用xsl文档转换xml文档,并将结果返回浏览器。
  
  
    


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons