最近使用Firefox进行网页的调试,发现有些javascript XSLT处理xml的语句仅仅支持IE浏览器。而网络中的一些介绍Javascript XSLT 处理XML的文章基本上都是依据Ajax来做的。
  无奈中,自己写了一个Javascript XSLT处理XML展现页面的小功能。现在帖出来和大家共享,希望大家给点改进意见。
  在Firefox中使用XSLTPRocessor对象处理XML,主要使用该对象的两个方法:
一、transformToFragment()。
二、transformToDocument()。
  下面的代码仅仅使用transformToFragment()方法来实现对XML文件处理,如果你对在Firefox中使用 Javascript XSLT 处理XML文件感兴趣的话不妨试着将以下代码改写成使用transformToDocument()方法来实现的处理功能。
Javascript 代码如下:

function initialize() {
  var xmlDoc;
  var xslDoc;

  // 判断浏览器的类型
  if(document.implementation && document.implementation.createDocument)
  {   
    // 支持Mozilla浏览器
    try
    {
      xmlDoc = document.implementation.createDocument("", "", null); 
      xmlDoc.async = false;
      xmlDoc.load("guestbook/guestbook.xml");
    }
    catch(e)
    {
      alert("error:001");
    }
    try
    {
      xslDoc = document.implementation.createDocument("", "", null);
      xslDoc.async = false;  
       xslDoc.load("guestbook/guestbook.xsl");
     }
     catch(e)
     {
       alert("error:002");
     }
     try
     {
       // 定义XSLTProcessor对象 
      var xsltProcessor = new XSLTProcessor();
      xsltProcessor.importStylesheet(xslDoc);
      var oResultFragment = xsltProcessor.transformToFragment(xmlDoc,document);
      // 将解析过的文本输出到页面
      var oDiv = document.getElementById("guestbookPanel");
      oDiv.appendChild(oResultFragment);
    }
    catch(e)
    {
      alert("error:003");
    } 
  }
  else if(typeof window.ActiveXObject != 'undefined')
  {   
    //var xmlDoc=Server.CreateObject("Msxml2.DOMDocument.4.0");   
    // 支持IE浏览器
    xmlDoc = new ActiveXObject('Microsoft.XMLDOM');
    xslDoc = new ActiveXObject('Microsoft.XMLDOM');
    xmlDoc.async = false;
    xslDoc.async = false;  
    xmlDoc.load("guestbook/guestbook.xml");
     xslDoc.load("guestbook/guestbook.xsl");
    guestbookPanel.innerHTML = xmlDoc.documentElement.transformNode(xslDoc); 
  }
  else
  {
    alert("Browser unknown!");
  }
}

javascript dom 处理XSL显示数据的第二种方式。

主要代码如下:

var xmlDoc;
var xslDoc;

// 判断浏览器的类型
if(document.implementation && document.implementation.createDocument)
{
// 支持Mozilla浏览器
try
{
  xmlDoc = document.implementation.createDocument("", "", null);
  xmlDoc.async = false;
  xmlDoc.load("guestbook/guestbook.xml");
  xslDoc = document.implementation.createDocument("", "", null);
  xslDoc.async = false;
   xslDoc.load("guestbook/guestbook.xsl");  
   // 定义XSLTProcessor对象
  var xsltProcessor = new XSLTProcessor();
  xsltProcessor.importStylesheet(xslDoc);
  // transformToDocument方式
  var result = xsltProcessor.transformToDocument(xmlDoc);
  var xmls = new XMLSerializer();
  document.getElementById("guestbookPanel").innerHTML = xmls.serializeToString(result);
}
catch(e)
{
  alert("Unable to do xml/xsl processing");
}
}
else if(typeof window.ActiveXObject != 'undefined')
{
try
{
  // 支持IE浏览器
  xmlDoc = new ActiveXObject('Msxml2.DOMDocument');
  xslDoc = new ActiveXObject('Msxml2.DOMDocument');
  xmlDoc.async = false;
  xslDoc.async = false;
  xmlDoc.load("guestbook/guestbook.xml");
   xslDoc.load("guestbook/guestbook.xsl");
  guestbookPanel.innerHTML = xmlDoc.documentElement.transformNode(xslDoc);
}
catch(e)
{
  alert("Unable to do xml/xsl processing");
}
}
else
{
alert("Browser unknown!");
}

