Hirdetés

Keresés

Új hozzászólás Aktív témák

  • Remélem jó topikot válaszottam.

    Kéne egy kis segítség, XML-t XSLT-vel próbálkozom XHTML-be konvertálni AJAX-on keresztül :DDD
    A kódot megírtam, firefoxon müxik is, de az ie azt írja hogy valami hiba van az xsl-ben, ami a firefox-nak tökéletes. Szerintem a forrsákódban van valami, de nemtom hogy mi lehet az :F
    Íme a kód:

    function Init(){

    if (window.XMLHttpRequest) { // Gecko
    var xslStylesheet;
    var xsltProcessor = new XSLTProcessor();
    var myDOM;
    var xmlDoc;
    // load the xslt file, example1.xsl
    var myXMLHTTPRequest = new XMLHttpRequest();
    myXMLHTTPRequest.open("GET", "TEST.xsl", false);
    myXMLHTTPRequest.send(null);
    xslStylesheet = myXMLHTTPRequest.responseXML;
    xsltProcessor.importStylesheet(xslStylesheet);
    // load the xml file, example1.xml
    myXMLHTTPRequest = new XMLHttpRequest();
    myXMLHTTPRequest.open("GET", "TEST.xml", false);
    myXMLHTTPRequest.send(null);
    xmlDoc = myXMLHTTPRequest.responseXML;
    var fragment = xsltProcessor.transformToFragment(xmlDoc, document);
    document.getElementById("page").innerHTML = "";

    myDOM = fragment;
    document.getElementById("page").appendChild(fragment);
    }
    else if (window.ActiveXObject) { // Internet Explorer
    var xml = new ActiveXObject("MSXML2.XMLHTTP.3.0");
    xml.open("GET", "TEST.xml", false);
    xml.send(null);
    var xsl = new ActiveXObject("MSXML2.XMLHTTP.3.0");
    xsl.open("GET", "TEST.xsl", false);
    xsl.send(null);
    document.getElementById("page") = xml.responseXML.transformNode(xsl.responseXML);
    }
    }

    itt az XSL is, de nem hiném hogy ebben lenne a hiba :) :

    <?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:template match="/document">
    <xsl:for-each select="form">
    <form id="regForm" action="#" method="POST">
    <xsl:for-each select="field">
    <div class="inputField">
    <div class="inputLabel"><xsl:value-of select="label" /></div>
    <input type="{@type}" name="{name}" />
    </div>
    </xsl:for-each>
    <xsl:for-each select="hidden">
    <input type="hidden" name="{name}" value="{value}" />
    </xsl:for-each>
    <xsl:for-each select="submit">
    <a href="#" onClick="{action}"><xsl:value-of select="label" /></a>
    </xsl:for-each>
    </form>
    </xsl:for-each>
    </xsl:template>
    </xsl:stylesheet>

    Sikerült megoldani a problémát :)
    Úgyhogy tárgytalan... bocsi az előbbi hosszú hozzászólásért ;]
    kíváncsiak kedvéért az új kód:

    if(document.implementation && document.implementation.createDocument){
    // Mozilla
    var xsltProcessor = new XSLTProcessor();
    // load the xslt file
    var myXMLHTTPRequest = new XMLHttpRequest();
    myXMLHTTPRequest.open("GET", "test.xsl", false);
    myXMLHTTPRequest.send(null);
    // get the XML document
    xslStylesheet = myXMLHTTPRequest.responseXML;
    xsltProcessor.importStylesheet(xslStylesheet);
    // load the xml file
    myXMLHTTPRequest = new XMLHttpRequest();
    myXMLHTTPRequest.open("GET", "test.xml", false);
    myXMLHTTPRequest.send(null);
    var xmlSource = myXMLHTTPRequest.responseXML;
    //transform
    var resultDocument = xsltProcessor.transformToFragment(xmlSource, document);
    document.getElementById("page").appendChild(resultDocument);
    }else if(window.ActiveXObject){
    // IE
    // Load XML
    xml = new ActiveXObject("MSXML2.DOMDocument");
    xml.async = false;
    xml.load("test.xml");
    // Load XSL
    xsl = new ActiveXObject("MSXML2.DOMDocument");
    xsl.async = false;
    xsl.load("test.xsl");
    // Transform
    document.getElementById("page").innerHTML=xml.transformNode(xsl);
    }else{
    // Browser unknown
    alert("Browser unknown");
    }

    Nekem elég nehezen sikerült rátalálnom :W

  • shev7
    veterán

    megegyeznek, csak annyi hogy XML bontanak ki, de különböző szerkezetű XML-re más függvény kell.

    akkor sokkal egyszerubb atadni egy flag-et a parameterek melle ami jelzi, hogy melyik fuggvenyt kell meghivni.

  • shev7
    veterán

    Nem lehet, mert mindig más függvényt kell megadni paramétreként, és azok teljesen mást csinálnak.

    Szerk: tehát elég nyomós okom van rá. :)

    de a fuggvenyek parameterei megegyeznek?

  • shev7
    veterán

    Sziasztok!
    Az lenne a kérdésem hogy megvalósítható-e olyan, hogy egy függvénynek paraméterként egy MÁSIK paraméteres függvényt adok meg, hogy azt végrehajtsa az első függvényben? :F
    Ha igen, akkor hogyan?

    Egy ajaxos weboldalra kéne, mert a paraméterként átadott függvény nagyon bonyolult, egy XML-t bontana ki.

    miert nem hivod meg siman a fuggvenyen belul, miert kellene parameterkent atadni?

Új hozzászólás Aktív témák