在浏览器中用XSLT把XML转换为XHTML

时间:2022-07-05 14:16:51
XML文件XMLTree.xml:
<?xml version="1.0" encoding="utf-8" ?>
<测试>
  <数据表>
    <编码>000</编码>
    <名称>b975d757-9dad-4fee-bd4f-78bd5459ba43</名称>
    <成绩>90</成绩>
  </数据表>
  <数据表>
    <编码>001</编码>
    <名称>e4d72d64-45cd-49f7-8c9a-21c12375d4dd</名称>
    <成绩>87</成绩>
  </数据表>
  <数据表>
    <编码>002</编码>
    <名称>7f9406fb-581d-49cc-8afb-8d9046084bf0</名称>
    <成绩>78</成绩>
  </数据表>
  <数据表>
    <编码>003</编码>
    <名称>57525ccb-703c-497e-bf4c-8f69842153d5</名称>
    <成绩>67</成绩>
  </数据表>
  <数据表>
    <编码>004</编码>
    <名称>c83fd583-5540-4d3d-a91f-73d12cd182bd</名称>
    <成绩>78</成绩>
  </数据表>
  <数据表>
    <编码>005</编码>
    <名称>49a72586-5a51-4898-8b8e-e1e566185129</名称>
    <成绩>87</成绩>
  </数据表>
  <数据表>
    <编码>006</编码>
    <名称>69678ac7-5889-47db-bf88-85bda0dd8552</名称>
    <成绩>97</成绩>
  </数据表>
  <数据表>
    <编码>007</编码>
    <名称>2dd40a2c-9126-4694-a9aa-f16879752929</名称>
    <成绩>67</成绩>
  </数据表>
  <数据表>
    <编码>008</编码>
    <名称>9e45fb3d-c70e-45b1-87cd-2f868c2440c2</名称>
    <成绩>56</成绩>
  </数据表>
  <数据表>
    <编码>009</编码>
    <名称>f0a3c093-b012-450d-a928-31e58e04c97d</名称>
    <成绩>76</成绩>
  </数据表>
  <数据表>
    <编码>010</编码>
    <名称>f0a3c093-b012-450d-a928-31e58e04c97d</名称>
    <成绩>74</成绩>
  </数据表>
</测试>

XST文件tree.xsl
<?xml version="1.0" encoding="gb2312"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
  <html>
  <body>
    <h2>成绩表</h2>
    <table border="1">
    <tr bgcolor="#9acd32">
      <th align="center">编码</th>
      <th align="center">名称</th>
      <th align="center">成绩</th>
    </tr>
    <xsl:for-each select="测试/数据表">
    <tr>
      <td><xsl:value-of select="编码"/></td>
      <td><xsl:value-of select="名称"/></td>
      <td><xsl:value-of select="成绩"/></td>
    </tr>
    </xsl:for-each>
    </table>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>

htm文件Test.htm
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <script type="text/javascript">
        function load(filesrc){
                var xmlDoc;
                var bl=false;
                // 用于 IE 的代码:
                if (window.ActiveXObject)
                  {
                      xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
                      xmlDoc.async=false;
                         bl=xmlDoc.load(filesrc);
                        if(!bl)
                        {
                            alert("无法加载主菜单数据!");
                        }
                  }               
                // 用于 Mozilla, Firefox, Opera, 等浏览器的代码:
                else if (document.implementation &&    document.implementation.createDocument)
                  {
                      xmlDoc=document.implementation.createDocument('','',null);
                      bl=xmlDoc.load(filesrc);
                        if(!bl)
                        {
                            alert("无法加载主菜单数据!");
                        }
                  }
                else
                  {
                  alert("您的浏览器不支持这个脚本!");
                  }
                return xmlDoc;
            }
           
        function show()
        {
            var xml;
            var xsl;
            xml=load("XMLTree.xml");   
            xsl=load("tree.xsl");
            alert(xml.transformNode(xsl));
            document.write(xml.transformNode(xsl))
        }
    window.onload=show;
    </script>
   
</head>
<body>   
</body>
</html>

IE中测试可以以表格显示,可是在firefox中没有显示,目前还没有找到问题所在,跟踪了一下,发现在firefox中,load(xml文件)后没有加载进数据.