XMLTProcessor根据XSLT样式规则将节点转换为document对象的更多相关文章

  1. XML的应用 ---- 从一个范例看xml数据、xsd验证、xslt样式

    从一个范例看XML的应用 引言 如果你已经看了Asp.Net Ajax的两种基本开发模式 这篇文章,你可能很快会发现这样一个问题:在那篇文章的方式2中,客户端仅仅是发送了页面上一个文本框的内容到服务端 ...

  2. javaScript增加样式规则(新增样式)

    <html> <head> <link rel="stylesheet" type="text/css" href="b ...

  3. css样式规则的简要总结

    css与文档关联起来发挥作用. css文件中是各种样式规则,由选择器和声名块构成.声明块由多条声明组成.选择器是声明要作用的对象,声明是对具体规则的描述. 声明由属性和值组成,值或是属性的错误都会使该 ...

  4. 微软BI 之SSIS 系列 - XML Task 中XSLT 样式表转换错误记录

    开篇介绍 此文章专门记录 XSLT 样式表转换过程中的语法问题 错误一 值与属性的倒置 修改了几次样式表,但还是一如既往的报错,报错信息如下: [XML Task] Error: An error o ...

  5. css样式规则

    在css样式规则中: 1.选择器用于指定CSS样式作用的HTML对象,花括号内是对该对象设置的具体样式. 2.属性和属性值以"键值对"的形式出现. 3.属性是对指定的对象设置的样式 ...

  6. 2.1.4- css 样式规则

    CSS初识 CSS(Cascading Style Sheets) CSS通常称为CSS样式表或层叠样式表(级联样式表),主要用于设置HTML页面中的文本内容(字体.大小.对齐方式等).图片的外形(宽 ...

  7. JavaScript学习笔记——DOM_对document对象的内容、属性、样式的操作

    javascript-对文档对象的内容.属性.样式的操作 一.操作内容 1. innerHTML 用来设置或获取对象起始和结束标签内的内容(识别html标签) 2. innerText 用来设置或获取 ...

  8. jQuery对象转换为DOM对象(转)

    jQuery对象转换为dom对象 只有jQuery对象才能调用jQuery类库的各种函数,同样有些dom对象的属性和方法在jQuery上也是无法调用的,不过基本上jQuery类库提供的函数包含了所有的 ...

  9. Winform中怎样获取项目图片资源并转换为Image对象

    场景 DevExpress的TreeList怎样给树节点设置图标: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10274554 ...

随机推荐

  1. 编写可维护的JS 04

    4.变量.函数和运算符 变量 变量声明提前,单var 函数声明 先声明fn再执行 函数声明不应出现在语句块中 函数调用间隔 函数名与左括号间无间隔 立即调用函数 (fuction(){}) 严格模式  ...

  2. SQL 语句优化—— (二) 索引的利用

    索引是与表或视图关联的磁盘上结构,可以加快从表或视图中检索行的速度.索引包含由表或视图中的一列或多列生成的键.与书中的索引一样,数据库中的索引使您可以快速找到表或索引视图中的特定信息.索引包含从表或视 ...

  3. 全局通知Notification

    Notification 全局通知 关于全局通知的个人理解: 即有一个发射消息的,在整个应用中任何对象都可以接受这个消息 但是无论是哪个对象接受消息,都要在这个对象结束时移除消息 简单的说 就是给对象 ...

  4. ViEmu for VS2013-3.2.1 破解(转)

    ViEmuVS2013-3.2.1 破解   VS升级到2013后,作为一个Vimer,自然需要更新最新的ViEmu插件,因为现在离了Vim,写代码已经寸步难行了. ViEmu 3.2.1的破解其实和 ...

  5. jQuery 迭代器

    在 叶小钗 的博客中看到一段关于遍历的代码 var ajQuery = {}; function dir(elem, dir, until) { var matched = [], truncate ...

  6. D - Common Subsequence

    D - Common Subsequence Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I ...

  7. 眼花缭乱的UI,蓝牙位于何方

    我们在前面已经分析了Android启动中涉及蓝牙的各个方面,今天我们着重来看看,在蓝牙打开之前,我们能看到的蓝牙UI有哪些,这些UI又是如何实现的. 1,settings中UI的分析 首先,最常见的也 ...

  8. MarkDown使用 (三)表格

    MarkDown表格的用法 MarkDown表格的用法 例如: $$ \begin{array}{c|lcr} n & \text{Left} & \text{Center} & ...

  9. iphone 4 safrai fixed

    <script type="text/javascript"> if(navigator.userAgent.indexOf("Safari")&g ...

  10. WinAPI: GetVolumeInformation - 读取文件系统信息

    //声明: GetVolumeInformation(   lpRootPathName: PChar;              {磁盘驱动器代码字符串}   lpVolumeNameBuffer: ...