西西软件下载最安全的下载网站、值得信赖的软件下载站!

首页编程开发其它知识 → VS+javascrip编程中对xsl xml 以及 树的编写

VS+javascrip编程中对xsl xml 以及 树的编写

相关软件相关文章发表评论 来源:西西整理时间:2012/12/28 16:47:01字体大小:A-A+

作者:西西点击:0次评论:0次标签: xml

  • 类型:下载工具大小:828KB语言:中文 评分:7.5
  • 标签:
立即下载

来公司这么长时间一直到现在一直在iaas项目中辗转。

利用xml的特性将数据独立出,达到UI和Db真正的分离。

1 了解知识:

1.xsl是xml的格式文件, xml是数据文件

2 调试方法:

  1)在xsl内容中嵌套javascript从而简介调试查看xsl的中间结果,通过查看xsl+xml形成的结果htm

  2)vs自带了一个功能强大的调试器,专门针对此用法如下:(不懂可以问msdn)

namespace 调试
{
    class Program
    {
        static void Main(string[] args)
        {

            XslCompiledTransform xslt = new XslCompiledTransform(true);//true 开启调试
            // load the style sheet.
            xslt.Load("demo.xsl");

            xslt.Transform("demo.xml", "demo.htm");
            Console.Read();
        }
    }
}

适当加断点,可跳进xsl中的循环调试,也可以变量监视。很好用。

2 Javascript结合xsl xml

 xsl和xml你都有了, 如何将格式套用入数据?

1 跨域加载xml

此时,倘若你想要的xml涉及跨域问题,那么在输出xml的服务器上必须加Header。Access-Control-Allow-Origin: * !(因为此问题困然我两天)你才能访问到该xml,否则firfox下无法读取。因为ie下,设置interne选项中参数便可以访问!具体问google或者私密我。

 加载文件如下:

//读取本地数据
function xmlGetResponse(_url) {
    if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
    }
    else {// code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.open("GET", _url, false);
    xmlhttp.send();
    return xmlhttp.responseXML;
//如果responseXML内无数据 可查看responeText核查
}

其中如果responseXML.xml='' &&responseText不为空。可将responseText转化为dom,返回是结果一样的。

 if (!xhttp.responseXML.xml) {
        //转化为dom
        try {
            if (window.ActiveXObject) {
                var xmlobject = new ActiveXObject("Microsoft.XMLDOM");
                xmlobject.async = "false";
                xmlobject.loadXML(xhttp.responseText);
                return xmlobject;
            }
            else {//firfox下特殊
                var parser = new DOMParser();
                var xmlobject = parser.parseFromString(xhttp.responseText, "text/xml");
                return xmlobject;
            }

        } catch (e) {
        }

2 加载xsl

加载方式同加载xml一样,xsl也是标签语言哦,成双成对的。

2 二者结合

用代码说话:

function xmlGetResponse(_urlxml, _urlxsl) {
    var xml = loadXMLDoc(_urlxml);//加载xml
    var xsl = loadXMLDoc( _urlxsl);//加载xsl
    if (window.ActiveXObject) { //ie
        ex = xml.transformNode(xsl);//结合,结果ex是形成的htm
    }
    else if (document.implementation && document.implementation.createDocument) {
 //其他浏览器如firfox
        xsltProcessor = new XSLTProcessor();
        xsltProcessor.importStylesheet(xsl);
        resultDocument = xsltProcessor.transformToFragment(xml, document);
        document.getElementById(id).appendChild(resultDocument);
//结合,结果resultDocument是形成的htm
    }
}

3 xml+xsl ->tree!形成树

主要的xsl逻辑代码我会共享给大家,也算是我这两天的埋头研究没有浪费。

 1)主要思路

  a.找到根节点,便利其子节点,其中读取属性等等你需要的值,并输出(根据要求可以加上js效果)

  b.递归循环找出所有子节点并展现出树的层次

  c.我认为最难的点:输出树节点 前方的虚线。不知能否理解。如果你有用到,你就知道

 2)主要难点

 a.模块的调用和传参! 形成递归(不用递归当然更好)

 b.计数 当前节点的父节点,父节点的兄弟节点,父节点的子节点中在本节点之后兄弟节点。。。。等等 

   最好慢慢研究http://www.w3school.com.cn/xpath/和http://www.w3school.com.cn/xsl/ 

   说的简洁但是意义很大。慢慢理解。

 c.递归输出前方虚线图片。

由于时间限制,讲的比较笼统。见谅

下载地址

    相关评论

    阅读本文后您有什么感想? 已有人给出评价!

    • 8 喜欢喜欢
    • 3 顶
    • 1 难过难过
    • 5 囧
    • 3 围观围观
    • 2 无聊无聊

    热门评论

    最新评论

    发表评论 查看所有评论(0)

    昵称:
    表情: 高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲
    字数: 0/500 (您的评论需要经过审核才能显示)
    推荐文章

    没有数据