繁体   English   中英

在XSLT中使用javascript加载xml文件

[英]Load an xml file with javascript in XSLT

我被困在这里。 我有一个XSLT文件,该文件使用XML文件从中检索数据。 在这个XSLT文件中也是一个javascript。 目的是为XSLT中的“ for each”语句创建计数器。

现在,我需要向javascript中添加一个功能,以从XML文件中获取特定条目。 我将在此处粘贴xml的一部分,以便进一步解释。

<ROW>
    <Date>03-12-2013</Date>
    <School>SvR</School>
    <Locale>B1.04</Locale>
    <Class>1236VUGK16</Class>
    <Time>09:00-16:00</Time>
</ROW>

我需要从“日期”获取数据。 但我不知道如何在javascript中加载xml文件来实现此目的。 我发现一些告诉我xmlDoc.load html代码可以做到这一点,但事实并非如此。 这会给我一个语法错误。 这是因为它在XSLT中吗? 我怎样才能实现自己想要的?

你需要4件事

  1. data.xml-> XML文件
  2. Openxml.js->包含打开Javascript的功能
  3. filejs.js->包含读取和写入数据的功能。
  4. index.html->显示信息

第1部分,您的xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<events>
<ROW>
<Date>03-12-2013</Date>
    <School>SvR</School>
    <Locale>B1.04</Locale>
    <Class>1236VUGK16</Class>
    <Time>09:00-16:00</Time>
</ROW>
</events>

第2部分:

unction OpenFile(fichXML)
{
        var xmlDoc=undefined;
        try
        {
            if (document.all) //IE
            {
                xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
            }
            else //firefox
            {
                xmlDoc = document.implementation.createDocument("","",null);
            }
            xmlDoc.async=false;
            xmlDoc.load(fichXML);


        }
        catch(e)
        {
            try { //otros safari, chrome
                    var xmlhttp = new window.XMLHttpRequest();
                    xmlhttp.open("GET",fichXML,false);
                    xmlhttp.send(null);
                    xmlDoc = xmlhttp.responseXML.documentElement;
                    return xmlDoc;
            } 
            catch (e) 
            {
                return undefined;
            }

        }
        return xmlDoc;
}

第3部分:

    function Event(date)
    {
        this.date = date;

    }   
    //funciton to charge XMLElements
     function ChargeXMLElements()
        {
            try
            {
                xmlDoc=OpenFile("data.xml");
                eventosXML=xmlDoc.getElementsByTagName('ROW');

                if (eventosXML.length>0)
                {
                    eventos=new Array(); //clase con los datos cargados
                 }
                for(var i=0; i< eventosXML.length; i++) 
                {
                    xmlEvento=eventosXML[i];

                    fecha=xmlEvento.getElementsByTagName("DATE")[0].firstChild.nodeValue;

                    evento = new Evento(fecha);       
                    eventos.push(evento);

                }
                return eventos;
            }
            catch(e)
            {
                alert("Error on the load data");
            }    

        }
//show information take on previously function, and show on a table (with only 1 column)
function showinformation() 
{
        var tr;
        var td;
        var tabla;
        var l=0;
        ev= CargarXMLEventos();
        auxUnEven=ev.pop();
        tabla=document.getElementById("datos");
        while (auxUnEven!=undefined)
        {
            tr=tabla.insertRow(l);
            //creamos las columnas de la tabla 
            td=tr.insertCell(0);
            td.innerHTML=auxUnEven.date;
            /*td=tr.insertCell(1);
            td.innerHTML=auxUnEven.hora;
            td=tr.insertCell(2);
            td.innerHTML=auxUnEven.comentario;   */ //if you need more columns         
            l++;
            auxUnEven=ev.pop();
        }
        if (l==0)
        {
            tabla=document.getElementById("datos");
            tr=tabla.insertRow(l);
            td=tr.insertCell(0);
            td.innerHTML=" dont have events ";
        }

}

第4部分:

<!DOCTYPE html
 PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>example XML</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script type="text/javascript" src="filejs.js"></script>
    <script type="text/javascript" src="Openxml.js"></script>
  </head>
<body>
    <table id="datos">
        <script type="text/javascript">
            showinformation();
        </script>
    </table>
</body>
</html> 

我认为这是功能,但我不知道。 我在这里看到以下信息: http : //elcaminillo.wordpress.com/2012/01/15/leer-xml-zh-javascript/ (西班牙语,对不起)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM